blob: dc93801ace574045f72dfc8a9462c88224e27116 [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 Lobodzinski54385432017-05-15 10:27:52 -060045static_assert( VK_HEADER_VERSION == 49 , "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,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005193 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
5194 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005195 };
5196
5197 struct DescriptorImageInfo
5198 {
5199 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5200 : sampler( sampler_ )
5201 , imageView( imageView_ )
5202 , imageLayout( imageLayout_ )
5203 {
5204 }
5205
5206 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5207 {
5208 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5209 }
5210
5211 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5212 {
5213 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5214 return *this;
5215 }
5216
5217 DescriptorImageInfo& setSampler( Sampler sampler_ )
5218 {
5219 sampler = sampler_;
5220 return *this;
5221 }
5222
5223 DescriptorImageInfo& setImageView( ImageView imageView_ )
5224 {
5225 imageView = imageView_;
5226 return *this;
5227 }
5228
5229 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5230 {
5231 imageLayout = imageLayout_;
5232 return *this;
5233 }
5234
5235 operator const VkDescriptorImageInfo&() const
5236 {
5237 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5238 }
5239
5240 bool operator==( DescriptorImageInfo const& rhs ) const
5241 {
5242 return ( sampler == rhs.sampler )
5243 && ( imageView == rhs.imageView )
5244 && ( imageLayout == rhs.imageLayout );
5245 }
5246
5247 bool operator!=( DescriptorImageInfo const& rhs ) const
5248 {
5249 return !operator==( rhs );
5250 }
5251
5252 Sampler sampler;
5253 ImageView imageView;
5254 ImageLayout imageLayout;
5255 };
5256 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5257
5258 struct AttachmentReference
5259 {
5260 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5261 : attachment( attachment_ )
5262 , layout( layout_ )
5263 {
5264 }
5265
5266 AttachmentReference( VkAttachmentReference const & rhs )
5267 {
5268 memcpy( this, &rhs, sizeof(AttachmentReference) );
5269 }
5270
5271 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5272 {
5273 memcpy( this, &rhs, sizeof(AttachmentReference) );
5274 return *this;
5275 }
5276
5277 AttachmentReference& setAttachment( uint32_t attachment_ )
5278 {
5279 attachment = attachment_;
5280 return *this;
5281 }
5282
5283 AttachmentReference& setLayout( ImageLayout layout_ )
5284 {
5285 layout = layout_;
5286 return *this;
5287 }
5288
5289 operator const VkAttachmentReference&() const
5290 {
5291 return *reinterpret_cast<const VkAttachmentReference*>(this);
5292 }
5293
5294 bool operator==( AttachmentReference const& rhs ) const
5295 {
5296 return ( attachment == rhs.attachment )
5297 && ( layout == rhs.layout );
5298 }
5299
5300 bool operator!=( AttachmentReference const& rhs ) const
5301 {
5302 return !operator==( rhs );
5303 }
5304
5305 uint32_t attachment;
5306 ImageLayout layout;
5307 };
5308 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5309
5310 enum class AttachmentLoadOp
5311 {
5312 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5313 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5314 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5315 };
5316
5317 enum class AttachmentStoreOp
5318 {
5319 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5320 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5321 };
5322
5323 enum class ImageType
5324 {
5325 e1D = VK_IMAGE_TYPE_1D,
5326 e2D = VK_IMAGE_TYPE_2D,
5327 e3D = VK_IMAGE_TYPE_3D
5328 };
5329
5330 enum class ImageTiling
5331 {
5332 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5333 eLinear = VK_IMAGE_TILING_LINEAR
5334 };
5335
5336 enum class ImageViewType
5337 {
5338 e1D = VK_IMAGE_VIEW_TYPE_1D,
5339 e2D = VK_IMAGE_VIEW_TYPE_2D,
5340 e3D = VK_IMAGE_VIEW_TYPE_3D,
5341 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5342 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5343 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5344 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5345 };
5346
5347 enum class CommandBufferLevel
5348 {
5349 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5350 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5351 };
5352
5353 enum class ComponentSwizzle
5354 {
5355 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5356 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5357 eOne = VK_COMPONENT_SWIZZLE_ONE,
5358 eR = VK_COMPONENT_SWIZZLE_R,
5359 eG = VK_COMPONENT_SWIZZLE_G,
5360 eB = VK_COMPONENT_SWIZZLE_B,
5361 eA = VK_COMPONENT_SWIZZLE_A
5362 };
5363
5364 struct ComponentMapping
5365 {
5366 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5367 : r( r_ )
5368 , g( g_ )
5369 , b( b_ )
5370 , a( a_ )
5371 {
5372 }
5373
5374 ComponentMapping( VkComponentMapping const & rhs )
5375 {
5376 memcpy( this, &rhs, sizeof(ComponentMapping) );
5377 }
5378
5379 ComponentMapping& operator=( VkComponentMapping const & rhs )
5380 {
5381 memcpy( this, &rhs, sizeof(ComponentMapping) );
5382 return *this;
5383 }
5384
5385 ComponentMapping& setR( ComponentSwizzle r_ )
5386 {
5387 r = r_;
5388 return *this;
5389 }
5390
5391 ComponentMapping& setG( ComponentSwizzle g_ )
5392 {
5393 g = g_;
5394 return *this;
5395 }
5396
5397 ComponentMapping& setB( ComponentSwizzle b_ )
5398 {
5399 b = b_;
5400 return *this;
5401 }
5402
5403 ComponentMapping& setA( ComponentSwizzle a_ )
5404 {
5405 a = a_;
5406 return *this;
5407 }
5408
5409 operator const VkComponentMapping&() const
5410 {
5411 return *reinterpret_cast<const VkComponentMapping*>(this);
5412 }
5413
5414 bool operator==( ComponentMapping const& rhs ) const
5415 {
5416 return ( r == rhs.r )
5417 && ( g == rhs.g )
5418 && ( b == rhs.b )
5419 && ( a == rhs.a );
5420 }
5421
5422 bool operator!=( ComponentMapping const& rhs ) const
5423 {
5424 return !operator==( rhs );
5425 }
5426
5427 ComponentSwizzle r;
5428 ComponentSwizzle g;
5429 ComponentSwizzle b;
5430 ComponentSwizzle a;
5431 };
5432 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5433
5434 enum class DescriptorType
5435 {
5436 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5437 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5438 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5439 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5440 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5441 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5442 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5443 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5444 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5445 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5446 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5447 };
5448
5449 struct DescriptorPoolSize
5450 {
5451 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5452 : type( type_ )
5453 , descriptorCount( descriptorCount_ )
5454 {
5455 }
5456
5457 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5458 {
5459 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5460 }
5461
5462 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5463 {
5464 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5465 return *this;
5466 }
5467
5468 DescriptorPoolSize& setType( DescriptorType type_ )
5469 {
5470 type = type_;
5471 return *this;
5472 }
5473
5474 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5475 {
5476 descriptorCount = descriptorCount_;
5477 return *this;
5478 }
5479
5480 operator const VkDescriptorPoolSize&() const
5481 {
5482 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5483 }
5484
5485 bool operator==( DescriptorPoolSize const& rhs ) const
5486 {
5487 return ( type == rhs.type )
5488 && ( descriptorCount == rhs.descriptorCount );
5489 }
5490
5491 bool operator!=( DescriptorPoolSize const& rhs ) const
5492 {
5493 return !operator==( rhs );
5494 }
5495
5496 DescriptorType type;
5497 uint32_t descriptorCount;
5498 };
5499 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5500
Mark Young0f183a82017-02-28 09:58:04 -07005501 struct DescriptorUpdateTemplateEntryKHR
5502 {
5503 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 )
5504 : dstBinding( dstBinding_ )
5505 , dstArrayElement( dstArrayElement_ )
5506 , descriptorCount( descriptorCount_ )
5507 , descriptorType( descriptorType_ )
5508 , offset( offset_ )
5509 , stride( stride_ )
5510 {
5511 }
5512
5513 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5514 {
5515 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5516 }
5517
5518 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5519 {
5520 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5521 return *this;
5522 }
5523
5524 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5525 {
5526 dstBinding = dstBinding_;
5527 return *this;
5528 }
5529
5530 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5531 {
5532 dstArrayElement = dstArrayElement_;
5533 return *this;
5534 }
5535
5536 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5537 {
5538 descriptorCount = descriptorCount_;
5539 return *this;
5540 }
5541
5542 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5543 {
5544 descriptorType = descriptorType_;
5545 return *this;
5546 }
5547
5548 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5549 {
5550 offset = offset_;
5551 return *this;
5552 }
5553
5554 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5555 {
5556 stride = stride_;
5557 return *this;
5558 }
5559
5560 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5561 {
5562 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5563 }
5564
5565 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5566 {
5567 return ( dstBinding == rhs.dstBinding )
5568 && ( dstArrayElement == rhs.dstArrayElement )
5569 && ( descriptorCount == rhs.descriptorCount )
5570 && ( descriptorType == rhs.descriptorType )
5571 && ( offset == rhs.offset )
5572 && ( stride == rhs.stride );
5573 }
5574
5575 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5576 {
5577 return !operator==( rhs );
5578 }
5579
5580 uint32_t dstBinding;
5581 uint32_t dstArrayElement;
5582 uint32_t descriptorCount;
5583 DescriptorType descriptorType;
5584 size_t offset;
5585 size_t stride;
5586 };
5587 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5588
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005589 enum class QueryType
5590 {
5591 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5592 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5593 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5594 };
5595
5596 enum class BorderColor
5597 {
5598 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5599 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5600 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5601 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5602 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5603 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5604 };
5605
5606 enum class PipelineBindPoint
5607 {
5608 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5609 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5610 };
5611
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005612 enum class PipelineCacheHeaderVersion
5613 {
5614 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5615 };
5616
5617 enum class PrimitiveTopology
5618 {
5619 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5620 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5621 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5622 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5623 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5624 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5625 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5626 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5627 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5628 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5629 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5630 };
5631
5632 enum class SharingMode
5633 {
5634 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5635 eConcurrent = VK_SHARING_MODE_CONCURRENT
5636 };
5637
5638 enum class IndexType
5639 {
5640 eUint16 = VK_INDEX_TYPE_UINT16,
5641 eUint32 = VK_INDEX_TYPE_UINT32
5642 };
5643
5644 enum class Filter
5645 {
5646 eNearest = VK_FILTER_NEAREST,
5647 eLinear = VK_FILTER_LINEAR,
5648 eCubicIMG = VK_FILTER_CUBIC_IMG
5649 };
5650
5651 enum class SamplerMipmapMode
5652 {
5653 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5654 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5655 };
5656
5657 enum class SamplerAddressMode
5658 {
5659 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5660 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5661 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5662 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5663 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5664 };
5665
5666 enum class CompareOp
5667 {
5668 eNever = VK_COMPARE_OP_NEVER,
5669 eLess = VK_COMPARE_OP_LESS,
5670 eEqual = VK_COMPARE_OP_EQUAL,
5671 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5672 eGreater = VK_COMPARE_OP_GREATER,
5673 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5674 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5675 eAlways = VK_COMPARE_OP_ALWAYS
5676 };
5677
5678 enum class PolygonMode
5679 {
5680 eFill = VK_POLYGON_MODE_FILL,
5681 eLine = VK_POLYGON_MODE_LINE,
5682 ePoint = VK_POLYGON_MODE_POINT
5683 };
5684
5685 enum class CullModeFlagBits
5686 {
5687 eNone = VK_CULL_MODE_NONE,
5688 eFront = VK_CULL_MODE_FRONT_BIT,
5689 eBack = VK_CULL_MODE_BACK_BIT,
5690 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5691 };
5692
5693 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5694
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005695 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005696 {
5697 return CullModeFlags( bit0 ) | bit1;
5698 }
5699
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005700 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5701 {
5702 return ~( CullModeFlags( bits ) );
5703 }
5704
5705 template <> struct FlagTraits<CullModeFlagBits>
5706 {
5707 enum
5708 {
5709 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5710 };
5711 };
5712
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005713 enum class FrontFace
5714 {
5715 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5716 eClockwise = VK_FRONT_FACE_CLOCKWISE
5717 };
5718
5719 enum class BlendFactor
5720 {
5721 eZero = VK_BLEND_FACTOR_ZERO,
5722 eOne = VK_BLEND_FACTOR_ONE,
5723 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5724 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5725 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5726 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5727 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5728 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5729 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5730 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5731 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5732 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5733 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5734 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5735 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5736 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5737 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5738 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5739 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5740 };
5741
5742 enum class BlendOp
5743 {
5744 eAdd = VK_BLEND_OP_ADD,
5745 eSubtract = VK_BLEND_OP_SUBTRACT,
5746 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5747 eMin = VK_BLEND_OP_MIN,
5748 eMax = VK_BLEND_OP_MAX
5749 };
5750
5751 enum class StencilOp
5752 {
5753 eKeep = VK_STENCIL_OP_KEEP,
5754 eZero = VK_STENCIL_OP_ZERO,
5755 eReplace = VK_STENCIL_OP_REPLACE,
5756 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5757 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5758 eInvert = VK_STENCIL_OP_INVERT,
5759 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5760 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5761 };
5762
5763 struct StencilOpState
5764 {
5765 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 )
5766 : failOp( failOp_ )
5767 , passOp( passOp_ )
5768 , depthFailOp( depthFailOp_ )
5769 , compareOp( compareOp_ )
5770 , compareMask( compareMask_ )
5771 , writeMask( writeMask_ )
5772 , reference( reference_ )
5773 {
5774 }
5775
5776 StencilOpState( VkStencilOpState const & rhs )
5777 {
5778 memcpy( this, &rhs, sizeof(StencilOpState) );
5779 }
5780
5781 StencilOpState& operator=( VkStencilOpState const & rhs )
5782 {
5783 memcpy( this, &rhs, sizeof(StencilOpState) );
5784 return *this;
5785 }
5786
5787 StencilOpState& setFailOp( StencilOp failOp_ )
5788 {
5789 failOp = failOp_;
5790 return *this;
5791 }
5792
5793 StencilOpState& setPassOp( StencilOp passOp_ )
5794 {
5795 passOp = passOp_;
5796 return *this;
5797 }
5798
5799 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5800 {
5801 depthFailOp = depthFailOp_;
5802 return *this;
5803 }
5804
5805 StencilOpState& setCompareOp( CompareOp compareOp_ )
5806 {
5807 compareOp = compareOp_;
5808 return *this;
5809 }
5810
5811 StencilOpState& setCompareMask( uint32_t compareMask_ )
5812 {
5813 compareMask = compareMask_;
5814 return *this;
5815 }
5816
5817 StencilOpState& setWriteMask( uint32_t writeMask_ )
5818 {
5819 writeMask = writeMask_;
5820 return *this;
5821 }
5822
5823 StencilOpState& setReference( uint32_t reference_ )
5824 {
5825 reference = reference_;
5826 return *this;
5827 }
5828
5829 operator const VkStencilOpState&() const
5830 {
5831 return *reinterpret_cast<const VkStencilOpState*>(this);
5832 }
5833
5834 bool operator==( StencilOpState const& rhs ) const
5835 {
5836 return ( failOp == rhs.failOp )
5837 && ( passOp == rhs.passOp )
5838 && ( depthFailOp == rhs.depthFailOp )
5839 && ( compareOp == rhs.compareOp )
5840 && ( compareMask == rhs.compareMask )
5841 && ( writeMask == rhs.writeMask )
5842 && ( reference == rhs.reference );
5843 }
5844
5845 bool operator!=( StencilOpState const& rhs ) const
5846 {
5847 return !operator==( rhs );
5848 }
5849
5850 StencilOp failOp;
5851 StencilOp passOp;
5852 StencilOp depthFailOp;
5853 CompareOp compareOp;
5854 uint32_t compareMask;
5855 uint32_t writeMask;
5856 uint32_t reference;
5857 };
5858 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5859
5860 enum class LogicOp
5861 {
5862 eClear = VK_LOGIC_OP_CLEAR,
5863 eAnd = VK_LOGIC_OP_AND,
5864 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5865 eCopy = VK_LOGIC_OP_COPY,
5866 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5867 eNoOp = VK_LOGIC_OP_NO_OP,
5868 eXor = VK_LOGIC_OP_XOR,
5869 eOr = VK_LOGIC_OP_OR,
5870 eNor = VK_LOGIC_OP_NOR,
5871 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5872 eInvert = VK_LOGIC_OP_INVERT,
5873 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5874 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5875 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5876 eNand = VK_LOGIC_OP_NAND,
5877 eSet = VK_LOGIC_OP_SET
5878 };
5879
5880 enum class InternalAllocationType
5881 {
5882 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5883 };
5884
5885 enum class SystemAllocationScope
5886 {
5887 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5888 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5889 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5890 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5891 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5892 };
5893
5894 enum class PhysicalDeviceType
5895 {
5896 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5897 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5898 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5899 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5900 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5901 };
5902
5903 enum class VertexInputRate
5904 {
5905 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5906 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5907 };
5908
5909 struct VertexInputBindingDescription
5910 {
5911 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5912 : binding( binding_ )
5913 , stride( stride_ )
5914 , inputRate( inputRate_ )
5915 {
5916 }
5917
5918 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
5919 {
5920 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5921 }
5922
5923 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
5924 {
5925 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5926 return *this;
5927 }
5928
5929 VertexInputBindingDescription& setBinding( uint32_t binding_ )
5930 {
5931 binding = binding_;
5932 return *this;
5933 }
5934
5935 VertexInputBindingDescription& setStride( uint32_t stride_ )
5936 {
5937 stride = stride_;
5938 return *this;
5939 }
5940
5941 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
5942 {
5943 inputRate = inputRate_;
5944 return *this;
5945 }
5946
5947 operator const VkVertexInputBindingDescription&() const
5948 {
5949 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
5950 }
5951
5952 bool operator==( VertexInputBindingDescription const& rhs ) const
5953 {
5954 return ( binding == rhs.binding )
5955 && ( stride == rhs.stride )
5956 && ( inputRate == rhs.inputRate );
5957 }
5958
5959 bool operator!=( VertexInputBindingDescription const& rhs ) const
5960 {
5961 return !operator==( rhs );
5962 }
5963
5964 uint32_t binding;
5965 uint32_t stride;
5966 VertexInputRate inputRate;
5967 };
5968 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
5969
5970 enum class Format
5971 {
5972 eUndefined = VK_FORMAT_UNDEFINED,
5973 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
5974 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
5975 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
5976 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
5977 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
5978 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
5979 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
5980 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
5981 eR8Unorm = VK_FORMAT_R8_UNORM,
5982 eR8Snorm = VK_FORMAT_R8_SNORM,
5983 eR8Uscaled = VK_FORMAT_R8_USCALED,
5984 eR8Sscaled = VK_FORMAT_R8_SSCALED,
5985 eR8Uint = VK_FORMAT_R8_UINT,
5986 eR8Sint = VK_FORMAT_R8_SINT,
5987 eR8Srgb = VK_FORMAT_R8_SRGB,
5988 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
5989 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
5990 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
5991 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
5992 eR8G8Uint = VK_FORMAT_R8G8_UINT,
5993 eR8G8Sint = VK_FORMAT_R8G8_SINT,
5994 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
5995 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
5996 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
5997 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
5998 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
5999 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6000 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6001 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6002 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6003 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6004 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6005 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6006 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6007 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6008 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6009 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6010 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6011 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6012 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6013 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6014 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6015 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6016 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6017 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6018 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6019 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6020 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6021 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6022 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6023 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6024 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6025 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6026 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6027 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6028 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6029 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6030 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6031 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6032 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6033 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6034 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6035 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6036 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6037 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6038 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6039 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6040 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6041 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6042 eR16Unorm = VK_FORMAT_R16_UNORM,
6043 eR16Snorm = VK_FORMAT_R16_SNORM,
6044 eR16Uscaled = VK_FORMAT_R16_USCALED,
6045 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6046 eR16Uint = VK_FORMAT_R16_UINT,
6047 eR16Sint = VK_FORMAT_R16_SINT,
6048 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6049 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6050 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6051 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6052 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6053 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6054 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6055 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6056 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6057 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6058 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6059 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6060 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6061 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6062 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6063 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6064 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6065 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6066 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6067 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6068 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6069 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6070 eR32Uint = VK_FORMAT_R32_UINT,
6071 eR32Sint = VK_FORMAT_R32_SINT,
6072 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6073 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6074 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6075 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6076 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6077 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6078 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6079 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6080 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6081 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6082 eR64Uint = VK_FORMAT_R64_UINT,
6083 eR64Sint = VK_FORMAT_R64_SINT,
6084 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6085 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6086 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6087 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6088 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6089 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6090 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6091 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6092 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6093 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6094 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6095 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6096 eD16Unorm = VK_FORMAT_D16_UNORM,
6097 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6098 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6099 eS8Uint = VK_FORMAT_S8_UINT,
6100 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6101 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6102 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6103 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6104 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6105 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6106 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6107 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6108 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6109 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6110 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6111 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6112 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6113 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6114 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6115 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6116 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6117 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6118 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6119 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6120 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6121 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6122 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6123 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6124 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6125 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6126 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6127 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6128 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6129 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6130 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6131 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6132 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6133 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6134 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6135 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6136 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6137 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6138 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6139 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6140 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6141 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6142 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6143 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6144 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6145 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6146 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6147 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6148 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6149 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6150 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6151 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6152 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6153 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6154 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6155 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006156 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6157 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6158 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6159 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6160 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6161 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6162 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6163 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6164 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006165 };
6166
6167 struct VertexInputAttributeDescription
6168 {
6169 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6170 : location( location_ )
6171 , binding( binding_ )
6172 , format( format_ )
6173 , offset( offset_ )
6174 {
6175 }
6176
6177 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6178 {
6179 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6180 }
6181
6182 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6183 {
6184 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6185 return *this;
6186 }
6187
6188 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6189 {
6190 location = location_;
6191 return *this;
6192 }
6193
6194 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6195 {
6196 binding = binding_;
6197 return *this;
6198 }
6199
6200 VertexInputAttributeDescription& setFormat( Format format_ )
6201 {
6202 format = format_;
6203 return *this;
6204 }
6205
6206 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6207 {
6208 offset = offset_;
6209 return *this;
6210 }
6211
6212 operator const VkVertexInputAttributeDescription&() const
6213 {
6214 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6215 }
6216
6217 bool operator==( VertexInputAttributeDescription const& rhs ) const
6218 {
6219 return ( location == rhs.location )
6220 && ( binding == rhs.binding )
6221 && ( format == rhs.format )
6222 && ( offset == rhs.offset );
6223 }
6224
6225 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6226 {
6227 return !operator==( rhs );
6228 }
6229
6230 uint32_t location;
6231 uint32_t binding;
6232 Format format;
6233 uint32_t offset;
6234 };
6235 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6236
6237 enum class StructureType
6238 {
6239 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6240 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6241 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6242 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6243 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6244 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6245 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6246 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6247 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6248 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6249 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6250 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6251 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6252 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6253 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6254 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6255 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6256 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6257 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6258 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6259 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6260 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6261 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6262 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6263 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6264 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6265 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6266 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6267 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6268 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6269 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6270 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6271 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6272 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6273 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6274 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6275 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6276 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6277 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6278 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6279 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6280 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6281 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6282 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6283 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6284 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6285 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6286 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6287 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6288 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6289 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6290 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6291 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6292 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6293 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6294 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6295 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6296 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6297 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6298 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6299 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6300 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6301 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6302 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6303 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6304 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6305 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006306 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Young0f183a82017-02-28 09:58:04 -07006307 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6308 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6309 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006310 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6311 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6312 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6313 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006314 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006315 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6316 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6317 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6318 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6319 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6320 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6321 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6322 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6323 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006324 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6325 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6326 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6327 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6328 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6329 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6330 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6331 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6332 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6333 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6334 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6335 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6336 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006337 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006338 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006339 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6340 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6341 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6342 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6343 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6344 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6345 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006346 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6347 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6348 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6349 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6350 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6351 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6352 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6353 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6354 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6355 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6356 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6357 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6358 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6359 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6360 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6361 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6362 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006363 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006364 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006365 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6366 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6367 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6368 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6369 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006370 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006371 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006372 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6373 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6374 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6375 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006376 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006377 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006378 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6379 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6380 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6381 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006382 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006383 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
6384 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6385 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6386 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006387 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6388 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006389 };
6390
6391 struct ApplicationInfo
6392 {
6393 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6394 : sType( StructureType::eApplicationInfo )
6395 , pNext( nullptr )
6396 , pApplicationName( pApplicationName_ )
6397 , applicationVersion( applicationVersion_ )
6398 , pEngineName( pEngineName_ )
6399 , engineVersion( engineVersion_ )
6400 , apiVersion( apiVersion_ )
6401 {
6402 }
6403
6404 ApplicationInfo( VkApplicationInfo const & rhs )
6405 {
6406 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6407 }
6408
6409 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6410 {
6411 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6412 return *this;
6413 }
6414
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006415 ApplicationInfo& setPNext( const void* pNext_ )
6416 {
6417 pNext = pNext_;
6418 return *this;
6419 }
6420
6421 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6422 {
6423 pApplicationName = pApplicationName_;
6424 return *this;
6425 }
6426
6427 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6428 {
6429 applicationVersion = applicationVersion_;
6430 return *this;
6431 }
6432
6433 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6434 {
6435 pEngineName = pEngineName_;
6436 return *this;
6437 }
6438
6439 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6440 {
6441 engineVersion = engineVersion_;
6442 return *this;
6443 }
6444
6445 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6446 {
6447 apiVersion = apiVersion_;
6448 return *this;
6449 }
6450
6451 operator const VkApplicationInfo&() const
6452 {
6453 return *reinterpret_cast<const VkApplicationInfo*>(this);
6454 }
6455
6456 bool operator==( ApplicationInfo const& rhs ) const
6457 {
6458 return ( sType == rhs.sType )
6459 && ( pNext == rhs.pNext )
6460 && ( pApplicationName == rhs.pApplicationName )
6461 && ( applicationVersion == rhs.applicationVersion )
6462 && ( pEngineName == rhs.pEngineName )
6463 && ( engineVersion == rhs.engineVersion )
6464 && ( apiVersion == rhs.apiVersion );
6465 }
6466
6467 bool operator!=( ApplicationInfo const& rhs ) const
6468 {
6469 return !operator==( rhs );
6470 }
6471
6472 private:
6473 StructureType sType;
6474
6475 public:
6476 const void* pNext;
6477 const char* pApplicationName;
6478 uint32_t applicationVersion;
6479 const char* pEngineName;
6480 uint32_t engineVersion;
6481 uint32_t apiVersion;
6482 };
6483 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6484
6485 struct DeviceQueueCreateInfo
6486 {
6487 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6488 : sType( StructureType::eDeviceQueueCreateInfo )
6489 , pNext( nullptr )
6490 , flags( flags_ )
6491 , queueFamilyIndex( queueFamilyIndex_ )
6492 , queueCount( queueCount_ )
6493 , pQueuePriorities( pQueuePriorities_ )
6494 {
6495 }
6496
6497 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6498 {
6499 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6500 }
6501
6502 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6503 {
6504 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6505 return *this;
6506 }
6507
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006508 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6509 {
6510 pNext = pNext_;
6511 return *this;
6512 }
6513
6514 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6515 {
6516 flags = flags_;
6517 return *this;
6518 }
6519
6520 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6521 {
6522 queueFamilyIndex = queueFamilyIndex_;
6523 return *this;
6524 }
6525
6526 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6527 {
6528 queueCount = queueCount_;
6529 return *this;
6530 }
6531
6532 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6533 {
6534 pQueuePriorities = pQueuePriorities_;
6535 return *this;
6536 }
6537
6538 operator const VkDeviceQueueCreateInfo&() const
6539 {
6540 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6541 }
6542
6543 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6544 {
6545 return ( sType == rhs.sType )
6546 && ( pNext == rhs.pNext )
6547 && ( flags == rhs.flags )
6548 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6549 && ( queueCount == rhs.queueCount )
6550 && ( pQueuePriorities == rhs.pQueuePriorities );
6551 }
6552
6553 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6554 {
6555 return !operator==( rhs );
6556 }
6557
6558 private:
6559 StructureType sType;
6560
6561 public:
6562 const void* pNext;
6563 DeviceQueueCreateFlags flags;
6564 uint32_t queueFamilyIndex;
6565 uint32_t queueCount;
6566 const float* pQueuePriorities;
6567 };
6568 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6569
6570 struct DeviceCreateInfo
6571 {
6572 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 )
6573 : sType( StructureType::eDeviceCreateInfo )
6574 , pNext( nullptr )
6575 , flags( flags_ )
6576 , queueCreateInfoCount( queueCreateInfoCount_ )
6577 , pQueueCreateInfos( pQueueCreateInfos_ )
6578 , enabledLayerCount( enabledLayerCount_ )
6579 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6580 , enabledExtensionCount( enabledExtensionCount_ )
6581 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6582 , pEnabledFeatures( pEnabledFeatures_ )
6583 {
6584 }
6585
6586 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6587 {
6588 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6589 }
6590
6591 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6592 {
6593 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6594 return *this;
6595 }
6596
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006597 DeviceCreateInfo& setPNext( const void* pNext_ )
6598 {
6599 pNext = pNext_;
6600 return *this;
6601 }
6602
6603 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6604 {
6605 flags = flags_;
6606 return *this;
6607 }
6608
6609 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6610 {
6611 queueCreateInfoCount = queueCreateInfoCount_;
6612 return *this;
6613 }
6614
6615 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6616 {
6617 pQueueCreateInfos = pQueueCreateInfos_;
6618 return *this;
6619 }
6620
6621 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6622 {
6623 enabledLayerCount = enabledLayerCount_;
6624 return *this;
6625 }
6626
6627 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6628 {
6629 ppEnabledLayerNames = ppEnabledLayerNames_;
6630 return *this;
6631 }
6632
6633 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6634 {
6635 enabledExtensionCount = enabledExtensionCount_;
6636 return *this;
6637 }
6638
6639 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6640 {
6641 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6642 return *this;
6643 }
6644
6645 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6646 {
6647 pEnabledFeatures = pEnabledFeatures_;
6648 return *this;
6649 }
6650
6651 operator const VkDeviceCreateInfo&() const
6652 {
6653 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6654 }
6655
6656 bool operator==( DeviceCreateInfo const& rhs ) const
6657 {
6658 return ( sType == rhs.sType )
6659 && ( pNext == rhs.pNext )
6660 && ( flags == rhs.flags )
6661 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6662 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6663 && ( enabledLayerCount == rhs.enabledLayerCount )
6664 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6665 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6666 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6667 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6668 }
6669
6670 bool operator!=( DeviceCreateInfo const& rhs ) const
6671 {
6672 return !operator==( rhs );
6673 }
6674
6675 private:
6676 StructureType sType;
6677
6678 public:
6679 const void* pNext;
6680 DeviceCreateFlags flags;
6681 uint32_t queueCreateInfoCount;
6682 const DeviceQueueCreateInfo* pQueueCreateInfos;
6683 uint32_t enabledLayerCount;
6684 const char* const* ppEnabledLayerNames;
6685 uint32_t enabledExtensionCount;
6686 const char* const* ppEnabledExtensionNames;
6687 const PhysicalDeviceFeatures* pEnabledFeatures;
6688 };
6689 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6690
6691 struct InstanceCreateInfo
6692 {
6693 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 )
6694 : sType( StructureType::eInstanceCreateInfo )
6695 , pNext( nullptr )
6696 , flags( flags_ )
6697 , pApplicationInfo( pApplicationInfo_ )
6698 , enabledLayerCount( enabledLayerCount_ )
6699 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6700 , enabledExtensionCount( enabledExtensionCount_ )
6701 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6702 {
6703 }
6704
6705 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6706 {
6707 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6708 }
6709
6710 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6711 {
6712 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6713 return *this;
6714 }
6715
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006716 InstanceCreateInfo& setPNext( const void* pNext_ )
6717 {
6718 pNext = pNext_;
6719 return *this;
6720 }
6721
6722 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6723 {
6724 flags = flags_;
6725 return *this;
6726 }
6727
6728 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6729 {
6730 pApplicationInfo = pApplicationInfo_;
6731 return *this;
6732 }
6733
6734 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6735 {
6736 enabledLayerCount = enabledLayerCount_;
6737 return *this;
6738 }
6739
6740 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6741 {
6742 ppEnabledLayerNames = ppEnabledLayerNames_;
6743 return *this;
6744 }
6745
6746 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6747 {
6748 enabledExtensionCount = enabledExtensionCount_;
6749 return *this;
6750 }
6751
6752 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6753 {
6754 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6755 return *this;
6756 }
6757
6758 operator const VkInstanceCreateInfo&() const
6759 {
6760 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6761 }
6762
6763 bool operator==( InstanceCreateInfo const& rhs ) const
6764 {
6765 return ( sType == rhs.sType )
6766 && ( pNext == rhs.pNext )
6767 && ( flags == rhs.flags )
6768 && ( pApplicationInfo == rhs.pApplicationInfo )
6769 && ( enabledLayerCount == rhs.enabledLayerCount )
6770 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6771 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6772 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6773 }
6774
6775 bool operator!=( InstanceCreateInfo const& rhs ) const
6776 {
6777 return !operator==( rhs );
6778 }
6779
6780 private:
6781 StructureType sType;
6782
6783 public:
6784 const void* pNext;
6785 InstanceCreateFlags flags;
6786 const ApplicationInfo* pApplicationInfo;
6787 uint32_t enabledLayerCount;
6788 const char* const* ppEnabledLayerNames;
6789 uint32_t enabledExtensionCount;
6790 const char* const* ppEnabledExtensionNames;
6791 };
6792 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6793
6794 struct MemoryAllocateInfo
6795 {
6796 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6797 : sType( StructureType::eMemoryAllocateInfo )
6798 , pNext( nullptr )
6799 , allocationSize( allocationSize_ )
6800 , memoryTypeIndex( memoryTypeIndex_ )
6801 {
6802 }
6803
6804 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6805 {
6806 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6807 }
6808
6809 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6810 {
6811 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6812 return *this;
6813 }
6814
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006815 MemoryAllocateInfo& setPNext( const void* pNext_ )
6816 {
6817 pNext = pNext_;
6818 return *this;
6819 }
6820
6821 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6822 {
6823 allocationSize = allocationSize_;
6824 return *this;
6825 }
6826
6827 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6828 {
6829 memoryTypeIndex = memoryTypeIndex_;
6830 return *this;
6831 }
6832
6833 operator const VkMemoryAllocateInfo&() const
6834 {
6835 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6836 }
6837
6838 bool operator==( MemoryAllocateInfo const& rhs ) const
6839 {
6840 return ( sType == rhs.sType )
6841 && ( pNext == rhs.pNext )
6842 && ( allocationSize == rhs.allocationSize )
6843 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6844 }
6845
6846 bool operator!=( MemoryAllocateInfo const& rhs ) const
6847 {
6848 return !operator==( rhs );
6849 }
6850
6851 private:
6852 StructureType sType;
6853
6854 public:
6855 const void* pNext;
6856 DeviceSize allocationSize;
6857 uint32_t memoryTypeIndex;
6858 };
6859 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6860
6861 struct MappedMemoryRange
6862 {
6863 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6864 : sType( StructureType::eMappedMemoryRange )
6865 , pNext( nullptr )
6866 , memory( memory_ )
6867 , offset( offset_ )
6868 , size( size_ )
6869 {
6870 }
6871
6872 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6873 {
6874 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6875 }
6876
6877 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6878 {
6879 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6880 return *this;
6881 }
6882
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006883 MappedMemoryRange& setPNext( const void* pNext_ )
6884 {
6885 pNext = pNext_;
6886 return *this;
6887 }
6888
6889 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6890 {
6891 memory = memory_;
6892 return *this;
6893 }
6894
6895 MappedMemoryRange& setOffset( DeviceSize offset_ )
6896 {
6897 offset = offset_;
6898 return *this;
6899 }
6900
6901 MappedMemoryRange& setSize( DeviceSize size_ )
6902 {
6903 size = size_;
6904 return *this;
6905 }
6906
6907 operator const VkMappedMemoryRange&() const
6908 {
6909 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6910 }
6911
6912 bool operator==( MappedMemoryRange const& rhs ) const
6913 {
6914 return ( sType == rhs.sType )
6915 && ( pNext == rhs.pNext )
6916 && ( memory == rhs.memory )
6917 && ( offset == rhs.offset )
6918 && ( size == rhs.size );
6919 }
6920
6921 bool operator!=( MappedMemoryRange const& rhs ) const
6922 {
6923 return !operator==( rhs );
6924 }
6925
6926 private:
6927 StructureType sType;
6928
6929 public:
6930 const void* pNext;
6931 DeviceMemory memory;
6932 DeviceSize offset;
6933 DeviceSize size;
6934 };
6935 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6936
6937 struct WriteDescriptorSet
6938 {
6939 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 )
6940 : sType( StructureType::eWriteDescriptorSet )
6941 , pNext( nullptr )
6942 , dstSet( dstSet_ )
6943 , dstBinding( dstBinding_ )
6944 , dstArrayElement( dstArrayElement_ )
6945 , descriptorCount( descriptorCount_ )
6946 , descriptorType( descriptorType_ )
6947 , pImageInfo( pImageInfo_ )
6948 , pBufferInfo( pBufferInfo_ )
6949 , pTexelBufferView( pTexelBufferView_ )
6950 {
6951 }
6952
6953 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6954 {
6955 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6956 }
6957
6958 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6959 {
6960 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6961 return *this;
6962 }
6963
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006964 WriteDescriptorSet& setPNext( const void* pNext_ )
6965 {
6966 pNext = pNext_;
6967 return *this;
6968 }
6969
6970 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6971 {
6972 dstSet = dstSet_;
6973 return *this;
6974 }
6975
6976 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6977 {
6978 dstBinding = dstBinding_;
6979 return *this;
6980 }
6981
6982 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6983 {
6984 dstArrayElement = dstArrayElement_;
6985 return *this;
6986 }
6987
6988 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6989 {
6990 descriptorCount = descriptorCount_;
6991 return *this;
6992 }
6993
6994 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6995 {
6996 descriptorType = descriptorType_;
6997 return *this;
6998 }
6999
7000 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7001 {
7002 pImageInfo = pImageInfo_;
7003 return *this;
7004 }
7005
7006 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7007 {
7008 pBufferInfo = pBufferInfo_;
7009 return *this;
7010 }
7011
7012 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7013 {
7014 pTexelBufferView = pTexelBufferView_;
7015 return *this;
7016 }
7017
7018 operator const VkWriteDescriptorSet&() const
7019 {
7020 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7021 }
7022
7023 bool operator==( WriteDescriptorSet const& rhs ) const
7024 {
7025 return ( sType == rhs.sType )
7026 && ( pNext == rhs.pNext )
7027 && ( dstSet == rhs.dstSet )
7028 && ( dstBinding == rhs.dstBinding )
7029 && ( dstArrayElement == rhs.dstArrayElement )
7030 && ( descriptorCount == rhs.descriptorCount )
7031 && ( descriptorType == rhs.descriptorType )
7032 && ( pImageInfo == rhs.pImageInfo )
7033 && ( pBufferInfo == rhs.pBufferInfo )
7034 && ( pTexelBufferView == rhs.pTexelBufferView );
7035 }
7036
7037 bool operator!=( WriteDescriptorSet const& rhs ) const
7038 {
7039 return !operator==( rhs );
7040 }
7041
7042 private:
7043 StructureType sType;
7044
7045 public:
7046 const void* pNext;
7047 DescriptorSet dstSet;
7048 uint32_t dstBinding;
7049 uint32_t dstArrayElement;
7050 uint32_t descriptorCount;
7051 DescriptorType descriptorType;
7052 const DescriptorImageInfo* pImageInfo;
7053 const DescriptorBufferInfo* pBufferInfo;
7054 const BufferView* pTexelBufferView;
7055 };
7056 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7057
7058 struct CopyDescriptorSet
7059 {
7060 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 )
7061 : sType( StructureType::eCopyDescriptorSet )
7062 , pNext( nullptr )
7063 , srcSet( srcSet_ )
7064 , srcBinding( srcBinding_ )
7065 , srcArrayElement( srcArrayElement_ )
7066 , dstSet( dstSet_ )
7067 , dstBinding( dstBinding_ )
7068 , dstArrayElement( dstArrayElement_ )
7069 , descriptorCount( descriptorCount_ )
7070 {
7071 }
7072
7073 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7074 {
7075 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7076 }
7077
7078 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7079 {
7080 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7081 return *this;
7082 }
7083
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007084 CopyDescriptorSet& setPNext( const void* pNext_ )
7085 {
7086 pNext = pNext_;
7087 return *this;
7088 }
7089
7090 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7091 {
7092 srcSet = srcSet_;
7093 return *this;
7094 }
7095
7096 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7097 {
7098 srcBinding = srcBinding_;
7099 return *this;
7100 }
7101
7102 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7103 {
7104 srcArrayElement = srcArrayElement_;
7105 return *this;
7106 }
7107
7108 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7109 {
7110 dstSet = dstSet_;
7111 return *this;
7112 }
7113
7114 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7115 {
7116 dstBinding = dstBinding_;
7117 return *this;
7118 }
7119
7120 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7121 {
7122 dstArrayElement = dstArrayElement_;
7123 return *this;
7124 }
7125
7126 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7127 {
7128 descriptorCount = descriptorCount_;
7129 return *this;
7130 }
7131
7132 operator const VkCopyDescriptorSet&() const
7133 {
7134 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7135 }
7136
7137 bool operator==( CopyDescriptorSet const& rhs ) const
7138 {
7139 return ( sType == rhs.sType )
7140 && ( pNext == rhs.pNext )
7141 && ( srcSet == rhs.srcSet )
7142 && ( srcBinding == rhs.srcBinding )
7143 && ( srcArrayElement == rhs.srcArrayElement )
7144 && ( dstSet == rhs.dstSet )
7145 && ( dstBinding == rhs.dstBinding )
7146 && ( dstArrayElement == rhs.dstArrayElement )
7147 && ( descriptorCount == rhs.descriptorCount );
7148 }
7149
7150 bool operator!=( CopyDescriptorSet const& rhs ) const
7151 {
7152 return !operator==( rhs );
7153 }
7154
7155 private:
7156 StructureType sType;
7157
7158 public:
7159 const void* pNext;
7160 DescriptorSet srcSet;
7161 uint32_t srcBinding;
7162 uint32_t srcArrayElement;
7163 DescriptorSet dstSet;
7164 uint32_t dstBinding;
7165 uint32_t dstArrayElement;
7166 uint32_t descriptorCount;
7167 };
7168 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7169
7170 struct BufferViewCreateInfo
7171 {
7172 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7173 : sType( StructureType::eBufferViewCreateInfo )
7174 , pNext( nullptr )
7175 , flags( flags_ )
7176 , buffer( buffer_ )
7177 , format( format_ )
7178 , offset( offset_ )
7179 , range( range_ )
7180 {
7181 }
7182
7183 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7184 {
7185 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7186 }
7187
7188 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7189 {
7190 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7191 return *this;
7192 }
7193
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007194 BufferViewCreateInfo& setPNext( const void* pNext_ )
7195 {
7196 pNext = pNext_;
7197 return *this;
7198 }
7199
7200 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7201 {
7202 flags = flags_;
7203 return *this;
7204 }
7205
7206 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7207 {
7208 buffer = buffer_;
7209 return *this;
7210 }
7211
7212 BufferViewCreateInfo& setFormat( Format format_ )
7213 {
7214 format = format_;
7215 return *this;
7216 }
7217
7218 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7219 {
7220 offset = offset_;
7221 return *this;
7222 }
7223
7224 BufferViewCreateInfo& setRange( DeviceSize range_ )
7225 {
7226 range = range_;
7227 return *this;
7228 }
7229
7230 operator const VkBufferViewCreateInfo&() const
7231 {
7232 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7233 }
7234
7235 bool operator==( BufferViewCreateInfo const& rhs ) const
7236 {
7237 return ( sType == rhs.sType )
7238 && ( pNext == rhs.pNext )
7239 && ( flags == rhs.flags )
7240 && ( buffer == rhs.buffer )
7241 && ( format == rhs.format )
7242 && ( offset == rhs.offset )
7243 && ( range == rhs.range );
7244 }
7245
7246 bool operator!=( BufferViewCreateInfo const& rhs ) const
7247 {
7248 return !operator==( rhs );
7249 }
7250
7251 private:
7252 StructureType sType;
7253
7254 public:
7255 const void* pNext;
7256 BufferViewCreateFlags flags;
7257 Buffer buffer;
7258 Format format;
7259 DeviceSize offset;
7260 DeviceSize range;
7261 };
7262 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7263
7264 struct ShaderModuleCreateInfo
7265 {
7266 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7267 : sType( StructureType::eShaderModuleCreateInfo )
7268 , pNext( nullptr )
7269 , flags( flags_ )
7270 , codeSize( codeSize_ )
7271 , pCode( pCode_ )
7272 {
7273 }
7274
7275 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7276 {
7277 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7278 }
7279
7280 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7281 {
7282 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7283 return *this;
7284 }
7285
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007286 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7287 {
7288 pNext = pNext_;
7289 return *this;
7290 }
7291
7292 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7293 {
7294 flags = flags_;
7295 return *this;
7296 }
7297
7298 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7299 {
7300 codeSize = codeSize_;
7301 return *this;
7302 }
7303
7304 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7305 {
7306 pCode = pCode_;
7307 return *this;
7308 }
7309
7310 operator const VkShaderModuleCreateInfo&() const
7311 {
7312 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7313 }
7314
7315 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7316 {
7317 return ( sType == rhs.sType )
7318 && ( pNext == rhs.pNext )
7319 && ( flags == rhs.flags )
7320 && ( codeSize == rhs.codeSize )
7321 && ( pCode == rhs.pCode );
7322 }
7323
7324 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7325 {
7326 return !operator==( rhs );
7327 }
7328
7329 private:
7330 StructureType sType;
7331
7332 public:
7333 const void* pNext;
7334 ShaderModuleCreateFlags flags;
7335 size_t codeSize;
7336 const uint32_t* pCode;
7337 };
7338 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7339
7340 struct DescriptorSetAllocateInfo
7341 {
7342 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7343 : sType( StructureType::eDescriptorSetAllocateInfo )
7344 , pNext( nullptr )
7345 , descriptorPool( descriptorPool_ )
7346 , descriptorSetCount( descriptorSetCount_ )
7347 , pSetLayouts( pSetLayouts_ )
7348 {
7349 }
7350
7351 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7352 {
7353 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7354 }
7355
7356 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7357 {
7358 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7359 return *this;
7360 }
7361
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007362 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7363 {
7364 pNext = pNext_;
7365 return *this;
7366 }
7367
7368 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7369 {
7370 descriptorPool = descriptorPool_;
7371 return *this;
7372 }
7373
7374 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7375 {
7376 descriptorSetCount = descriptorSetCount_;
7377 return *this;
7378 }
7379
7380 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7381 {
7382 pSetLayouts = pSetLayouts_;
7383 return *this;
7384 }
7385
7386 operator const VkDescriptorSetAllocateInfo&() const
7387 {
7388 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7389 }
7390
7391 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7392 {
7393 return ( sType == rhs.sType )
7394 && ( pNext == rhs.pNext )
7395 && ( descriptorPool == rhs.descriptorPool )
7396 && ( descriptorSetCount == rhs.descriptorSetCount )
7397 && ( pSetLayouts == rhs.pSetLayouts );
7398 }
7399
7400 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7401 {
7402 return !operator==( rhs );
7403 }
7404
7405 private:
7406 StructureType sType;
7407
7408 public:
7409 const void* pNext;
7410 DescriptorPool descriptorPool;
7411 uint32_t descriptorSetCount;
7412 const DescriptorSetLayout* pSetLayouts;
7413 };
7414 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7415
7416 struct PipelineVertexInputStateCreateInfo
7417 {
7418 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7419 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7420 , pNext( nullptr )
7421 , flags( flags_ )
7422 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7423 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7424 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7425 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7426 {
7427 }
7428
7429 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7430 {
7431 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7432 }
7433
7434 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7435 {
7436 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7437 return *this;
7438 }
7439
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007440 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7441 {
7442 pNext = pNext_;
7443 return *this;
7444 }
7445
7446 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7447 {
7448 flags = flags_;
7449 return *this;
7450 }
7451
7452 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7453 {
7454 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7455 return *this;
7456 }
7457
7458 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7459 {
7460 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7461 return *this;
7462 }
7463
7464 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7465 {
7466 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7467 return *this;
7468 }
7469
7470 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7471 {
7472 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7473 return *this;
7474 }
7475
7476 operator const VkPipelineVertexInputStateCreateInfo&() const
7477 {
7478 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7479 }
7480
7481 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7482 {
7483 return ( sType == rhs.sType )
7484 && ( pNext == rhs.pNext )
7485 && ( flags == rhs.flags )
7486 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7487 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7488 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7489 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7490 }
7491
7492 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7493 {
7494 return !operator==( rhs );
7495 }
7496
7497 private:
7498 StructureType sType;
7499
7500 public:
7501 const void* pNext;
7502 PipelineVertexInputStateCreateFlags flags;
7503 uint32_t vertexBindingDescriptionCount;
7504 const VertexInputBindingDescription* pVertexBindingDescriptions;
7505 uint32_t vertexAttributeDescriptionCount;
7506 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7507 };
7508 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7509
7510 struct PipelineInputAssemblyStateCreateInfo
7511 {
7512 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7513 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7514 , pNext( nullptr )
7515 , flags( flags_ )
7516 , topology( topology_ )
7517 , primitiveRestartEnable( primitiveRestartEnable_ )
7518 {
7519 }
7520
7521 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7522 {
7523 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7524 }
7525
7526 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7527 {
7528 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7529 return *this;
7530 }
7531
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007532 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7533 {
7534 pNext = pNext_;
7535 return *this;
7536 }
7537
7538 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7539 {
7540 flags = flags_;
7541 return *this;
7542 }
7543
7544 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7545 {
7546 topology = topology_;
7547 return *this;
7548 }
7549
7550 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7551 {
7552 primitiveRestartEnable = primitiveRestartEnable_;
7553 return *this;
7554 }
7555
7556 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7557 {
7558 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7559 }
7560
7561 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7562 {
7563 return ( sType == rhs.sType )
7564 && ( pNext == rhs.pNext )
7565 && ( flags == rhs.flags )
7566 && ( topology == rhs.topology )
7567 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7568 }
7569
7570 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7571 {
7572 return !operator==( rhs );
7573 }
7574
7575 private:
7576 StructureType sType;
7577
7578 public:
7579 const void* pNext;
7580 PipelineInputAssemblyStateCreateFlags flags;
7581 PrimitiveTopology topology;
7582 Bool32 primitiveRestartEnable;
7583 };
7584 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7585
7586 struct PipelineTessellationStateCreateInfo
7587 {
7588 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7589 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7590 , pNext( nullptr )
7591 , flags( flags_ )
7592 , patchControlPoints( patchControlPoints_ )
7593 {
7594 }
7595
7596 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7597 {
7598 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7599 }
7600
7601 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7602 {
7603 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7604 return *this;
7605 }
7606
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007607 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7608 {
7609 pNext = pNext_;
7610 return *this;
7611 }
7612
7613 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7614 {
7615 flags = flags_;
7616 return *this;
7617 }
7618
7619 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7620 {
7621 patchControlPoints = patchControlPoints_;
7622 return *this;
7623 }
7624
7625 operator const VkPipelineTessellationStateCreateInfo&() const
7626 {
7627 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7628 }
7629
7630 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7631 {
7632 return ( sType == rhs.sType )
7633 && ( pNext == rhs.pNext )
7634 && ( flags == rhs.flags )
7635 && ( patchControlPoints == rhs.patchControlPoints );
7636 }
7637
7638 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7639 {
7640 return !operator==( rhs );
7641 }
7642
7643 private:
7644 StructureType sType;
7645
7646 public:
7647 const void* pNext;
7648 PipelineTessellationStateCreateFlags flags;
7649 uint32_t patchControlPoints;
7650 };
7651 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7652
7653 struct PipelineViewportStateCreateInfo
7654 {
7655 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7656 : sType( StructureType::ePipelineViewportStateCreateInfo )
7657 , pNext( nullptr )
7658 , flags( flags_ )
7659 , viewportCount( viewportCount_ )
7660 , pViewports( pViewports_ )
7661 , scissorCount( scissorCount_ )
7662 , pScissors( pScissors_ )
7663 {
7664 }
7665
7666 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7667 {
7668 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7669 }
7670
7671 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7672 {
7673 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7674 return *this;
7675 }
7676
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007677 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7678 {
7679 pNext = pNext_;
7680 return *this;
7681 }
7682
7683 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7684 {
7685 flags = flags_;
7686 return *this;
7687 }
7688
7689 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7690 {
7691 viewportCount = viewportCount_;
7692 return *this;
7693 }
7694
7695 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7696 {
7697 pViewports = pViewports_;
7698 return *this;
7699 }
7700
7701 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7702 {
7703 scissorCount = scissorCount_;
7704 return *this;
7705 }
7706
7707 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7708 {
7709 pScissors = pScissors_;
7710 return *this;
7711 }
7712
7713 operator const VkPipelineViewportStateCreateInfo&() const
7714 {
7715 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7716 }
7717
7718 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7719 {
7720 return ( sType == rhs.sType )
7721 && ( pNext == rhs.pNext )
7722 && ( flags == rhs.flags )
7723 && ( viewportCount == rhs.viewportCount )
7724 && ( pViewports == rhs.pViewports )
7725 && ( scissorCount == rhs.scissorCount )
7726 && ( pScissors == rhs.pScissors );
7727 }
7728
7729 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7730 {
7731 return !operator==( rhs );
7732 }
7733
7734 private:
7735 StructureType sType;
7736
7737 public:
7738 const void* pNext;
7739 PipelineViewportStateCreateFlags flags;
7740 uint32_t viewportCount;
7741 const Viewport* pViewports;
7742 uint32_t scissorCount;
7743 const Rect2D* pScissors;
7744 };
7745 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7746
7747 struct PipelineRasterizationStateCreateInfo
7748 {
7749 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 )
7750 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7751 , pNext( nullptr )
7752 , flags( flags_ )
7753 , depthClampEnable( depthClampEnable_ )
7754 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7755 , polygonMode( polygonMode_ )
7756 , cullMode( cullMode_ )
7757 , frontFace( frontFace_ )
7758 , depthBiasEnable( depthBiasEnable_ )
7759 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7760 , depthBiasClamp( depthBiasClamp_ )
7761 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7762 , lineWidth( lineWidth_ )
7763 {
7764 }
7765
7766 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7767 {
7768 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7769 }
7770
7771 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7772 {
7773 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7774 return *this;
7775 }
7776
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007777 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7778 {
7779 pNext = pNext_;
7780 return *this;
7781 }
7782
7783 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7784 {
7785 flags = flags_;
7786 return *this;
7787 }
7788
7789 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7790 {
7791 depthClampEnable = depthClampEnable_;
7792 return *this;
7793 }
7794
7795 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7796 {
7797 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7798 return *this;
7799 }
7800
7801 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7802 {
7803 polygonMode = polygonMode_;
7804 return *this;
7805 }
7806
7807 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7808 {
7809 cullMode = cullMode_;
7810 return *this;
7811 }
7812
7813 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7814 {
7815 frontFace = frontFace_;
7816 return *this;
7817 }
7818
7819 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7820 {
7821 depthBiasEnable = depthBiasEnable_;
7822 return *this;
7823 }
7824
7825 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7826 {
7827 depthBiasConstantFactor = depthBiasConstantFactor_;
7828 return *this;
7829 }
7830
7831 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7832 {
7833 depthBiasClamp = depthBiasClamp_;
7834 return *this;
7835 }
7836
7837 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7838 {
7839 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7840 return *this;
7841 }
7842
7843 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7844 {
7845 lineWidth = lineWidth_;
7846 return *this;
7847 }
7848
7849 operator const VkPipelineRasterizationStateCreateInfo&() const
7850 {
7851 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7852 }
7853
7854 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7855 {
7856 return ( sType == rhs.sType )
7857 && ( pNext == rhs.pNext )
7858 && ( flags == rhs.flags )
7859 && ( depthClampEnable == rhs.depthClampEnable )
7860 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7861 && ( polygonMode == rhs.polygonMode )
7862 && ( cullMode == rhs.cullMode )
7863 && ( frontFace == rhs.frontFace )
7864 && ( depthBiasEnable == rhs.depthBiasEnable )
7865 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7866 && ( depthBiasClamp == rhs.depthBiasClamp )
7867 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7868 && ( lineWidth == rhs.lineWidth );
7869 }
7870
7871 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7872 {
7873 return !operator==( rhs );
7874 }
7875
7876 private:
7877 StructureType sType;
7878
7879 public:
7880 const void* pNext;
7881 PipelineRasterizationStateCreateFlags flags;
7882 Bool32 depthClampEnable;
7883 Bool32 rasterizerDiscardEnable;
7884 PolygonMode polygonMode;
7885 CullModeFlags cullMode;
7886 FrontFace frontFace;
7887 Bool32 depthBiasEnable;
7888 float depthBiasConstantFactor;
7889 float depthBiasClamp;
7890 float depthBiasSlopeFactor;
7891 float lineWidth;
7892 };
7893 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7894
7895 struct PipelineDepthStencilStateCreateInfo
7896 {
7897 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 )
7898 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7899 , pNext( nullptr )
7900 , flags( flags_ )
7901 , depthTestEnable( depthTestEnable_ )
7902 , depthWriteEnable( depthWriteEnable_ )
7903 , depthCompareOp( depthCompareOp_ )
7904 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7905 , stencilTestEnable( stencilTestEnable_ )
7906 , front( front_ )
7907 , back( back_ )
7908 , minDepthBounds( minDepthBounds_ )
7909 , maxDepthBounds( maxDepthBounds_ )
7910 {
7911 }
7912
7913 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7914 {
7915 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7916 }
7917
7918 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7919 {
7920 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7921 return *this;
7922 }
7923
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007924 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7925 {
7926 pNext = pNext_;
7927 return *this;
7928 }
7929
7930 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7931 {
7932 flags = flags_;
7933 return *this;
7934 }
7935
7936 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7937 {
7938 depthTestEnable = depthTestEnable_;
7939 return *this;
7940 }
7941
7942 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7943 {
7944 depthWriteEnable = depthWriteEnable_;
7945 return *this;
7946 }
7947
7948 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7949 {
7950 depthCompareOp = depthCompareOp_;
7951 return *this;
7952 }
7953
7954 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7955 {
7956 depthBoundsTestEnable = depthBoundsTestEnable_;
7957 return *this;
7958 }
7959
7960 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7961 {
7962 stencilTestEnable = stencilTestEnable_;
7963 return *this;
7964 }
7965
7966 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7967 {
7968 front = front_;
7969 return *this;
7970 }
7971
7972 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7973 {
7974 back = back_;
7975 return *this;
7976 }
7977
7978 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7979 {
7980 minDepthBounds = minDepthBounds_;
7981 return *this;
7982 }
7983
7984 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7985 {
7986 maxDepthBounds = maxDepthBounds_;
7987 return *this;
7988 }
7989
7990 operator const VkPipelineDepthStencilStateCreateInfo&() const
7991 {
7992 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7993 }
7994
7995 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7996 {
7997 return ( sType == rhs.sType )
7998 && ( pNext == rhs.pNext )
7999 && ( flags == rhs.flags )
8000 && ( depthTestEnable == rhs.depthTestEnable )
8001 && ( depthWriteEnable == rhs.depthWriteEnable )
8002 && ( depthCompareOp == rhs.depthCompareOp )
8003 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8004 && ( stencilTestEnable == rhs.stencilTestEnable )
8005 && ( front == rhs.front )
8006 && ( back == rhs.back )
8007 && ( minDepthBounds == rhs.minDepthBounds )
8008 && ( maxDepthBounds == rhs.maxDepthBounds );
8009 }
8010
8011 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8012 {
8013 return !operator==( rhs );
8014 }
8015
8016 private:
8017 StructureType sType;
8018
8019 public:
8020 const void* pNext;
8021 PipelineDepthStencilStateCreateFlags flags;
8022 Bool32 depthTestEnable;
8023 Bool32 depthWriteEnable;
8024 CompareOp depthCompareOp;
8025 Bool32 depthBoundsTestEnable;
8026 Bool32 stencilTestEnable;
8027 StencilOpState front;
8028 StencilOpState back;
8029 float minDepthBounds;
8030 float maxDepthBounds;
8031 };
8032 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8033
8034 struct PipelineCacheCreateInfo
8035 {
8036 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8037 : sType( StructureType::ePipelineCacheCreateInfo )
8038 , pNext( nullptr )
8039 , flags( flags_ )
8040 , initialDataSize( initialDataSize_ )
8041 , pInitialData( pInitialData_ )
8042 {
8043 }
8044
8045 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8046 {
8047 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8048 }
8049
8050 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8051 {
8052 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8053 return *this;
8054 }
8055
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008056 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8057 {
8058 pNext = pNext_;
8059 return *this;
8060 }
8061
8062 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8063 {
8064 flags = flags_;
8065 return *this;
8066 }
8067
8068 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8069 {
8070 initialDataSize = initialDataSize_;
8071 return *this;
8072 }
8073
8074 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8075 {
8076 pInitialData = pInitialData_;
8077 return *this;
8078 }
8079
8080 operator const VkPipelineCacheCreateInfo&() const
8081 {
8082 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8083 }
8084
8085 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8086 {
8087 return ( sType == rhs.sType )
8088 && ( pNext == rhs.pNext )
8089 && ( flags == rhs.flags )
8090 && ( initialDataSize == rhs.initialDataSize )
8091 && ( pInitialData == rhs.pInitialData );
8092 }
8093
8094 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8095 {
8096 return !operator==( rhs );
8097 }
8098
8099 private:
8100 StructureType sType;
8101
8102 public:
8103 const void* pNext;
8104 PipelineCacheCreateFlags flags;
8105 size_t initialDataSize;
8106 const void* pInitialData;
8107 };
8108 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8109
8110 struct SamplerCreateInfo
8111 {
8112 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 )
8113 : sType( StructureType::eSamplerCreateInfo )
8114 , pNext( nullptr )
8115 , flags( flags_ )
8116 , magFilter( magFilter_ )
8117 , minFilter( minFilter_ )
8118 , mipmapMode( mipmapMode_ )
8119 , addressModeU( addressModeU_ )
8120 , addressModeV( addressModeV_ )
8121 , addressModeW( addressModeW_ )
8122 , mipLodBias( mipLodBias_ )
8123 , anisotropyEnable( anisotropyEnable_ )
8124 , maxAnisotropy( maxAnisotropy_ )
8125 , compareEnable( compareEnable_ )
8126 , compareOp( compareOp_ )
8127 , minLod( minLod_ )
8128 , maxLod( maxLod_ )
8129 , borderColor( borderColor_ )
8130 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8131 {
8132 }
8133
8134 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8135 {
8136 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8137 }
8138
8139 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8140 {
8141 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8142 return *this;
8143 }
8144
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008145 SamplerCreateInfo& setPNext( const void* pNext_ )
8146 {
8147 pNext = pNext_;
8148 return *this;
8149 }
8150
8151 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8152 {
8153 flags = flags_;
8154 return *this;
8155 }
8156
8157 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8158 {
8159 magFilter = magFilter_;
8160 return *this;
8161 }
8162
8163 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8164 {
8165 minFilter = minFilter_;
8166 return *this;
8167 }
8168
8169 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8170 {
8171 mipmapMode = mipmapMode_;
8172 return *this;
8173 }
8174
8175 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8176 {
8177 addressModeU = addressModeU_;
8178 return *this;
8179 }
8180
8181 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8182 {
8183 addressModeV = addressModeV_;
8184 return *this;
8185 }
8186
8187 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8188 {
8189 addressModeW = addressModeW_;
8190 return *this;
8191 }
8192
8193 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8194 {
8195 mipLodBias = mipLodBias_;
8196 return *this;
8197 }
8198
8199 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8200 {
8201 anisotropyEnable = anisotropyEnable_;
8202 return *this;
8203 }
8204
8205 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8206 {
8207 maxAnisotropy = maxAnisotropy_;
8208 return *this;
8209 }
8210
8211 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8212 {
8213 compareEnable = compareEnable_;
8214 return *this;
8215 }
8216
8217 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8218 {
8219 compareOp = compareOp_;
8220 return *this;
8221 }
8222
8223 SamplerCreateInfo& setMinLod( float minLod_ )
8224 {
8225 minLod = minLod_;
8226 return *this;
8227 }
8228
8229 SamplerCreateInfo& setMaxLod( float maxLod_ )
8230 {
8231 maxLod = maxLod_;
8232 return *this;
8233 }
8234
8235 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8236 {
8237 borderColor = borderColor_;
8238 return *this;
8239 }
8240
8241 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8242 {
8243 unnormalizedCoordinates = unnormalizedCoordinates_;
8244 return *this;
8245 }
8246
8247 operator const VkSamplerCreateInfo&() const
8248 {
8249 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8250 }
8251
8252 bool operator==( SamplerCreateInfo const& rhs ) const
8253 {
8254 return ( sType == rhs.sType )
8255 && ( pNext == rhs.pNext )
8256 && ( flags == rhs.flags )
8257 && ( magFilter == rhs.magFilter )
8258 && ( minFilter == rhs.minFilter )
8259 && ( mipmapMode == rhs.mipmapMode )
8260 && ( addressModeU == rhs.addressModeU )
8261 && ( addressModeV == rhs.addressModeV )
8262 && ( addressModeW == rhs.addressModeW )
8263 && ( mipLodBias == rhs.mipLodBias )
8264 && ( anisotropyEnable == rhs.anisotropyEnable )
8265 && ( maxAnisotropy == rhs.maxAnisotropy )
8266 && ( compareEnable == rhs.compareEnable )
8267 && ( compareOp == rhs.compareOp )
8268 && ( minLod == rhs.minLod )
8269 && ( maxLod == rhs.maxLod )
8270 && ( borderColor == rhs.borderColor )
8271 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8272 }
8273
8274 bool operator!=( SamplerCreateInfo const& rhs ) const
8275 {
8276 return !operator==( rhs );
8277 }
8278
8279 private:
8280 StructureType sType;
8281
8282 public:
8283 const void* pNext;
8284 SamplerCreateFlags flags;
8285 Filter magFilter;
8286 Filter minFilter;
8287 SamplerMipmapMode mipmapMode;
8288 SamplerAddressMode addressModeU;
8289 SamplerAddressMode addressModeV;
8290 SamplerAddressMode addressModeW;
8291 float mipLodBias;
8292 Bool32 anisotropyEnable;
8293 float maxAnisotropy;
8294 Bool32 compareEnable;
8295 CompareOp compareOp;
8296 float minLod;
8297 float maxLod;
8298 BorderColor borderColor;
8299 Bool32 unnormalizedCoordinates;
8300 };
8301 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8302
8303 struct CommandBufferAllocateInfo
8304 {
8305 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8306 : sType( StructureType::eCommandBufferAllocateInfo )
8307 , pNext( nullptr )
8308 , commandPool( commandPool_ )
8309 , level( level_ )
8310 , commandBufferCount( commandBufferCount_ )
8311 {
8312 }
8313
8314 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8315 {
8316 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8317 }
8318
8319 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8320 {
8321 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8322 return *this;
8323 }
8324
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008325 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8326 {
8327 pNext = pNext_;
8328 return *this;
8329 }
8330
8331 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8332 {
8333 commandPool = commandPool_;
8334 return *this;
8335 }
8336
8337 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8338 {
8339 level = level_;
8340 return *this;
8341 }
8342
8343 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8344 {
8345 commandBufferCount = commandBufferCount_;
8346 return *this;
8347 }
8348
8349 operator const VkCommandBufferAllocateInfo&() const
8350 {
8351 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8352 }
8353
8354 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8355 {
8356 return ( sType == rhs.sType )
8357 && ( pNext == rhs.pNext )
8358 && ( commandPool == rhs.commandPool )
8359 && ( level == rhs.level )
8360 && ( commandBufferCount == rhs.commandBufferCount );
8361 }
8362
8363 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8364 {
8365 return !operator==( rhs );
8366 }
8367
8368 private:
8369 StructureType sType;
8370
8371 public:
8372 const void* pNext;
8373 CommandPool commandPool;
8374 CommandBufferLevel level;
8375 uint32_t commandBufferCount;
8376 };
8377 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8378
8379 struct RenderPassBeginInfo
8380 {
8381 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8382 : sType( StructureType::eRenderPassBeginInfo )
8383 , pNext( nullptr )
8384 , renderPass( renderPass_ )
8385 , framebuffer( framebuffer_ )
8386 , renderArea( renderArea_ )
8387 , clearValueCount( clearValueCount_ )
8388 , pClearValues( pClearValues_ )
8389 {
8390 }
8391
8392 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8393 {
8394 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8395 }
8396
8397 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8398 {
8399 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8400 return *this;
8401 }
8402
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008403 RenderPassBeginInfo& setPNext( const void* pNext_ )
8404 {
8405 pNext = pNext_;
8406 return *this;
8407 }
8408
8409 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8410 {
8411 renderPass = renderPass_;
8412 return *this;
8413 }
8414
8415 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8416 {
8417 framebuffer = framebuffer_;
8418 return *this;
8419 }
8420
8421 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8422 {
8423 renderArea = renderArea_;
8424 return *this;
8425 }
8426
8427 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8428 {
8429 clearValueCount = clearValueCount_;
8430 return *this;
8431 }
8432
8433 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8434 {
8435 pClearValues = pClearValues_;
8436 return *this;
8437 }
8438
8439 operator const VkRenderPassBeginInfo&() const
8440 {
8441 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8442 }
8443
8444 bool operator==( RenderPassBeginInfo const& rhs ) const
8445 {
8446 return ( sType == rhs.sType )
8447 && ( pNext == rhs.pNext )
8448 && ( renderPass == rhs.renderPass )
8449 && ( framebuffer == rhs.framebuffer )
8450 && ( renderArea == rhs.renderArea )
8451 && ( clearValueCount == rhs.clearValueCount )
8452 && ( pClearValues == rhs.pClearValues );
8453 }
8454
8455 bool operator!=( RenderPassBeginInfo const& rhs ) const
8456 {
8457 return !operator==( rhs );
8458 }
8459
8460 private:
8461 StructureType sType;
8462
8463 public:
8464 const void* pNext;
8465 RenderPass renderPass;
8466 Framebuffer framebuffer;
8467 Rect2D renderArea;
8468 uint32_t clearValueCount;
8469 const ClearValue* pClearValues;
8470 };
8471 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8472
8473 struct EventCreateInfo
8474 {
8475 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8476 : sType( StructureType::eEventCreateInfo )
8477 , pNext( nullptr )
8478 , flags( flags_ )
8479 {
8480 }
8481
8482 EventCreateInfo( VkEventCreateInfo const & rhs )
8483 {
8484 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8485 }
8486
8487 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8488 {
8489 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8490 return *this;
8491 }
8492
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008493 EventCreateInfo& setPNext( const void* pNext_ )
8494 {
8495 pNext = pNext_;
8496 return *this;
8497 }
8498
8499 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8500 {
8501 flags = flags_;
8502 return *this;
8503 }
8504
8505 operator const VkEventCreateInfo&() const
8506 {
8507 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8508 }
8509
8510 bool operator==( EventCreateInfo const& rhs ) const
8511 {
8512 return ( sType == rhs.sType )
8513 && ( pNext == rhs.pNext )
8514 && ( flags == rhs.flags );
8515 }
8516
8517 bool operator!=( EventCreateInfo const& rhs ) const
8518 {
8519 return !operator==( rhs );
8520 }
8521
8522 private:
8523 StructureType sType;
8524
8525 public:
8526 const void* pNext;
8527 EventCreateFlags flags;
8528 };
8529 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8530
8531 struct SemaphoreCreateInfo
8532 {
8533 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8534 : sType( StructureType::eSemaphoreCreateInfo )
8535 , pNext( nullptr )
8536 , flags( flags_ )
8537 {
8538 }
8539
8540 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8541 {
8542 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8543 }
8544
8545 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8546 {
8547 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8548 return *this;
8549 }
8550
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008551 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8552 {
8553 pNext = pNext_;
8554 return *this;
8555 }
8556
8557 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8558 {
8559 flags = flags_;
8560 return *this;
8561 }
8562
8563 operator const VkSemaphoreCreateInfo&() const
8564 {
8565 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8566 }
8567
8568 bool operator==( SemaphoreCreateInfo const& rhs ) const
8569 {
8570 return ( sType == rhs.sType )
8571 && ( pNext == rhs.pNext )
8572 && ( flags == rhs.flags );
8573 }
8574
8575 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8576 {
8577 return !operator==( rhs );
8578 }
8579
8580 private:
8581 StructureType sType;
8582
8583 public:
8584 const void* pNext;
8585 SemaphoreCreateFlags flags;
8586 };
8587 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8588
8589 struct FramebufferCreateInfo
8590 {
8591 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 )
8592 : sType( StructureType::eFramebufferCreateInfo )
8593 , pNext( nullptr )
8594 , flags( flags_ )
8595 , renderPass( renderPass_ )
8596 , attachmentCount( attachmentCount_ )
8597 , pAttachments( pAttachments_ )
8598 , width( width_ )
8599 , height( height_ )
8600 , layers( layers_ )
8601 {
8602 }
8603
8604 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8605 {
8606 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8607 }
8608
8609 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8610 {
8611 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8612 return *this;
8613 }
8614
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008615 FramebufferCreateInfo& setPNext( const void* pNext_ )
8616 {
8617 pNext = pNext_;
8618 return *this;
8619 }
8620
8621 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8622 {
8623 flags = flags_;
8624 return *this;
8625 }
8626
8627 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8628 {
8629 renderPass = renderPass_;
8630 return *this;
8631 }
8632
8633 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8634 {
8635 attachmentCount = attachmentCount_;
8636 return *this;
8637 }
8638
8639 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8640 {
8641 pAttachments = pAttachments_;
8642 return *this;
8643 }
8644
8645 FramebufferCreateInfo& setWidth( uint32_t width_ )
8646 {
8647 width = width_;
8648 return *this;
8649 }
8650
8651 FramebufferCreateInfo& setHeight( uint32_t height_ )
8652 {
8653 height = height_;
8654 return *this;
8655 }
8656
8657 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8658 {
8659 layers = layers_;
8660 return *this;
8661 }
8662
8663 operator const VkFramebufferCreateInfo&() const
8664 {
8665 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8666 }
8667
8668 bool operator==( FramebufferCreateInfo const& rhs ) const
8669 {
8670 return ( sType == rhs.sType )
8671 && ( pNext == rhs.pNext )
8672 && ( flags == rhs.flags )
8673 && ( renderPass == rhs.renderPass )
8674 && ( attachmentCount == rhs.attachmentCount )
8675 && ( pAttachments == rhs.pAttachments )
8676 && ( width == rhs.width )
8677 && ( height == rhs.height )
8678 && ( layers == rhs.layers );
8679 }
8680
8681 bool operator!=( FramebufferCreateInfo const& rhs ) const
8682 {
8683 return !operator==( rhs );
8684 }
8685
8686 private:
8687 StructureType sType;
8688
8689 public:
8690 const void* pNext;
8691 FramebufferCreateFlags flags;
8692 RenderPass renderPass;
8693 uint32_t attachmentCount;
8694 const ImageView* pAttachments;
8695 uint32_t width;
8696 uint32_t height;
8697 uint32_t layers;
8698 };
8699 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8700
8701 struct DisplayModeCreateInfoKHR
8702 {
8703 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8704 : sType( StructureType::eDisplayModeCreateInfoKHR )
8705 , pNext( nullptr )
8706 , flags( flags_ )
8707 , parameters( parameters_ )
8708 {
8709 }
8710
8711 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8712 {
8713 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8714 }
8715
8716 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8717 {
8718 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8719 return *this;
8720 }
8721
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008722 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8723 {
8724 pNext = pNext_;
8725 return *this;
8726 }
8727
8728 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8729 {
8730 flags = flags_;
8731 return *this;
8732 }
8733
8734 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8735 {
8736 parameters = parameters_;
8737 return *this;
8738 }
8739
8740 operator const VkDisplayModeCreateInfoKHR&() const
8741 {
8742 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8743 }
8744
8745 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8746 {
8747 return ( sType == rhs.sType )
8748 && ( pNext == rhs.pNext )
8749 && ( flags == rhs.flags )
8750 && ( parameters == rhs.parameters );
8751 }
8752
8753 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8754 {
8755 return !operator==( rhs );
8756 }
8757
8758 private:
8759 StructureType sType;
8760
8761 public:
8762 const void* pNext;
8763 DisplayModeCreateFlagsKHR flags;
8764 DisplayModeParametersKHR parameters;
8765 };
8766 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8767
8768 struct DisplayPresentInfoKHR
8769 {
8770 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8771 : sType( StructureType::eDisplayPresentInfoKHR )
8772 , pNext( nullptr )
8773 , srcRect( srcRect_ )
8774 , dstRect( dstRect_ )
8775 , persistent( persistent_ )
8776 {
8777 }
8778
8779 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8780 {
8781 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8782 }
8783
8784 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8785 {
8786 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8787 return *this;
8788 }
8789
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008790 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8791 {
8792 pNext = pNext_;
8793 return *this;
8794 }
8795
8796 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8797 {
8798 srcRect = srcRect_;
8799 return *this;
8800 }
8801
8802 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8803 {
8804 dstRect = dstRect_;
8805 return *this;
8806 }
8807
8808 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8809 {
8810 persistent = persistent_;
8811 return *this;
8812 }
8813
8814 operator const VkDisplayPresentInfoKHR&() const
8815 {
8816 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8817 }
8818
8819 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8820 {
8821 return ( sType == rhs.sType )
8822 && ( pNext == rhs.pNext )
8823 && ( srcRect == rhs.srcRect )
8824 && ( dstRect == rhs.dstRect )
8825 && ( persistent == rhs.persistent );
8826 }
8827
8828 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8829 {
8830 return !operator==( rhs );
8831 }
8832
8833 private:
8834 StructureType sType;
8835
8836 public:
8837 const void* pNext;
8838 Rect2D srcRect;
8839 Rect2D dstRect;
8840 Bool32 persistent;
8841 };
8842 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8843
8844#ifdef VK_USE_PLATFORM_ANDROID_KHR
8845 struct AndroidSurfaceCreateInfoKHR
8846 {
8847 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8848 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8849 , pNext( nullptr )
8850 , flags( flags_ )
8851 , window( window_ )
8852 {
8853 }
8854
8855 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8856 {
8857 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8858 }
8859
8860 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8861 {
8862 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8863 return *this;
8864 }
8865
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008866 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8867 {
8868 pNext = pNext_;
8869 return *this;
8870 }
8871
8872 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8873 {
8874 flags = flags_;
8875 return *this;
8876 }
8877
8878 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8879 {
8880 window = window_;
8881 return *this;
8882 }
8883
8884 operator const VkAndroidSurfaceCreateInfoKHR&() const
8885 {
8886 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8887 }
8888
8889 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8890 {
8891 return ( sType == rhs.sType )
8892 && ( pNext == rhs.pNext )
8893 && ( flags == rhs.flags )
8894 && ( window == rhs.window );
8895 }
8896
8897 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8898 {
8899 return !operator==( rhs );
8900 }
8901
8902 private:
8903 StructureType sType;
8904
8905 public:
8906 const void* pNext;
8907 AndroidSurfaceCreateFlagsKHR flags;
8908 ANativeWindow* window;
8909 };
8910 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8911#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8912
8913#ifdef VK_USE_PLATFORM_MIR_KHR
8914 struct MirSurfaceCreateInfoKHR
8915 {
8916 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8917 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8918 , pNext( nullptr )
8919 , flags( flags_ )
8920 , connection( connection_ )
8921 , mirSurface( mirSurface_ )
8922 {
8923 }
8924
8925 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8926 {
8927 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8928 }
8929
8930 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8931 {
8932 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8933 return *this;
8934 }
8935
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008936 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8937 {
8938 pNext = pNext_;
8939 return *this;
8940 }
8941
8942 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8943 {
8944 flags = flags_;
8945 return *this;
8946 }
8947
8948 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8949 {
8950 connection = connection_;
8951 return *this;
8952 }
8953
8954 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8955 {
8956 mirSurface = mirSurface_;
8957 return *this;
8958 }
8959
8960 operator const VkMirSurfaceCreateInfoKHR&() const
8961 {
8962 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8963 }
8964
8965 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8966 {
8967 return ( sType == rhs.sType )
8968 && ( pNext == rhs.pNext )
8969 && ( flags == rhs.flags )
8970 && ( connection == rhs.connection )
8971 && ( mirSurface == rhs.mirSurface );
8972 }
8973
8974 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8975 {
8976 return !operator==( rhs );
8977 }
8978
8979 private:
8980 StructureType sType;
8981
8982 public:
8983 const void* pNext;
8984 MirSurfaceCreateFlagsKHR flags;
8985 MirConnection* connection;
8986 MirSurface* mirSurface;
8987 };
8988 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8989#endif /*VK_USE_PLATFORM_MIR_KHR*/
8990
Mark Young39389872017-01-19 21:10:49 -07008991#ifdef VK_USE_PLATFORM_VI_NN
8992 struct ViSurfaceCreateInfoNN
8993 {
8994 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8995 : sType( StructureType::eViSurfaceCreateInfoNN )
8996 , pNext( nullptr )
8997 , flags( flags_ )
8998 , window( window_ )
8999 {
9000 }
9001
9002 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9003 {
9004 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9005 }
9006
9007 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9008 {
9009 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9010 return *this;
9011 }
9012
Mark Young39389872017-01-19 21:10:49 -07009013 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9014 {
9015 pNext = pNext_;
9016 return *this;
9017 }
9018
9019 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9020 {
9021 flags = flags_;
9022 return *this;
9023 }
9024
9025 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9026 {
9027 window = window_;
9028 return *this;
9029 }
9030
9031 operator const VkViSurfaceCreateInfoNN&() const
9032 {
9033 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9034 }
9035
9036 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9037 {
9038 return ( sType == rhs.sType )
9039 && ( pNext == rhs.pNext )
9040 && ( flags == rhs.flags )
9041 && ( window == rhs.window );
9042 }
9043
9044 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9045 {
9046 return !operator==( rhs );
9047 }
9048
9049 private:
9050 StructureType sType;
9051
9052 public:
9053 const void* pNext;
9054 ViSurfaceCreateFlagsNN flags;
9055 void* window;
9056 };
9057 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9058#endif /*VK_USE_PLATFORM_VI_NN*/
9059
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009060#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9061 struct WaylandSurfaceCreateInfoKHR
9062 {
9063 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9064 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9065 , pNext( nullptr )
9066 , flags( flags_ )
9067 , display( display_ )
9068 , surface( surface_ )
9069 {
9070 }
9071
9072 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9073 {
9074 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9075 }
9076
9077 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9078 {
9079 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9080 return *this;
9081 }
9082
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009083 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9084 {
9085 pNext = pNext_;
9086 return *this;
9087 }
9088
9089 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9090 {
9091 flags = flags_;
9092 return *this;
9093 }
9094
9095 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9096 {
9097 display = display_;
9098 return *this;
9099 }
9100
9101 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9102 {
9103 surface = surface_;
9104 return *this;
9105 }
9106
9107 operator const VkWaylandSurfaceCreateInfoKHR&() const
9108 {
9109 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9110 }
9111
9112 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9113 {
9114 return ( sType == rhs.sType )
9115 && ( pNext == rhs.pNext )
9116 && ( flags == rhs.flags )
9117 && ( display == rhs.display )
9118 && ( surface == rhs.surface );
9119 }
9120
9121 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9122 {
9123 return !operator==( rhs );
9124 }
9125
9126 private:
9127 StructureType sType;
9128
9129 public:
9130 const void* pNext;
9131 WaylandSurfaceCreateFlagsKHR flags;
9132 struct wl_display* display;
9133 struct wl_surface* surface;
9134 };
9135 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9136#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9137
9138#ifdef VK_USE_PLATFORM_WIN32_KHR
9139 struct Win32SurfaceCreateInfoKHR
9140 {
9141 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9142 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9143 , pNext( nullptr )
9144 , flags( flags_ )
9145 , hinstance( hinstance_ )
9146 , hwnd( hwnd_ )
9147 {
9148 }
9149
9150 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9151 {
9152 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9153 }
9154
9155 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9156 {
9157 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9158 return *this;
9159 }
9160
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009161 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9162 {
9163 pNext = pNext_;
9164 return *this;
9165 }
9166
9167 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9168 {
9169 flags = flags_;
9170 return *this;
9171 }
9172
9173 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9174 {
9175 hinstance = hinstance_;
9176 return *this;
9177 }
9178
9179 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9180 {
9181 hwnd = hwnd_;
9182 return *this;
9183 }
9184
9185 operator const VkWin32SurfaceCreateInfoKHR&() const
9186 {
9187 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9188 }
9189
9190 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9191 {
9192 return ( sType == rhs.sType )
9193 && ( pNext == rhs.pNext )
9194 && ( flags == rhs.flags )
9195 && ( hinstance == rhs.hinstance )
9196 && ( hwnd == rhs.hwnd );
9197 }
9198
9199 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9200 {
9201 return !operator==( rhs );
9202 }
9203
9204 private:
9205 StructureType sType;
9206
9207 public:
9208 const void* pNext;
9209 Win32SurfaceCreateFlagsKHR flags;
9210 HINSTANCE hinstance;
9211 HWND hwnd;
9212 };
9213 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9214#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9215
9216#ifdef VK_USE_PLATFORM_XLIB_KHR
9217 struct XlibSurfaceCreateInfoKHR
9218 {
9219 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9220 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9221 , pNext( nullptr )
9222 , flags( flags_ )
9223 , dpy( dpy_ )
9224 , window( window_ )
9225 {
9226 }
9227
9228 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9229 {
9230 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9231 }
9232
9233 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9234 {
9235 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9236 return *this;
9237 }
9238
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009239 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9240 {
9241 pNext = pNext_;
9242 return *this;
9243 }
9244
9245 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9246 {
9247 flags = flags_;
9248 return *this;
9249 }
9250
9251 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9252 {
9253 dpy = dpy_;
9254 return *this;
9255 }
9256
9257 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9258 {
9259 window = window_;
9260 return *this;
9261 }
9262
9263 operator const VkXlibSurfaceCreateInfoKHR&() const
9264 {
9265 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9266 }
9267
9268 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9269 {
9270 return ( sType == rhs.sType )
9271 && ( pNext == rhs.pNext )
9272 && ( flags == rhs.flags )
9273 && ( dpy == rhs.dpy )
9274 && ( window == rhs.window );
9275 }
9276
9277 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9278 {
9279 return !operator==( rhs );
9280 }
9281
9282 private:
9283 StructureType sType;
9284
9285 public:
9286 const void* pNext;
9287 XlibSurfaceCreateFlagsKHR flags;
9288 Display* dpy;
9289 Window window;
9290 };
9291 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9292#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9293
9294#ifdef VK_USE_PLATFORM_XCB_KHR
9295 struct XcbSurfaceCreateInfoKHR
9296 {
9297 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9298 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9299 , pNext( nullptr )
9300 , flags( flags_ )
9301 , connection( connection_ )
9302 , window( window_ )
9303 {
9304 }
9305
9306 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9307 {
9308 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9309 }
9310
9311 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9312 {
9313 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9314 return *this;
9315 }
9316
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009317 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9318 {
9319 pNext = pNext_;
9320 return *this;
9321 }
9322
9323 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9324 {
9325 flags = flags_;
9326 return *this;
9327 }
9328
9329 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9330 {
9331 connection = connection_;
9332 return *this;
9333 }
9334
9335 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9336 {
9337 window = window_;
9338 return *this;
9339 }
9340
9341 operator const VkXcbSurfaceCreateInfoKHR&() const
9342 {
9343 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9344 }
9345
9346 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9347 {
9348 return ( sType == rhs.sType )
9349 && ( pNext == rhs.pNext )
9350 && ( flags == rhs.flags )
9351 && ( connection == rhs.connection )
9352 && ( window == rhs.window );
9353 }
9354
9355 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9356 {
9357 return !operator==( rhs );
9358 }
9359
9360 private:
9361 StructureType sType;
9362
9363 public:
9364 const void* pNext;
9365 XcbSurfaceCreateFlagsKHR flags;
9366 xcb_connection_t* connection;
9367 xcb_window_t window;
9368 };
9369 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9370#endif /*VK_USE_PLATFORM_XCB_KHR*/
9371
9372 struct DebugMarkerMarkerInfoEXT
9373 {
9374 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9375 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9376 , pNext( nullptr )
9377 , pMarkerName( pMarkerName_ )
9378 {
9379 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9380 }
9381
9382 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9383 {
9384 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9385 }
9386
9387 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9388 {
9389 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9390 return *this;
9391 }
9392
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009393 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9394 {
9395 pNext = pNext_;
9396 return *this;
9397 }
9398
9399 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9400 {
9401 pMarkerName = pMarkerName_;
9402 return *this;
9403 }
9404
9405 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9406 {
9407 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9408 return *this;
9409 }
9410
9411 operator const VkDebugMarkerMarkerInfoEXT&() const
9412 {
9413 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9414 }
9415
9416 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9417 {
9418 return ( sType == rhs.sType )
9419 && ( pNext == rhs.pNext )
9420 && ( pMarkerName == rhs.pMarkerName )
9421 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9422 }
9423
9424 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9425 {
9426 return !operator==( rhs );
9427 }
9428
9429 private:
9430 StructureType sType;
9431
9432 public:
9433 const void* pNext;
9434 const char* pMarkerName;
9435 float color[4];
9436 };
9437 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9438
9439 struct DedicatedAllocationImageCreateInfoNV
9440 {
9441 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9442 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9443 , pNext( nullptr )
9444 , dedicatedAllocation( dedicatedAllocation_ )
9445 {
9446 }
9447
9448 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9449 {
9450 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9451 }
9452
9453 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9454 {
9455 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9456 return *this;
9457 }
9458
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009459 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9460 {
9461 pNext = pNext_;
9462 return *this;
9463 }
9464
9465 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9466 {
9467 dedicatedAllocation = dedicatedAllocation_;
9468 return *this;
9469 }
9470
9471 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9472 {
9473 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9474 }
9475
9476 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9477 {
9478 return ( sType == rhs.sType )
9479 && ( pNext == rhs.pNext )
9480 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9481 }
9482
9483 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9484 {
9485 return !operator==( rhs );
9486 }
9487
9488 private:
9489 StructureType sType;
9490
9491 public:
9492 const void* pNext;
9493 Bool32 dedicatedAllocation;
9494 };
9495 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9496
9497 struct DedicatedAllocationBufferCreateInfoNV
9498 {
9499 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9500 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9501 , pNext( nullptr )
9502 , dedicatedAllocation( dedicatedAllocation_ )
9503 {
9504 }
9505
9506 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9507 {
9508 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9509 }
9510
9511 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9512 {
9513 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9514 return *this;
9515 }
9516
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009517 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9518 {
9519 pNext = pNext_;
9520 return *this;
9521 }
9522
9523 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9524 {
9525 dedicatedAllocation = dedicatedAllocation_;
9526 return *this;
9527 }
9528
9529 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9530 {
9531 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9532 }
9533
9534 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9535 {
9536 return ( sType == rhs.sType )
9537 && ( pNext == rhs.pNext )
9538 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9539 }
9540
9541 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9542 {
9543 return !operator==( rhs );
9544 }
9545
9546 private:
9547 StructureType sType;
9548
9549 public:
9550 const void* pNext;
9551 Bool32 dedicatedAllocation;
9552 };
9553 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9554
9555 struct DedicatedAllocationMemoryAllocateInfoNV
9556 {
9557 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9558 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9559 , pNext( nullptr )
9560 , image( image_ )
9561 , buffer( buffer_ )
9562 {
9563 }
9564
9565 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9566 {
9567 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9568 }
9569
9570 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9571 {
9572 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9573 return *this;
9574 }
9575
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009576 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9577 {
9578 pNext = pNext_;
9579 return *this;
9580 }
9581
9582 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9583 {
9584 image = image_;
9585 return *this;
9586 }
9587
9588 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9589 {
9590 buffer = buffer_;
9591 return *this;
9592 }
9593
9594 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9595 {
9596 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9597 }
9598
9599 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9600 {
9601 return ( sType == rhs.sType )
9602 && ( pNext == rhs.pNext )
9603 && ( image == rhs.image )
9604 && ( buffer == rhs.buffer );
9605 }
9606
9607 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9608 {
9609 return !operator==( rhs );
9610 }
9611
9612 private:
9613 StructureType sType;
9614
9615 public:
9616 const void* pNext;
9617 Image image;
9618 Buffer buffer;
9619 };
9620 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9621
Lenny Komow6501c122016-08-31 15:03:49 -06009622#ifdef VK_USE_PLATFORM_WIN32_KHR
9623 struct ExportMemoryWin32HandleInfoNV
9624 {
9625 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9626 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9627 , pNext( nullptr )
9628 , pAttributes( pAttributes_ )
9629 , dwAccess( dwAccess_ )
9630 {
9631 }
9632
9633 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9634 {
9635 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9636 }
9637
9638 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9639 {
9640 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9641 return *this;
9642 }
9643
Lenny Komow6501c122016-08-31 15:03:49 -06009644 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9645 {
9646 pNext = pNext_;
9647 return *this;
9648 }
9649
9650 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9651 {
9652 pAttributes = pAttributes_;
9653 return *this;
9654 }
9655
9656 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9657 {
9658 dwAccess = dwAccess_;
9659 return *this;
9660 }
9661
9662 operator const VkExportMemoryWin32HandleInfoNV&() const
9663 {
9664 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9665 }
9666
9667 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9668 {
9669 return ( sType == rhs.sType )
9670 && ( pNext == rhs.pNext )
9671 && ( pAttributes == rhs.pAttributes )
9672 && ( dwAccess == rhs.dwAccess );
9673 }
9674
9675 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9676 {
9677 return !operator==( rhs );
9678 }
9679
9680 private:
9681 StructureType sType;
9682
9683 public:
9684 const void* pNext;
9685 const SECURITY_ATTRIBUTES* pAttributes;
9686 DWORD dwAccess;
9687 };
9688 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9689#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9690
9691#ifdef VK_USE_PLATFORM_WIN32_KHR
9692 struct Win32KeyedMutexAcquireReleaseInfoNV
9693 {
9694 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 )
9695 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9696 , pNext( nullptr )
9697 , acquireCount( acquireCount_ )
9698 , pAcquireSyncs( pAcquireSyncs_ )
9699 , pAcquireKeys( pAcquireKeys_ )
9700 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9701 , releaseCount( releaseCount_ )
9702 , pReleaseSyncs( pReleaseSyncs_ )
9703 , pReleaseKeys( pReleaseKeys_ )
9704 {
9705 }
9706
9707 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9708 {
9709 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9710 }
9711
9712 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9713 {
9714 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9715 return *this;
9716 }
9717
Lenny Komow6501c122016-08-31 15:03:49 -06009718 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9719 {
9720 pNext = pNext_;
9721 return *this;
9722 }
9723
9724 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9725 {
9726 acquireCount = acquireCount_;
9727 return *this;
9728 }
9729
9730 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9731 {
9732 pAcquireSyncs = pAcquireSyncs_;
9733 return *this;
9734 }
9735
9736 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9737 {
9738 pAcquireKeys = pAcquireKeys_;
9739 return *this;
9740 }
9741
9742 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9743 {
9744 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9745 return *this;
9746 }
9747
9748 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9749 {
9750 releaseCount = releaseCount_;
9751 return *this;
9752 }
9753
9754 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9755 {
9756 pReleaseSyncs = pReleaseSyncs_;
9757 return *this;
9758 }
9759
9760 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9761 {
9762 pReleaseKeys = pReleaseKeys_;
9763 return *this;
9764 }
9765
9766 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9767 {
9768 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9769 }
9770
9771 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9772 {
9773 return ( sType == rhs.sType )
9774 && ( pNext == rhs.pNext )
9775 && ( acquireCount == rhs.acquireCount )
9776 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9777 && ( pAcquireKeys == rhs.pAcquireKeys )
9778 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9779 && ( releaseCount == rhs.releaseCount )
9780 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9781 && ( pReleaseKeys == rhs.pReleaseKeys );
9782 }
9783
9784 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9785 {
9786 return !operator==( rhs );
9787 }
9788
9789 private:
9790 StructureType sType;
9791
9792 public:
9793 const void* pNext;
9794 uint32_t acquireCount;
9795 const DeviceMemory* pAcquireSyncs;
9796 const uint64_t* pAcquireKeys;
9797 const uint32_t* pAcquireTimeoutMilliseconds;
9798 uint32_t releaseCount;
9799 const DeviceMemory* pReleaseSyncs;
9800 const uint64_t* pReleaseKeys;
9801 };
9802 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9803#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9804
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009805 struct DeviceGeneratedCommandsFeaturesNVX
9806 {
9807 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9808 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9809 , pNext( nullptr )
9810 , computeBindingPointSupport( computeBindingPointSupport_ )
9811 {
9812 }
9813
9814 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9815 {
9816 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9817 }
9818
9819 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9820 {
9821 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9822 return *this;
9823 }
9824
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009825 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9826 {
9827 pNext = pNext_;
9828 return *this;
9829 }
9830
9831 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9832 {
9833 computeBindingPointSupport = computeBindingPointSupport_;
9834 return *this;
9835 }
9836
9837 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9838 {
9839 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9840 }
9841
9842 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9843 {
9844 return ( sType == rhs.sType )
9845 && ( pNext == rhs.pNext )
9846 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9847 }
9848
9849 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9850 {
9851 return !operator==( rhs );
9852 }
9853
9854 private:
9855 StructureType sType;
9856
9857 public:
9858 const void* pNext;
9859 Bool32 computeBindingPointSupport;
9860 };
9861 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9862
9863 struct DeviceGeneratedCommandsLimitsNVX
9864 {
9865 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9866 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9867 , pNext( nullptr )
9868 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9869 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9870 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9871 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9872 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9873 {
9874 }
9875
9876 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9877 {
9878 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9879 }
9880
9881 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9882 {
9883 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9884 return *this;
9885 }
9886
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009887 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9888 {
9889 pNext = pNext_;
9890 return *this;
9891 }
9892
9893 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9894 {
9895 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9896 return *this;
9897 }
9898
9899 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9900 {
9901 maxObjectEntryCounts = maxObjectEntryCounts_;
9902 return *this;
9903 }
9904
9905 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9906 {
9907 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9908 return *this;
9909 }
9910
9911 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9912 {
9913 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9914 return *this;
9915 }
9916
9917 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9918 {
9919 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9920 return *this;
9921 }
9922
9923 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9924 {
9925 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9926 }
9927
9928 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9929 {
9930 return ( sType == rhs.sType )
9931 && ( pNext == rhs.pNext )
9932 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9933 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9934 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9935 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9936 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9937 }
9938
9939 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9940 {
9941 return !operator==( rhs );
9942 }
9943
9944 private:
9945 StructureType sType;
9946
9947 public:
9948 const void* pNext;
9949 uint32_t maxIndirectCommandsLayoutTokenCount;
9950 uint32_t maxObjectEntryCounts;
9951 uint32_t minSequenceCountBufferOffsetAlignment;
9952 uint32_t minSequenceIndexBufferOffsetAlignment;
9953 uint32_t minCommandsTokenBufferOffsetAlignment;
9954 };
9955 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9956
9957 struct CmdReserveSpaceForCommandsInfoNVX
9958 {
9959 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9960 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9961 , pNext( nullptr )
9962 , objectTable( objectTable_ )
9963 , indirectCommandsLayout( indirectCommandsLayout_ )
9964 , maxSequencesCount( maxSequencesCount_ )
9965 {
9966 }
9967
9968 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9969 {
9970 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9971 }
9972
9973 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9974 {
9975 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9976 return *this;
9977 }
9978
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009979 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9980 {
9981 pNext = pNext_;
9982 return *this;
9983 }
9984
9985 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9986 {
9987 objectTable = objectTable_;
9988 return *this;
9989 }
9990
9991 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9992 {
9993 indirectCommandsLayout = indirectCommandsLayout_;
9994 return *this;
9995 }
9996
9997 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9998 {
9999 maxSequencesCount = maxSequencesCount_;
10000 return *this;
10001 }
10002
10003 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10004 {
10005 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10006 }
10007
10008 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10009 {
10010 return ( sType == rhs.sType )
10011 && ( pNext == rhs.pNext )
10012 && ( objectTable == rhs.objectTable )
10013 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10014 && ( maxSequencesCount == rhs.maxSequencesCount );
10015 }
10016
10017 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10018 {
10019 return !operator==( rhs );
10020 }
10021
10022 private:
10023 StructureType sType;
10024
10025 public:
10026 const void* pNext;
10027 ObjectTableNVX objectTable;
10028 IndirectCommandsLayoutNVX indirectCommandsLayout;
10029 uint32_t maxSequencesCount;
10030 };
10031 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10032
Mark Young39389872017-01-19 21:10:49 -070010033 struct PhysicalDeviceFeatures2KHR
10034 {
10035 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10036 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10037 , pNext( nullptr )
10038 , features( features_ )
10039 {
10040 }
10041
10042 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10043 {
10044 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10045 }
10046
10047 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10048 {
10049 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10050 return *this;
10051 }
10052
Mark Young39389872017-01-19 21:10:49 -070010053 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10054 {
10055 pNext = pNext_;
10056 return *this;
10057 }
10058
10059 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10060 {
10061 features = features_;
10062 return *this;
10063 }
10064
10065 operator const VkPhysicalDeviceFeatures2KHR&() const
10066 {
10067 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10068 }
10069
10070 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10071 {
10072 return ( sType == rhs.sType )
10073 && ( pNext == rhs.pNext )
10074 && ( features == rhs.features );
10075 }
10076
10077 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10078 {
10079 return !operator==( rhs );
10080 }
10081
10082 private:
10083 StructureType sType;
10084
10085 public:
10086 void* pNext;
10087 PhysicalDeviceFeatures features;
10088 };
10089 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10090
Mark Young0f183a82017-02-28 09:58:04 -070010091 struct PhysicalDevicePushDescriptorPropertiesKHR
10092 {
10093 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10094 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10095 , pNext( nullptr )
10096 , maxPushDescriptors( maxPushDescriptors_ )
10097 {
10098 }
10099
10100 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10101 {
10102 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10103 }
10104
10105 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10106 {
10107 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10108 return *this;
10109 }
10110
10111 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10112 {
10113 pNext = pNext_;
10114 return *this;
10115 }
10116
10117 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10118 {
10119 maxPushDescriptors = maxPushDescriptors_;
10120 return *this;
10121 }
10122
10123 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10124 {
10125 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10126 }
10127
10128 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10129 {
10130 return ( sType == rhs.sType )
10131 && ( pNext == rhs.pNext )
10132 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10133 }
10134
10135 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10136 {
10137 return !operator==( rhs );
10138 }
10139
10140 private:
10141 StructureType sType;
10142
10143 public:
10144 void* pNext;
10145 uint32_t maxPushDescriptors;
10146 };
10147 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10148
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010149 struct PresentRegionsKHR
10150 {
10151 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10152 : sType( StructureType::ePresentRegionsKHR )
10153 , pNext( nullptr )
10154 , swapchainCount( swapchainCount_ )
10155 , pRegions( pRegions_ )
10156 {
10157 }
10158
10159 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10160 {
10161 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10162 }
10163
10164 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10165 {
10166 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10167 return *this;
10168 }
10169
10170 PresentRegionsKHR& setPNext( const void* pNext_ )
10171 {
10172 pNext = pNext_;
10173 return *this;
10174 }
10175
10176 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10177 {
10178 swapchainCount = swapchainCount_;
10179 return *this;
10180 }
10181
10182 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10183 {
10184 pRegions = pRegions_;
10185 return *this;
10186 }
10187
10188 operator const VkPresentRegionsKHR&() const
10189 {
10190 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10191 }
10192
10193 bool operator==( PresentRegionsKHR const& rhs ) const
10194 {
10195 return ( sType == rhs.sType )
10196 && ( pNext == rhs.pNext )
10197 && ( swapchainCount == rhs.swapchainCount )
10198 && ( pRegions == rhs.pRegions );
10199 }
10200
10201 bool operator!=( PresentRegionsKHR const& rhs ) const
10202 {
10203 return !operator==( rhs );
10204 }
10205
10206 private:
10207 StructureType sType;
10208
10209 public:
10210 const void* pNext;
10211 uint32_t swapchainCount;
10212 const PresentRegionKHR* pRegions;
10213 };
10214 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10215
Mark Young0f183a82017-02-28 09:58:04 -070010216 struct PhysicalDeviceIDPropertiesKHX
10217 {
10218 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10219 {
10220 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10221 }
10222
10223 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10224 {
10225 return ( sType == rhs.sType )
10226 && ( pNext == rhs.pNext )
10227 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10228 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10229 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10230 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10231 }
10232
10233 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10234 {
10235 return !operator==( rhs );
10236 }
10237
10238 private:
10239 StructureType sType;
10240
10241 public:
10242 void* pNext;
10243 uint8_t deviceUUID[VK_UUID_SIZE];
10244 uint8_t driverUUID[VK_UUID_SIZE];
10245 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10246 Bool32 deviceLUIDValid;
10247 };
10248 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10249
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010250#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010251 struct ExportMemoryWin32HandleInfoKHX
10252 {
10253 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10254 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10255 , pNext( nullptr )
10256 , pAttributes( pAttributes_ )
10257 , dwAccess( dwAccess_ )
10258 , name( name_ )
10259 {
10260 }
10261
10262 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10263 {
10264 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10265 }
10266
10267 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10268 {
10269 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10270 return *this;
10271 }
10272
10273 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10274 {
10275 pNext = pNext_;
10276 return *this;
10277 }
10278
10279 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10280 {
10281 pAttributes = pAttributes_;
10282 return *this;
10283 }
10284
10285 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10286 {
10287 dwAccess = dwAccess_;
10288 return *this;
10289 }
10290
10291 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10292 {
10293 name = name_;
10294 return *this;
10295 }
10296
10297 operator const VkExportMemoryWin32HandleInfoKHX&() const
10298 {
10299 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10300 }
10301
10302 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10303 {
10304 return ( sType == rhs.sType )
10305 && ( pNext == rhs.pNext )
10306 && ( pAttributes == rhs.pAttributes )
10307 && ( dwAccess == rhs.dwAccess )
10308 && ( name == rhs.name );
10309 }
10310
10311 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10312 {
10313 return !operator==( rhs );
10314 }
10315
10316 private:
10317 StructureType sType;
10318
10319 public:
10320 const void* pNext;
10321 const SECURITY_ATTRIBUTES* pAttributes;
10322 DWORD dwAccess;
10323 LPCWSTR name;
10324 };
10325 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010326#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010327
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010328#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010329 struct MemoryWin32HandlePropertiesKHX
10330 {
10331 operator const VkMemoryWin32HandlePropertiesKHX&() const
10332 {
10333 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10334 }
10335
10336 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10337 {
10338 return ( sType == rhs.sType )
10339 && ( pNext == rhs.pNext )
10340 && ( memoryTypeBits == rhs.memoryTypeBits );
10341 }
10342
10343 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10344 {
10345 return !operator==( rhs );
10346 }
10347
10348 private:
10349 StructureType sType;
10350
10351 public:
10352 void* pNext;
10353 uint32_t memoryTypeBits;
10354 };
10355 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010356#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010357
10358 struct MemoryFdPropertiesKHX
10359 {
10360 operator const VkMemoryFdPropertiesKHX&() const
10361 {
10362 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10363 }
10364
10365 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10366 {
10367 return ( sType == rhs.sType )
10368 && ( pNext == rhs.pNext )
10369 && ( memoryTypeBits == rhs.memoryTypeBits );
10370 }
10371
10372 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10373 {
10374 return !operator==( rhs );
10375 }
10376
10377 private:
10378 StructureType sType;
10379
10380 public:
10381 void* pNext;
10382 uint32_t memoryTypeBits;
10383 };
10384 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10385
10386#ifdef VK_USE_PLATFORM_WIN32_KHR
10387 struct Win32KeyedMutexAcquireReleaseInfoKHX
10388 {
10389 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 )
10390 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10391 , pNext( nullptr )
10392 , acquireCount( acquireCount_ )
10393 , pAcquireSyncs( pAcquireSyncs_ )
10394 , pAcquireKeys( pAcquireKeys_ )
10395 , pAcquireTimeouts( pAcquireTimeouts_ )
10396 , releaseCount( releaseCount_ )
10397 , pReleaseSyncs( pReleaseSyncs_ )
10398 , pReleaseKeys( pReleaseKeys_ )
10399 {
10400 }
10401
10402 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10403 {
10404 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10405 }
10406
10407 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10408 {
10409 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10410 return *this;
10411 }
10412
10413 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10414 {
10415 pNext = pNext_;
10416 return *this;
10417 }
10418
10419 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10420 {
10421 acquireCount = acquireCount_;
10422 return *this;
10423 }
10424
10425 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10426 {
10427 pAcquireSyncs = pAcquireSyncs_;
10428 return *this;
10429 }
10430
10431 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10432 {
10433 pAcquireKeys = pAcquireKeys_;
10434 return *this;
10435 }
10436
10437 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10438 {
10439 pAcquireTimeouts = pAcquireTimeouts_;
10440 return *this;
10441 }
10442
10443 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10444 {
10445 releaseCount = releaseCount_;
10446 return *this;
10447 }
10448
10449 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10450 {
10451 pReleaseSyncs = pReleaseSyncs_;
10452 return *this;
10453 }
10454
10455 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10456 {
10457 pReleaseKeys = pReleaseKeys_;
10458 return *this;
10459 }
10460
10461 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10462 {
10463 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10464 }
10465
10466 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10467 {
10468 return ( sType == rhs.sType )
10469 && ( pNext == rhs.pNext )
10470 && ( acquireCount == rhs.acquireCount )
10471 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10472 && ( pAcquireKeys == rhs.pAcquireKeys )
10473 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10474 && ( releaseCount == rhs.releaseCount )
10475 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10476 && ( pReleaseKeys == rhs.pReleaseKeys );
10477 }
10478
10479 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10480 {
10481 return !operator==( rhs );
10482 }
10483
10484 private:
10485 StructureType sType;
10486
10487 public:
10488 const void* pNext;
10489 uint32_t acquireCount;
10490 const DeviceMemory* pAcquireSyncs;
10491 const uint64_t* pAcquireKeys;
10492 const uint32_t* pAcquireTimeouts;
10493 uint32_t releaseCount;
10494 const DeviceMemory* pReleaseSyncs;
10495 const uint64_t* pReleaseKeys;
10496 };
10497 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10498#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10499
10500#ifdef VK_USE_PLATFORM_WIN32_KHX
10501 struct ExportSemaphoreWin32HandleInfoKHX
10502 {
10503 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10504 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10505 , pNext( nullptr )
10506 , pAttributes( pAttributes_ )
10507 , dwAccess( dwAccess_ )
10508 , name( name_ )
10509 {
10510 }
10511
10512 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10513 {
10514 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10515 }
10516
10517 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10518 {
10519 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10520 return *this;
10521 }
10522
10523 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10524 {
10525 pNext = pNext_;
10526 return *this;
10527 }
10528
10529 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10530 {
10531 pAttributes = pAttributes_;
10532 return *this;
10533 }
10534
10535 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10536 {
10537 dwAccess = dwAccess_;
10538 return *this;
10539 }
10540
10541 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10542 {
10543 name = name_;
10544 return *this;
10545 }
10546
10547 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10548 {
10549 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10550 }
10551
10552 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10553 {
10554 return ( sType == rhs.sType )
10555 && ( pNext == rhs.pNext )
10556 && ( pAttributes == rhs.pAttributes )
10557 && ( dwAccess == rhs.dwAccess )
10558 && ( name == rhs.name );
10559 }
10560
10561 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10562 {
10563 return !operator==( rhs );
10564 }
10565
10566 private:
10567 StructureType sType;
10568
10569 public:
10570 const void* pNext;
10571 const SECURITY_ATTRIBUTES* pAttributes;
10572 DWORD dwAccess;
10573 LPCWSTR name;
10574 };
10575 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10576#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10577
10578#ifdef VK_USE_PLATFORM_WIN32_KHX
10579 struct D3D12FenceSubmitInfoKHX
10580 {
10581 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10582 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10583 , pNext( nullptr )
10584 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10585 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10586 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10587 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10588 {
10589 }
10590
10591 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10592 {
10593 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10594 }
10595
10596 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10597 {
10598 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10599 return *this;
10600 }
10601
10602 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10603 {
10604 pNext = pNext_;
10605 return *this;
10606 }
10607
10608 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10609 {
10610 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10611 return *this;
10612 }
10613
10614 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10615 {
10616 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10617 return *this;
10618 }
10619
10620 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10621 {
10622 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10623 return *this;
10624 }
10625
10626 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10627 {
10628 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10629 return *this;
10630 }
10631
10632 operator const VkD3D12FenceSubmitInfoKHX&() const
10633 {
10634 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10635 }
10636
10637 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10638 {
10639 return ( sType == rhs.sType )
10640 && ( pNext == rhs.pNext )
10641 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10642 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10643 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10644 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10645 }
10646
10647 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10648 {
10649 return !operator==( rhs );
10650 }
10651
10652 private:
10653 StructureType sType;
10654
10655 public:
10656 const void* pNext;
10657 uint32_t waitSemaphoreValuesCount;
10658 const uint64_t* pWaitSemaphoreValues;
10659 uint32_t signalSemaphoreValuesCount;
10660 const uint64_t* pSignalSemaphoreValues;
10661 };
10662 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10663#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10664
10665 struct PhysicalDeviceMultiviewFeaturesKHX
10666 {
10667 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10668 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10669 , pNext( nullptr )
10670 , multiview( multiview_ )
10671 , multiviewGeometryShader( multiviewGeometryShader_ )
10672 , multiviewTessellationShader( multiviewTessellationShader_ )
10673 {
10674 }
10675
10676 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10677 {
10678 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10679 }
10680
10681 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10682 {
10683 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10684 return *this;
10685 }
10686
10687 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10688 {
10689 pNext = pNext_;
10690 return *this;
10691 }
10692
10693 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10694 {
10695 multiview = multiview_;
10696 return *this;
10697 }
10698
10699 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10700 {
10701 multiviewGeometryShader = multiviewGeometryShader_;
10702 return *this;
10703 }
10704
10705 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10706 {
10707 multiviewTessellationShader = multiviewTessellationShader_;
10708 return *this;
10709 }
10710
10711 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10712 {
10713 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10714 }
10715
10716 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10717 {
10718 return ( sType == rhs.sType )
10719 && ( pNext == rhs.pNext )
10720 && ( multiview == rhs.multiview )
10721 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10722 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10723 }
10724
10725 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10726 {
10727 return !operator==( rhs );
10728 }
10729
10730 private:
10731 StructureType sType;
10732
10733 public:
10734 void* pNext;
10735 Bool32 multiview;
10736 Bool32 multiviewGeometryShader;
10737 Bool32 multiviewTessellationShader;
10738 };
10739 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10740
10741 struct PhysicalDeviceMultiviewPropertiesKHX
10742 {
10743 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10744 {
10745 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10746 }
10747
10748 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10749 {
10750 return ( sType == rhs.sType )
10751 && ( pNext == rhs.pNext )
10752 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10753 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10754 }
10755
10756 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10757 {
10758 return !operator==( rhs );
10759 }
10760
10761 private:
10762 StructureType sType;
10763
10764 public:
10765 void* pNext;
10766 uint32_t maxMultiviewViewCount;
10767 uint32_t maxMultiviewInstanceIndex;
10768 };
10769 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10770
10771 struct RenderPassMultiviewCreateInfoKHX
10772 {
10773 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 )
10774 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10775 , pNext( nullptr )
10776 , subpassCount( subpassCount_ )
10777 , pViewMasks( pViewMasks_ )
10778 , dependencyCount( dependencyCount_ )
10779 , pViewOffsets( pViewOffsets_ )
10780 , correlationMaskCount( correlationMaskCount_ )
10781 , pCorrelationMasks( pCorrelationMasks_ )
10782 {
10783 }
10784
10785 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10786 {
10787 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10788 }
10789
10790 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10791 {
10792 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10793 return *this;
10794 }
10795
10796 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10797 {
10798 pNext = pNext_;
10799 return *this;
10800 }
10801
10802 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10803 {
10804 subpassCount = subpassCount_;
10805 return *this;
10806 }
10807
10808 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10809 {
10810 pViewMasks = pViewMasks_;
10811 return *this;
10812 }
10813
10814 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10815 {
10816 dependencyCount = dependencyCount_;
10817 return *this;
10818 }
10819
10820 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10821 {
10822 pViewOffsets = pViewOffsets_;
10823 return *this;
10824 }
10825
10826 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10827 {
10828 correlationMaskCount = correlationMaskCount_;
10829 return *this;
10830 }
10831
10832 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10833 {
10834 pCorrelationMasks = pCorrelationMasks_;
10835 return *this;
10836 }
10837
10838 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10839 {
10840 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10841 }
10842
10843 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10844 {
10845 return ( sType == rhs.sType )
10846 && ( pNext == rhs.pNext )
10847 && ( subpassCount == rhs.subpassCount )
10848 && ( pViewMasks == rhs.pViewMasks )
10849 && ( dependencyCount == rhs.dependencyCount )
10850 && ( pViewOffsets == rhs.pViewOffsets )
10851 && ( correlationMaskCount == rhs.correlationMaskCount )
10852 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10853 }
10854
10855 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10856 {
10857 return !operator==( rhs );
10858 }
10859
10860 private:
10861 StructureType sType;
10862
10863 public:
10864 const void* pNext;
10865 uint32_t subpassCount;
10866 const uint32_t* pViewMasks;
10867 uint32_t dependencyCount;
10868 const int32_t* pViewOffsets;
10869 uint32_t correlationMaskCount;
10870 const uint32_t* pCorrelationMasks;
10871 };
10872 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10873
10874 struct BindBufferMemoryInfoKHX
10875 {
10876 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10877 : sType( StructureType::eBindBufferMemoryInfoKHX )
10878 , pNext( nullptr )
10879 , buffer( buffer_ )
10880 , memory( memory_ )
10881 , memoryOffset( memoryOffset_ )
10882 , deviceIndexCount( deviceIndexCount_ )
10883 , pDeviceIndices( pDeviceIndices_ )
10884 {
10885 }
10886
10887 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10888 {
10889 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10890 }
10891
10892 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10893 {
10894 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10895 return *this;
10896 }
10897
10898 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10899 {
10900 pNext = pNext_;
10901 return *this;
10902 }
10903
10904 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10905 {
10906 buffer = buffer_;
10907 return *this;
10908 }
10909
10910 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10911 {
10912 memory = memory_;
10913 return *this;
10914 }
10915
10916 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10917 {
10918 memoryOffset = memoryOffset_;
10919 return *this;
10920 }
10921
10922 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10923 {
10924 deviceIndexCount = deviceIndexCount_;
10925 return *this;
10926 }
10927
10928 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10929 {
10930 pDeviceIndices = pDeviceIndices_;
10931 return *this;
10932 }
10933
10934 operator const VkBindBufferMemoryInfoKHX&() const
10935 {
10936 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10937 }
10938
10939 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10940 {
10941 return ( sType == rhs.sType )
10942 && ( pNext == rhs.pNext )
10943 && ( buffer == rhs.buffer )
10944 && ( memory == rhs.memory )
10945 && ( memoryOffset == rhs.memoryOffset )
10946 && ( deviceIndexCount == rhs.deviceIndexCount )
10947 && ( pDeviceIndices == rhs.pDeviceIndices );
10948 }
10949
10950 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10951 {
10952 return !operator==( rhs );
10953 }
10954
10955 private:
10956 StructureType sType;
10957
10958 public:
10959 const void* pNext;
10960 Buffer buffer;
10961 DeviceMemory memory;
10962 DeviceSize memoryOffset;
10963 uint32_t deviceIndexCount;
10964 const uint32_t* pDeviceIndices;
10965 };
10966 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10967
10968 struct BindImageMemoryInfoKHX
10969 {
10970 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 )
10971 : sType( StructureType::eBindImageMemoryInfoKHX )
10972 , pNext( nullptr )
10973 , image( image_ )
10974 , memory( memory_ )
10975 , memoryOffset( memoryOffset_ )
10976 , deviceIndexCount( deviceIndexCount_ )
10977 , pDeviceIndices( pDeviceIndices_ )
10978 , SFRRectCount( SFRRectCount_ )
10979 , pSFRRects( pSFRRects_ )
10980 {
10981 }
10982
10983 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10984 {
10985 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10986 }
10987
10988 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10989 {
10990 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10991 return *this;
10992 }
10993
10994 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10995 {
10996 pNext = pNext_;
10997 return *this;
10998 }
10999
11000 BindImageMemoryInfoKHX& setImage( Image image_ )
11001 {
11002 image = image_;
11003 return *this;
11004 }
11005
11006 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11007 {
11008 memory = memory_;
11009 return *this;
11010 }
11011
11012 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11013 {
11014 memoryOffset = memoryOffset_;
11015 return *this;
11016 }
11017
11018 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11019 {
11020 deviceIndexCount = deviceIndexCount_;
11021 return *this;
11022 }
11023
11024 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11025 {
11026 pDeviceIndices = pDeviceIndices_;
11027 return *this;
11028 }
11029
11030 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11031 {
11032 SFRRectCount = SFRRectCount_;
11033 return *this;
11034 }
11035
11036 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11037 {
11038 pSFRRects = pSFRRects_;
11039 return *this;
11040 }
11041
11042 operator const VkBindImageMemoryInfoKHX&() const
11043 {
11044 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11045 }
11046
11047 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11048 {
11049 return ( sType == rhs.sType )
11050 && ( pNext == rhs.pNext )
11051 && ( image == rhs.image )
11052 && ( memory == rhs.memory )
11053 && ( memoryOffset == rhs.memoryOffset )
11054 && ( deviceIndexCount == rhs.deviceIndexCount )
11055 && ( pDeviceIndices == rhs.pDeviceIndices )
11056 && ( SFRRectCount == rhs.SFRRectCount )
11057 && ( pSFRRects == rhs.pSFRRects );
11058 }
11059
11060 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11061 {
11062 return !operator==( rhs );
11063 }
11064
11065 private:
11066 StructureType sType;
11067
11068 public:
11069 const void* pNext;
11070 Image image;
11071 DeviceMemory memory;
11072 DeviceSize memoryOffset;
11073 uint32_t deviceIndexCount;
11074 const uint32_t* pDeviceIndices;
11075 uint32_t SFRRectCount;
11076 const Rect2D* pSFRRects;
11077 };
11078 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11079
11080 struct DeviceGroupRenderPassBeginInfoKHX
11081 {
11082 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11083 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11084 , pNext( nullptr )
11085 , deviceMask( deviceMask_ )
11086 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11087 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11088 {
11089 }
11090
11091 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11092 {
11093 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11094 }
11095
11096 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11097 {
11098 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11099 return *this;
11100 }
11101
11102 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11103 {
11104 pNext = pNext_;
11105 return *this;
11106 }
11107
11108 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11109 {
11110 deviceMask = deviceMask_;
11111 return *this;
11112 }
11113
11114 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11115 {
11116 deviceRenderAreaCount = deviceRenderAreaCount_;
11117 return *this;
11118 }
11119
11120 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11121 {
11122 pDeviceRenderAreas = pDeviceRenderAreas_;
11123 return *this;
11124 }
11125
11126 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11127 {
11128 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11129 }
11130
11131 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11132 {
11133 return ( sType == rhs.sType )
11134 && ( pNext == rhs.pNext )
11135 && ( deviceMask == rhs.deviceMask )
11136 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11137 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11138 }
11139
11140 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11141 {
11142 return !operator==( rhs );
11143 }
11144
11145 private:
11146 StructureType sType;
11147
11148 public:
11149 const void* pNext;
11150 uint32_t deviceMask;
11151 uint32_t deviceRenderAreaCount;
11152 const Rect2D* pDeviceRenderAreas;
11153 };
11154 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11155
11156 struct DeviceGroupCommandBufferBeginInfoKHX
11157 {
11158 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11159 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11160 , pNext( nullptr )
11161 , deviceMask( deviceMask_ )
11162 {
11163 }
11164
11165 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11166 {
11167 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11168 }
11169
11170 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11171 {
11172 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11173 return *this;
11174 }
11175
11176 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11177 {
11178 pNext = pNext_;
11179 return *this;
11180 }
11181
11182 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11183 {
11184 deviceMask = deviceMask_;
11185 return *this;
11186 }
11187
11188 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11189 {
11190 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11191 }
11192
11193 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11194 {
11195 return ( sType == rhs.sType )
11196 && ( pNext == rhs.pNext )
11197 && ( deviceMask == rhs.deviceMask );
11198 }
11199
11200 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11201 {
11202 return !operator==( rhs );
11203 }
11204
11205 private:
11206 StructureType sType;
11207
11208 public:
11209 const void* pNext;
11210 uint32_t deviceMask;
11211 };
11212 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11213
11214 struct DeviceGroupSubmitInfoKHX
11215 {
11216 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 )
11217 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11218 , pNext( nullptr )
11219 , waitSemaphoreCount( waitSemaphoreCount_ )
11220 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11221 , commandBufferCount( commandBufferCount_ )
11222 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11223 , signalSemaphoreCount( signalSemaphoreCount_ )
11224 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11225 {
11226 }
11227
11228 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11229 {
11230 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11231 }
11232
11233 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11234 {
11235 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11236 return *this;
11237 }
11238
11239 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11240 {
11241 pNext = pNext_;
11242 return *this;
11243 }
11244
11245 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11246 {
11247 waitSemaphoreCount = waitSemaphoreCount_;
11248 return *this;
11249 }
11250
11251 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11252 {
11253 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11254 return *this;
11255 }
11256
11257 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11258 {
11259 commandBufferCount = commandBufferCount_;
11260 return *this;
11261 }
11262
11263 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11264 {
11265 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11266 return *this;
11267 }
11268
11269 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11270 {
11271 signalSemaphoreCount = signalSemaphoreCount_;
11272 return *this;
11273 }
11274
11275 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11276 {
11277 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11278 return *this;
11279 }
11280
11281 operator const VkDeviceGroupSubmitInfoKHX&() const
11282 {
11283 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11284 }
11285
11286 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11287 {
11288 return ( sType == rhs.sType )
11289 && ( pNext == rhs.pNext )
11290 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11291 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11292 && ( commandBufferCount == rhs.commandBufferCount )
11293 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11294 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11295 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11296 }
11297
11298 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11299 {
11300 return !operator==( rhs );
11301 }
11302
11303 private:
11304 StructureType sType;
11305
11306 public:
11307 const void* pNext;
11308 uint32_t waitSemaphoreCount;
11309 const uint32_t* pWaitSemaphoreDeviceIndices;
11310 uint32_t commandBufferCount;
11311 const uint32_t* pCommandBufferDeviceMasks;
11312 uint32_t signalSemaphoreCount;
11313 const uint32_t* pSignalSemaphoreDeviceIndices;
11314 };
11315 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11316
11317 struct DeviceGroupBindSparseInfoKHX
11318 {
11319 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11320 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11321 , pNext( nullptr )
11322 , resourceDeviceIndex( resourceDeviceIndex_ )
11323 , memoryDeviceIndex( memoryDeviceIndex_ )
11324 {
11325 }
11326
11327 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11328 {
11329 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11330 }
11331
11332 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11333 {
11334 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11335 return *this;
11336 }
11337
11338 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11339 {
11340 pNext = pNext_;
11341 return *this;
11342 }
11343
11344 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11345 {
11346 resourceDeviceIndex = resourceDeviceIndex_;
11347 return *this;
11348 }
11349
11350 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11351 {
11352 memoryDeviceIndex = memoryDeviceIndex_;
11353 return *this;
11354 }
11355
11356 operator const VkDeviceGroupBindSparseInfoKHX&() const
11357 {
11358 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11359 }
11360
11361 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11362 {
11363 return ( sType == rhs.sType )
11364 && ( pNext == rhs.pNext )
11365 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11366 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11367 }
11368
11369 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11370 {
11371 return !operator==( rhs );
11372 }
11373
11374 private:
11375 StructureType sType;
11376
11377 public:
11378 const void* pNext;
11379 uint32_t resourceDeviceIndex;
11380 uint32_t memoryDeviceIndex;
11381 };
11382 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11383
11384 struct ImageSwapchainCreateInfoKHX
11385 {
11386 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11387 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11388 , pNext( nullptr )
11389 , swapchain( swapchain_ )
11390 {
11391 }
11392
11393 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11394 {
11395 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11396 }
11397
11398 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11399 {
11400 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11401 return *this;
11402 }
11403
11404 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11405 {
11406 pNext = pNext_;
11407 return *this;
11408 }
11409
11410 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11411 {
11412 swapchain = swapchain_;
11413 return *this;
11414 }
11415
11416 operator const VkImageSwapchainCreateInfoKHX&() const
11417 {
11418 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11419 }
11420
11421 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11422 {
11423 return ( sType == rhs.sType )
11424 && ( pNext == rhs.pNext )
11425 && ( swapchain == rhs.swapchain );
11426 }
11427
11428 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11429 {
11430 return !operator==( rhs );
11431 }
11432
11433 private:
11434 StructureType sType;
11435
11436 public:
11437 const void* pNext;
11438 SwapchainKHR swapchain;
11439 };
11440 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11441
11442 struct BindImageMemorySwapchainInfoKHX
11443 {
11444 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11445 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11446 , pNext( nullptr )
11447 , swapchain( swapchain_ )
11448 , imageIndex( imageIndex_ )
11449 {
11450 }
11451
11452 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11453 {
11454 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11455 }
11456
11457 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11458 {
11459 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11460 return *this;
11461 }
11462
11463 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11464 {
11465 pNext = pNext_;
11466 return *this;
11467 }
11468
11469 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11470 {
11471 swapchain = swapchain_;
11472 return *this;
11473 }
11474
11475 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11476 {
11477 imageIndex = imageIndex_;
11478 return *this;
11479 }
11480
11481 operator const VkBindImageMemorySwapchainInfoKHX&() const
11482 {
11483 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11484 }
11485
11486 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11487 {
11488 return ( sType == rhs.sType )
11489 && ( pNext == rhs.pNext )
11490 && ( swapchain == rhs.swapchain )
11491 && ( imageIndex == rhs.imageIndex );
11492 }
11493
11494 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11495 {
11496 return !operator==( rhs );
11497 }
11498
11499 private:
11500 StructureType sType;
11501
11502 public:
11503 const void* pNext;
11504 SwapchainKHR swapchain;
11505 uint32_t imageIndex;
11506 };
11507 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11508
11509 struct AcquireNextImageInfoKHX
11510 {
11511 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11512 : sType( StructureType::eAcquireNextImageInfoKHX )
11513 , pNext( nullptr )
11514 , swapchain( swapchain_ )
11515 , timeout( timeout_ )
11516 , semaphore( semaphore_ )
11517 , fence( fence_ )
11518 , deviceMask( deviceMask_ )
11519 {
11520 }
11521
11522 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11523 {
11524 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11525 }
11526
11527 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11528 {
11529 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11530 return *this;
11531 }
11532
11533 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11534 {
11535 pNext = pNext_;
11536 return *this;
11537 }
11538
11539 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11540 {
11541 swapchain = swapchain_;
11542 return *this;
11543 }
11544
11545 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11546 {
11547 timeout = timeout_;
11548 return *this;
11549 }
11550
11551 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11552 {
11553 semaphore = semaphore_;
11554 return *this;
11555 }
11556
11557 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11558 {
11559 fence = fence_;
11560 return *this;
11561 }
11562
11563 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11564 {
11565 deviceMask = deviceMask_;
11566 return *this;
11567 }
11568
11569 operator const VkAcquireNextImageInfoKHX&() const
11570 {
11571 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11572 }
11573
11574 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11575 {
11576 return ( sType == rhs.sType )
11577 && ( pNext == rhs.pNext )
11578 && ( swapchain == rhs.swapchain )
11579 && ( timeout == rhs.timeout )
11580 && ( semaphore == rhs.semaphore )
11581 && ( fence == rhs.fence )
11582 && ( deviceMask == rhs.deviceMask );
11583 }
11584
11585 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11586 {
11587 return !operator==( rhs );
11588 }
11589
11590 private:
11591 StructureType sType;
11592
11593 public:
11594 const void* pNext;
11595 SwapchainKHR swapchain;
11596 uint64_t timeout;
11597 Semaphore semaphore;
11598 Fence fence;
11599 uint32_t deviceMask;
11600 };
11601 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11602
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011603 struct HdrMetadataEXT
11604 {
11605 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 )
11606 : sType( StructureType::eHdrMetadataEXT )
11607 , pNext( nullptr )
11608 , displayPrimaryRed( displayPrimaryRed_ )
11609 , displayPrimaryGreen( displayPrimaryGreen_ )
11610 , displayPrimaryBlue( displayPrimaryBlue_ )
11611 , whitePoint( whitePoint_ )
11612 , maxLuminance( maxLuminance_ )
11613 , minLuminance( minLuminance_ )
11614 , maxContentLightLevel( maxContentLightLevel_ )
11615 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11616 {
11617 }
11618
11619 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11620 {
11621 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11622 }
11623
11624 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11625 {
11626 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11627 return *this;
11628 }
11629
11630 HdrMetadataEXT& setPNext( const void* pNext_ )
11631 {
11632 pNext = pNext_;
11633 return *this;
11634 }
11635
11636 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11637 {
11638 displayPrimaryRed = displayPrimaryRed_;
11639 return *this;
11640 }
11641
11642 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11643 {
11644 displayPrimaryGreen = displayPrimaryGreen_;
11645 return *this;
11646 }
11647
11648 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11649 {
11650 displayPrimaryBlue = displayPrimaryBlue_;
11651 return *this;
11652 }
11653
11654 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11655 {
11656 whitePoint = whitePoint_;
11657 return *this;
11658 }
11659
11660 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11661 {
11662 maxLuminance = maxLuminance_;
11663 return *this;
11664 }
11665
11666 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11667 {
11668 minLuminance = minLuminance_;
11669 return *this;
11670 }
11671
11672 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11673 {
11674 maxContentLightLevel = maxContentLightLevel_;
11675 return *this;
11676 }
11677
11678 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11679 {
11680 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11681 return *this;
11682 }
11683
11684 operator const VkHdrMetadataEXT&() const
11685 {
11686 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11687 }
11688
11689 bool operator==( HdrMetadataEXT const& rhs ) const
11690 {
11691 return ( sType == rhs.sType )
11692 && ( pNext == rhs.pNext )
11693 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11694 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11695 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11696 && ( whitePoint == rhs.whitePoint )
11697 && ( maxLuminance == rhs.maxLuminance )
11698 && ( minLuminance == rhs.minLuminance )
11699 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11700 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11701 }
11702
11703 bool operator!=( HdrMetadataEXT const& rhs ) const
11704 {
11705 return !operator==( rhs );
11706 }
11707
11708 private:
11709 StructureType sType;
11710
11711 public:
11712 const void* pNext;
11713 XYColorEXT displayPrimaryRed;
11714 XYColorEXT displayPrimaryGreen;
11715 XYColorEXT displayPrimaryBlue;
11716 XYColorEXT whitePoint;
11717 float maxLuminance;
11718 float minLuminance;
11719 float maxContentLightLevel;
11720 float maxFrameAverageLightLevel;
11721 };
11722 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11723
11724 struct PresentTimesInfoGOOGLE
11725 {
11726 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11727 : sType( StructureType::ePresentTimesInfoGOOGLE )
11728 , pNext( nullptr )
11729 , swapchainCount( swapchainCount_ )
11730 , pTimes( pTimes_ )
11731 {
11732 }
11733
11734 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11735 {
11736 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11737 }
11738
11739 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11740 {
11741 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11742 return *this;
11743 }
11744
11745 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11746 {
11747 pNext = pNext_;
11748 return *this;
11749 }
11750
11751 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11752 {
11753 swapchainCount = swapchainCount_;
11754 return *this;
11755 }
11756
11757 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11758 {
11759 pTimes = pTimes_;
11760 return *this;
11761 }
11762
11763 operator const VkPresentTimesInfoGOOGLE&() const
11764 {
11765 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11766 }
11767
11768 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11769 {
11770 return ( sType == rhs.sType )
11771 && ( pNext == rhs.pNext )
11772 && ( swapchainCount == rhs.swapchainCount )
11773 && ( pTimes == rhs.pTimes );
11774 }
11775
11776 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11777 {
11778 return !operator==( rhs );
11779 }
11780
11781 private:
11782 StructureType sType;
11783
11784 public:
11785 const void* pNext;
11786 uint32_t swapchainCount;
11787 const PresentTimeGOOGLE* pTimes;
11788 };
11789 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11790
Mark Young0f183a82017-02-28 09:58:04 -070011791#ifdef VK_USE_PLATFORM_IOS_MVK
11792 struct IOSSurfaceCreateInfoMVK
11793 {
11794 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11795 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11796 , pNext( nullptr )
11797 , flags( flags_ )
11798 , pView( pView_ )
11799 {
11800 }
11801
11802 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11803 {
11804 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11805 }
11806
11807 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11808 {
11809 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11810 return *this;
11811 }
11812
11813 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11814 {
11815 pNext = pNext_;
11816 return *this;
11817 }
11818
11819 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11820 {
11821 flags = flags_;
11822 return *this;
11823 }
11824
11825 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11826 {
11827 pView = pView_;
11828 return *this;
11829 }
11830
11831 operator const VkIOSSurfaceCreateInfoMVK&() const
11832 {
11833 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11834 }
11835
11836 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11837 {
11838 return ( sType == rhs.sType )
11839 && ( pNext == rhs.pNext )
11840 && ( flags == rhs.flags )
11841 && ( pView == rhs.pView );
11842 }
11843
11844 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11845 {
11846 return !operator==( rhs );
11847 }
11848
11849 private:
11850 StructureType sType;
11851
11852 public:
11853 const void* pNext;
11854 IOSSurfaceCreateFlagsMVK flags;
11855 const void* pView;
11856 };
11857 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11858#endif /*VK_USE_PLATFORM_IOS_MVK*/
11859
11860#ifdef VK_USE_PLATFORM_MACOS_MVK
11861 struct MacOSSurfaceCreateInfoMVK
11862 {
11863 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11864 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11865 , pNext( nullptr )
11866 , flags( flags_ )
11867 , pView( pView_ )
11868 {
11869 }
11870
11871 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11872 {
11873 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11874 }
11875
11876 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11877 {
11878 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11879 return *this;
11880 }
11881
11882 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11883 {
11884 pNext = pNext_;
11885 return *this;
11886 }
11887
11888 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11889 {
11890 flags = flags_;
11891 return *this;
11892 }
11893
11894 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11895 {
11896 pView = pView_;
11897 return *this;
11898 }
11899
11900 operator const VkMacOSSurfaceCreateInfoMVK&() const
11901 {
11902 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11903 }
11904
11905 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11906 {
11907 return ( sType == rhs.sType )
11908 && ( pNext == rhs.pNext )
11909 && ( flags == rhs.flags )
11910 && ( pView == rhs.pView );
11911 }
11912
11913 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11914 {
11915 return !operator==( rhs );
11916 }
11917
11918 private:
11919 StructureType sType;
11920
11921 public:
11922 const void* pNext;
11923 MacOSSurfaceCreateFlagsMVK flags;
11924 const void* pView;
11925 };
11926 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11927#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11928
11929 struct PipelineViewportWScalingStateCreateInfoNV
11930 {
11931 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11932 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11933 , pNext( nullptr )
11934 , viewportWScalingEnable( viewportWScalingEnable_ )
11935 , viewportCount( viewportCount_ )
11936 , pViewportWScalings( pViewportWScalings_ )
11937 {
11938 }
11939
11940 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11941 {
11942 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11943 }
11944
11945 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11946 {
11947 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11948 return *this;
11949 }
11950
11951 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11952 {
11953 pNext = pNext_;
11954 return *this;
11955 }
11956
11957 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11958 {
11959 viewportWScalingEnable = viewportWScalingEnable_;
11960 return *this;
11961 }
11962
11963 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11964 {
11965 viewportCount = viewportCount_;
11966 return *this;
11967 }
11968
11969 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11970 {
11971 pViewportWScalings = pViewportWScalings_;
11972 return *this;
11973 }
11974
11975 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11976 {
11977 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11978 }
11979
11980 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11981 {
11982 return ( sType == rhs.sType )
11983 && ( pNext == rhs.pNext )
11984 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11985 && ( viewportCount == rhs.viewportCount )
11986 && ( pViewportWScalings == rhs.pViewportWScalings );
11987 }
11988
11989 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11990 {
11991 return !operator==( rhs );
11992 }
11993
11994 private:
11995 StructureType sType;
11996
11997 public:
11998 const void* pNext;
11999 Bool32 viewportWScalingEnable;
12000 uint32_t viewportCount;
12001 const ViewportWScalingNV* pViewportWScalings;
12002 };
12003 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12004
12005 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12006 {
12007 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12008 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12009 , pNext( nullptr )
12010 , maxDiscardRectangles( maxDiscardRectangles_ )
12011 {
12012 }
12013
12014 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12015 {
12016 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12017 }
12018
12019 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12020 {
12021 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12022 return *this;
12023 }
12024
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012025 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012026 {
12027 pNext = pNext_;
12028 return *this;
12029 }
12030
12031 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12032 {
12033 maxDiscardRectangles = maxDiscardRectangles_;
12034 return *this;
12035 }
12036
12037 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12038 {
12039 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12040 }
12041
12042 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12043 {
12044 return ( sType == rhs.sType )
12045 && ( pNext == rhs.pNext )
12046 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12047 }
12048
12049 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12050 {
12051 return !operator==( rhs );
12052 }
12053
12054 private:
12055 StructureType sType;
12056
12057 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012058 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012059 uint32_t maxDiscardRectangles;
12060 };
12061 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12062
12063 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12064 {
12065 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12066 {
12067 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12068 }
12069
12070 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12071 {
12072 return ( sType == rhs.sType )
12073 && ( pNext == rhs.pNext )
12074 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12075 }
12076
12077 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12078 {
12079 return !operator==( rhs );
12080 }
12081
12082 private:
12083 StructureType sType;
12084
12085 public:
12086 void* pNext;
12087 Bool32 perViewPositionAllComponents;
12088 };
12089 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12090
Mark Lobodzinski54385432017-05-15 10:27:52 -060012091 struct PhysicalDeviceSurfaceInfo2KHR
12092 {
12093 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12094 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12095 , pNext( nullptr )
12096 , surface( surface_ )
12097 {
12098 }
12099
12100 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12101 {
12102 memcpy( this, &rhs, sizeof(PhysicalDeviceSurfaceInfo2KHR) );
12103 }
12104
12105 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12106 {
12107 memcpy( this, &rhs, sizeof(PhysicalDeviceSurfaceInfo2KHR) );
12108 return *this;
12109 }
12110
12111 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12112 {
12113 pNext = pNext_;
12114 return *this;
12115 }
12116
12117 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12118 {
12119 surface = surface_;
12120 return *this;
12121 }
12122
12123 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12124 {
12125 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12126 }
12127
12128 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12129 {
12130 return ( sType == rhs.sType )
12131 && ( pNext == rhs.pNext )
12132 && ( surface == rhs.surface );
12133 }
12134
12135 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12136 {
12137 return !operator==( rhs );
12138 }
12139
12140 private:
12141 StructureType sType;
12142
12143 public:
12144 const void* pNext;
12145 SurfaceKHR surface;
12146 };
12147 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12148
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012149 enum class SubpassContents
12150 {
12151 eInline = VK_SUBPASS_CONTENTS_INLINE,
12152 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
12153 };
12154
12155 struct PresentInfoKHR
12156 {
12157 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 )
12158 : sType( StructureType::ePresentInfoKHR )
12159 , pNext( nullptr )
12160 , waitSemaphoreCount( waitSemaphoreCount_ )
12161 , pWaitSemaphores( pWaitSemaphores_ )
12162 , swapchainCount( swapchainCount_ )
12163 , pSwapchains( pSwapchains_ )
12164 , pImageIndices( pImageIndices_ )
12165 , pResults( pResults_ )
12166 {
12167 }
12168
12169 PresentInfoKHR( VkPresentInfoKHR const & rhs )
12170 {
12171 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12172 }
12173
12174 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
12175 {
12176 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12177 return *this;
12178 }
12179
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012180 PresentInfoKHR& setPNext( const void* pNext_ )
12181 {
12182 pNext = pNext_;
12183 return *this;
12184 }
12185
12186 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
12187 {
12188 waitSemaphoreCount = waitSemaphoreCount_;
12189 return *this;
12190 }
12191
12192 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
12193 {
12194 pWaitSemaphores = pWaitSemaphores_;
12195 return *this;
12196 }
12197
12198 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
12199 {
12200 swapchainCount = swapchainCount_;
12201 return *this;
12202 }
12203
12204 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
12205 {
12206 pSwapchains = pSwapchains_;
12207 return *this;
12208 }
12209
12210 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
12211 {
12212 pImageIndices = pImageIndices_;
12213 return *this;
12214 }
12215
12216 PresentInfoKHR& setPResults( Result* pResults_ )
12217 {
12218 pResults = pResults_;
12219 return *this;
12220 }
12221
12222 operator const VkPresentInfoKHR&() const
12223 {
12224 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
12225 }
12226
12227 bool operator==( PresentInfoKHR const& rhs ) const
12228 {
12229 return ( sType == rhs.sType )
12230 && ( pNext == rhs.pNext )
12231 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12232 && ( pWaitSemaphores == rhs.pWaitSemaphores )
12233 && ( swapchainCount == rhs.swapchainCount )
12234 && ( pSwapchains == rhs.pSwapchains )
12235 && ( pImageIndices == rhs.pImageIndices )
12236 && ( pResults == rhs.pResults );
12237 }
12238
12239 bool operator!=( PresentInfoKHR const& rhs ) const
12240 {
12241 return !operator==( rhs );
12242 }
12243
12244 private:
12245 StructureType sType;
12246
12247 public:
12248 const void* pNext;
12249 uint32_t waitSemaphoreCount;
12250 const Semaphore* pWaitSemaphores;
12251 uint32_t swapchainCount;
12252 const SwapchainKHR* pSwapchains;
12253 const uint32_t* pImageIndices;
12254 Result* pResults;
12255 };
12256 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12257
12258 enum class DynamicState
12259 {
12260 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12261 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12262 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12263 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12264 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12265 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12266 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12267 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012268 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12269 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12270 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012271 };
12272
12273 struct PipelineDynamicStateCreateInfo
12274 {
12275 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12276 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12277 , pNext( nullptr )
12278 , flags( flags_ )
12279 , dynamicStateCount( dynamicStateCount_ )
12280 , pDynamicStates( pDynamicStates_ )
12281 {
12282 }
12283
12284 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12285 {
12286 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12287 }
12288
12289 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12290 {
12291 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12292 return *this;
12293 }
12294
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012295 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12296 {
12297 pNext = pNext_;
12298 return *this;
12299 }
12300
12301 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12302 {
12303 flags = flags_;
12304 return *this;
12305 }
12306
12307 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12308 {
12309 dynamicStateCount = dynamicStateCount_;
12310 return *this;
12311 }
12312
12313 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12314 {
12315 pDynamicStates = pDynamicStates_;
12316 return *this;
12317 }
12318
12319 operator const VkPipelineDynamicStateCreateInfo&() const
12320 {
12321 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12322 }
12323
12324 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12325 {
12326 return ( sType == rhs.sType )
12327 && ( pNext == rhs.pNext )
12328 && ( flags == rhs.flags )
12329 && ( dynamicStateCount == rhs.dynamicStateCount )
12330 && ( pDynamicStates == rhs.pDynamicStates );
12331 }
12332
12333 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12334 {
12335 return !operator==( rhs );
12336 }
12337
12338 private:
12339 StructureType sType;
12340
12341 public:
12342 const void* pNext;
12343 PipelineDynamicStateCreateFlags flags;
12344 uint32_t dynamicStateCount;
12345 const DynamicState* pDynamicStates;
12346 };
12347 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12348
Mark Young0f183a82017-02-28 09:58:04 -070012349 enum class DescriptorUpdateTemplateTypeKHR
12350 {
12351 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12352 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12353 };
12354
12355 struct DescriptorUpdateTemplateCreateInfoKHR
12356 {
12357 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 )
12358 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12359 , pNext( nullptr )
12360 , flags( flags_ )
12361 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12362 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12363 , templateType( templateType_ )
12364 , descriptorSetLayout( descriptorSetLayout_ )
12365 , pipelineBindPoint( pipelineBindPoint_ )
12366 , pipelineLayout( pipelineLayout_ )
12367 , set( set_ )
12368 {
12369 }
12370
12371 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12372 {
12373 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12374 }
12375
12376 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12377 {
12378 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12379 return *this;
12380 }
12381
12382 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12383 {
12384 pNext = pNext_;
12385 return *this;
12386 }
12387
12388 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12389 {
12390 flags = flags_;
12391 return *this;
12392 }
12393
12394 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12395 {
12396 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12397 return *this;
12398 }
12399
12400 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12401 {
12402 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12403 return *this;
12404 }
12405
12406 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12407 {
12408 templateType = templateType_;
12409 return *this;
12410 }
12411
12412 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12413 {
12414 descriptorSetLayout = descriptorSetLayout_;
12415 return *this;
12416 }
12417
12418 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12419 {
12420 pipelineBindPoint = pipelineBindPoint_;
12421 return *this;
12422 }
12423
12424 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12425 {
12426 pipelineLayout = pipelineLayout_;
12427 return *this;
12428 }
12429
12430 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12431 {
12432 set = set_;
12433 return *this;
12434 }
12435
12436 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12437 {
12438 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12439 }
12440
12441 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12442 {
12443 return ( sType == rhs.sType )
12444 && ( pNext == rhs.pNext )
12445 && ( flags == rhs.flags )
12446 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12447 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12448 && ( templateType == rhs.templateType )
12449 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12450 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12451 && ( pipelineLayout == rhs.pipelineLayout )
12452 && ( set == rhs.set );
12453 }
12454
12455 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12456 {
12457 return !operator==( rhs );
12458 }
12459
12460 private:
12461 StructureType sType;
12462
12463 public:
12464 void* pNext;
12465 DescriptorUpdateTemplateCreateFlagsKHR flags;
12466 uint32_t descriptorUpdateEntryCount;
12467 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12468 DescriptorUpdateTemplateTypeKHR templateType;
12469 DescriptorSetLayout descriptorSetLayout;
12470 PipelineBindPoint pipelineBindPoint;
12471 PipelineLayout pipelineLayout;
12472 uint32_t set;
12473 };
12474 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12475
Mark Lobodzinski54385432017-05-15 10:27:52 -060012476 enum class ObjectType
12477 {
12478 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
12479 eInstance = VK_OBJECT_TYPE_INSTANCE,
12480 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
12481 eDevice = VK_OBJECT_TYPE_DEVICE,
12482 eQueue = VK_OBJECT_TYPE_QUEUE,
12483 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
12484 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
12485 eFence = VK_OBJECT_TYPE_FENCE,
12486 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
12487 eBuffer = VK_OBJECT_TYPE_BUFFER,
12488 eImage = VK_OBJECT_TYPE_IMAGE,
12489 eEvent = VK_OBJECT_TYPE_EVENT,
12490 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
12491 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
12492 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
12493 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
12494 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
12495 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
12496 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
12497 ePipeline = VK_OBJECT_TYPE_PIPELINE,
12498 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
12499 eSampler = VK_OBJECT_TYPE_SAMPLER,
12500 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
12501 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
12502 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
12503 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
12504 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
12505 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
12506 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
12507 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
12508 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
12509 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
12510 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
12511 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
12512 };
12513
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012514 enum class QueueFlagBits
12515 {
12516 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12517 eCompute = VK_QUEUE_COMPUTE_BIT,
12518 eTransfer = VK_QUEUE_TRANSFER_BIT,
12519 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12520 };
12521
12522 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012524 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012525 {
12526 return QueueFlags( bit0 ) | bit1;
12527 }
12528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012529 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12530 {
12531 return ~( QueueFlags( bits ) );
12532 }
12533
12534 template <> struct FlagTraits<QueueFlagBits>
12535 {
12536 enum
12537 {
12538 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12539 };
12540 };
12541
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012542 struct QueueFamilyProperties
12543 {
12544 operator const VkQueueFamilyProperties&() const
12545 {
12546 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12547 }
12548
12549 bool operator==( QueueFamilyProperties const& rhs ) const
12550 {
12551 return ( queueFlags == rhs.queueFlags )
12552 && ( queueCount == rhs.queueCount )
12553 && ( timestampValidBits == rhs.timestampValidBits )
12554 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12555 }
12556
12557 bool operator!=( QueueFamilyProperties const& rhs ) const
12558 {
12559 return !operator==( rhs );
12560 }
12561
12562 QueueFlags queueFlags;
12563 uint32_t queueCount;
12564 uint32_t timestampValidBits;
12565 Extent3D minImageTransferGranularity;
12566 };
12567 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12568
Mark Young39389872017-01-19 21:10:49 -070012569 struct QueueFamilyProperties2KHR
12570 {
12571 operator const VkQueueFamilyProperties2KHR&() const
12572 {
12573 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12574 }
12575
12576 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12577 {
12578 return ( sType == rhs.sType )
12579 && ( pNext == rhs.pNext )
12580 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12581 }
12582
12583 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12584 {
12585 return !operator==( rhs );
12586 }
12587
12588 private:
12589 StructureType sType;
12590
12591 public:
12592 void* pNext;
12593 QueueFamilyProperties queueFamilyProperties;
12594 };
12595 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12596
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012597 enum class MemoryPropertyFlagBits
12598 {
12599 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12600 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12601 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12602 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12603 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12604 };
12605
12606 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12607
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012608 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012609 {
12610 return MemoryPropertyFlags( bit0 ) | bit1;
12611 }
12612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012613 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12614 {
12615 return ~( MemoryPropertyFlags( bits ) );
12616 }
12617
12618 template <> struct FlagTraits<MemoryPropertyFlagBits>
12619 {
12620 enum
12621 {
12622 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12623 };
12624 };
12625
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012626 struct MemoryType
12627 {
12628 operator const VkMemoryType&() const
12629 {
12630 return *reinterpret_cast<const VkMemoryType*>(this);
12631 }
12632
12633 bool operator==( MemoryType const& rhs ) const
12634 {
12635 return ( propertyFlags == rhs.propertyFlags )
12636 && ( heapIndex == rhs.heapIndex );
12637 }
12638
12639 bool operator!=( MemoryType const& rhs ) const
12640 {
12641 return !operator==( rhs );
12642 }
12643
12644 MemoryPropertyFlags propertyFlags;
12645 uint32_t heapIndex;
12646 };
12647 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12648
12649 enum class MemoryHeapFlagBits
12650 {
Mark Young0f183a82017-02-28 09:58:04 -070012651 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12652 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012653 };
12654
12655 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12656
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012657 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012658 {
12659 return MemoryHeapFlags( bit0 ) | bit1;
12660 }
12661
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012662 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12663 {
12664 return ~( MemoryHeapFlags( bits ) );
12665 }
12666
12667 template <> struct FlagTraits<MemoryHeapFlagBits>
12668 {
12669 enum
12670 {
Mark Young0f183a82017-02-28 09:58:04 -070012671 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012672 };
12673 };
12674
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012675 struct MemoryHeap
12676 {
12677 operator const VkMemoryHeap&() const
12678 {
12679 return *reinterpret_cast<const VkMemoryHeap*>(this);
12680 }
12681
12682 bool operator==( MemoryHeap const& rhs ) const
12683 {
12684 return ( size == rhs.size )
12685 && ( flags == rhs.flags );
12686 }
12687
12688 bool operator!=( MemoryHeap const& rhs ) const
12689 {
12690 return !operator==( rhs );
12691 }
12692
12693 DeviceSize size;
12694 MemoryHeapFlags flags;
12695 };
12696 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12697
12698 struct PhysicalDeviceMemoryProperties
12699 {
12700 operator const VkPhysicalDeviceMemoryProperties&() const
12701 {
12702 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12703 }
12704
12705 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12706 {
12707 return ( memoryTypeCount == rhs.memoryTypeCount )
12708 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12709 && ( memoryHeapCount == rhs.memoryHeapCount )
12710 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12711 }
12712
12713 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12714 {
12715 return !operator==( rhs );
12716 }
12717
12718 uint32_t memoryTypeCount;
12719 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12720 uint32_t memoryHeapCount;
12721 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12722 };
12723 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12724
Mark Young39389872017-01-19 21:10:49 -070012725 struct PhysicalDeviceMemoryProperties2KHR
12726 {
12727 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12728 {
12729 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12730 }
12731
12732 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12733 {
12734 return ( sType == rhs.sType )
12735 && ( pNext == rhs.pNext )
12736 && ( memoryProperties == rhs.memoryProperties );
12737 }
12738
12739 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12740 {
12741 return !operator==( rhs );
12742 }
12743
12744 private:
12745 StructureType sType;
12746
12747 public:
12748 void* pNext;
12749 PhysicalDeviceMemoryProperties memoryProperties;
12750 };
12751 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12752
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012753 enum class AccessFlagBits
12754 {
12755 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12756 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12757 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12758 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12759 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12760 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12761 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12762 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12763 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12764 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12765 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12766 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12767 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12768 eHostRead = VK_ACCESS_HOST_READ_BIT,
12769 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12770 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012771 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12772 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12773 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012774 };
12775
12776 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12777
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012778 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012779 {
12780 return AccessFlags( bit0 ) | bit1;
12781 }
12782
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012783 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12784 {
12785 return ~( AccessFlags( bits ) );
12786 }
12787
12788 template <> struct FlagTraits<AccessFlagBits>
12789 {
12790 enum
12791 {
12792 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)
12793 };
12794 };
12795
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012796 struct MemoryBarrier
12797 {
12798 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12799 : sType( StructureType::eMemoryBarrier )
12800 , pNext( nullptr )
12801 , srcAccessMask( srcAccessMask_ )
12802 , dstAccessMask( dstAccessMask_ )
12803 {
12804 }
12805
12806 MemoryBarrier( VkMemoryBarrier const & rhs )
12807 {
12808 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12809 }
12810
12811 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12812 {
12813 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12814 return *this;
12815 }
12816
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012817 MemoryBarrier& setPNext( const void* pNext_ )
12818 {
12819 pNext = pNext_;
12820 return *this;
12821 }
12822
12823 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12824 {
12825 srcAccessMask = srcAccessMask_;
12826 return *this;
12827 }
12828
12829 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12830 {
12831 dstAccessMask = dstAccessMask_;
12832 return *this;
12833 }
12834
12835 operator const VkMemoryBarrier&() const
12836 {
12837 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12838 }
12839
12840 bool operator==( MemoryBarrier const& rhs ) const
12841 {
12842 return ( sType == rhs.sType )
12843 && ( pNext == rhs.pNext )
12844 && ( srcAccessMask == rhs.srcAccessMask )
12845 && ( dstAccessMask == rhs.dstAccessMask );
12846 }
12847
12848 bool operator!=( MemoryBarrier const& rhs ) const
12849 {
12850 return !operator==( rhs );
12851 }
12852
12853 private:
12854 StructureType sType;
12855
12856 public:
12857 const void* pNext;
12858 AccessFlags srcAccessMask;
12859 AccessFlags dstAccessMask;
12860 };
12861 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12862
12863 struct BufferMemoryBarrier
12864 {
12865 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12866 : sType( StructureType::eBufferMemoryBarrier )
12867 , pNext( nullptr )
12868 , srcAccessMask( srcAccessMask_ )
12869 , dstAccessMask( dstAccessMask_ )
12870 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12871 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12872 , buffer( buffer_ )
12873 , offset( offset_ )
12874 , size( size_ )
12875 {
12876 }
12877
12878 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12879 {
12880 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12881 }
12882
12883 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12884 {
12885 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12886 return *this;
12887 }
12888
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012889 BufferMemoryBarrier& setPNext( const void* pNext_ )
12890 {
12891 pNext = pNext_;
12892 return *this;
12893 }
12894
12895 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12896 {
12897 srcAccessMask = srcAccessMask_;
12898 return *this;
12899 }
12900
12901 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12902 {
12903 dstAccessMask = dstAccessMask_;
12904 return *this;
12905 }
12906
12907 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12908 {
12909 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12910 return *this;
12911 }
12912
12913 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12914 {
12915 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12916 return *this;
12917 }
12918
12919 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12920 {
12921 buffer = buffer_;
12922 return *this;
12923 }
12924
12925 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12926 {
12927 offset = offset_;
12928 return *this;
12929 }
12930
12931 BufferMemoryBarrier& setSize( DeviceSize size_ )
12932 {
12933 size = size_;
12934 return *this;
12935 }
12936
12937 operator const VkBufferMemoryBarrier&() const
12938 {
12939 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12940 }
12941
12942 bool operator==( BufferMemoryBarrier const& rhs ) const
12943 {
12944 return ( sType == rhs.sType )
12945 && ( pNext == rhs.pNext )
12946 && ( srcAccessMask == rhs.srcAccessMask )
12947 && ( dstAccessMask == rhs.dstAccessMask )
12948 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12949 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12950 && ( buffer == rhs.buffer )
12951 && ( offset == rhs.offset )
12952 && ( size == rhs.size );
12953 }
12954
12955 bool operator!=( BufferMemoryBarrier const& rhs ) const
12956 {
12957 return !operator==( rhs );
12958 }
12959
12960 private:
12961 StructureType sType;
12962
12963 public:
12964 const void* pNext;
12965 AccessFlags srcAccessMask;
12966 AccessFlags dstAccessMask;
12967 uint32_t srcQueueFamilyIndex;
12968 uint32_t dstQueueFamilyIndex;
12969 Buffer buffer;
12970 DeviceSize offset;
12971 DeviceSize size;
12972 };
12973 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12974
12975 enum class BufferUsageFlagBits
12976 {
12977 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12978 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12979 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12980 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12981 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12982 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12983 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12984 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12985 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12986 };
12987
12988 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12989
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012990 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012991 {
12992 return BufferUsageFlags( bit0 ) | bit1;
12993 }
12994
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012995 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12996 {
12997 return ~( BufferUsageFlags( bits ) );
12998 }
12999
13000 template <> struct FlagTraits<BufferUsageFlagBits>
13001 {
13002 enum
13003 {
13004 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)
13005 };
13006 };
13007
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013008 enum class BufferCreateFlagBits
13009 {
13010 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
13011 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
13012 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
13013 };
13014
13015 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
13016
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013017 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013018 {
13019 return BufferCreateFlags( bit0 ) | bit1;
13020 }
13021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013022 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
13023 {
13024 return ~( BufferCreateFlags( bits ) );
13025 }
13026
13027 template <> struct FlagTraits<BufferCreateFlagBits>
13028 {
13029 enum
13030 {
13031 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
13032 };
13033 };
13034
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013035 struct BufferCreateInfo
13036 {
13037 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
13038 : sType( StructureType::eBufferCreateInfo )
13039 , pNext( nullptr )
13040 , flags( flags_ )
13041 , size( size_ )
13042 , usage( usage_ )
13043 , sharingMode( sharingMode_ )
13044 , queueFamilyIndexCount( queueFamilyIndexCount_ )
13045 , pQueueFamilyIndices( pQueueFamilyIndices_ )
13046 {
13047 }
13048
13049 BufferCreateInfo( VkBufferCreateInfo const & rhs )
13050 {
13051 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
13052 }
13053
13054 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
13055 {
13056 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
13057 return *this;
13058 }
13059
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013060 BufferCreateInfo& setPNext( const void* pNext_ )
13061 {
13062 pNext = pNext_;
13063 return *this;
13064 }
13065
13066 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
13067 {
13068 flags = flags_;
13069 return *this;
13070 }
13071
13072 BufferCreateInfo& setSize( DeviceSize size_ )
13073 {
13074 size = size_;
13075 return *this;
13076 }
13077
13078 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
13079 {
13080 usage = usage_;
13081 return *this;
13082 }
13083
13084 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
13085 {
13086 sharingMode = sharingMode_;
13087 return *this;
13088 }
13089
13090 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
13091 {
13092 queueFamilyIndexCount = queueFamilyIndexCount_;
13093 return *this;
13094 }
13095
13096 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
13097 {
13098 pQueueFamilyIndices = pQueueFamilyIndices_;
13099 return *this;
13100 }
13101
13102 operator const VkBufferCreateInfo&() const
13103 {
13104 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13105 }
13106
13107 bool operator==( BufferCreateInfo const& rhs ) const
13108 {
13109 return ( sType == rhs.sType )
13110 && ( pNext == rhs.pNext )
13111 && ( flags == rhs.flags )
13112 && ( size == rhs.size )
13113 && ( usage == rhs.usage )
13114 && ( sharingMode == rhs.sharingMode )
13115 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13116 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13117 }
13118
13119 bool operator!=( BufferCreateInfo const& rhs ) const
13120 {
13121 return !operator==( rhs );
13122 }
13123
13124 private:
13125 StructureType sType;
13126
13127 public:
13128 const void* pNext;
13129 BufferCreateFlags flags;
13130 DeviceSize size;
13131 BufferUsageFlags usage;
13132 SharingMode sharingMode;
13133 uint32_t queueFamilyIndexCount;
13134 const uint32_t* pQueueFamilyIndices;
13135 };
13136 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13137
13138 enum class ShaderStageFlagBits
13139 {
13140 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13141 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13142 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13143 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13144 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13145 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13146 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13147 eAll = VK_SHADER_STAGE_ALL
13148 };
13149
13150 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013152 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013153 {
13154 return ShaderStageFlags( bit0 ) | bit1;
13155 }
13156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013157 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
13158 {
13159 return ~( ShaderStageFlags( bits ) );
13160 }
13161
13162 template <> struct FlagTraits<ShaderStageFlagBits>
13163 {
13164 enum
13165 {
13166 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)
13167 };
13168 };
13169
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013170 struct DescriptorSetLayoutBinding
13171 {
13172 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
13173 : binding( binding_ )
13174 , descriptorType( descriptorType_ )
13175 , descriptorCount( descriptorCount_ )
13176 , stageFlags( stageFlags_ )
13177 , pImmutableSamplers( pImmutableSamplers_ )
13178 {
13179 }
13180
13181 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
13182 {
13183 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13184 }
13185
13186 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
13187 {
13188 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13189 return *this;
13190 }
13191
13192 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
13193 {
13194 binding = binding_;
13195 return *this;
13196 }
13197
13198 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
13199 {
13200 descriptorType = descriptorType_;
13201 return *this;
13202 }
13203
13204 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
13205 {
13206 descriptorCount = descriptorCount_;
13207 return *this;
13208 }
13209
13210 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
13211 {
13212 stageFlags = stageFlags_;
13213 return *this;
13214 }
13215
13216 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
13217 {
13218 pImmutableSamplers = pImmutableSamplers_;
13219 return *this;
13220 }
13221
13222 operator const VkDescriptorSetLayoutBinding&() const
13223 {
13224 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
13225 }
13226
13227 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
13228 {
13229 return ( binding == rhs.binding )
13230 && ( descriptorType == rhs.descriptorType )
13231 && ( descriptorCount == rhs.descriptorCount )
13232 && ( stageFlags == rhs.stageFlags )
13233 && ( pImmutableSamplers == rhs.pImmutableSamplers );
13234 }
13235
13236 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
13237 {
13238 return !operator==( rhs );
13239 }
13240
13241 uint32_t binding;
13242 DescriptorType descriptorType;
13243 uint32_t descriptorCount;
13244 ShaderStageFlags stageFlags;
13245 const Sampler* pImmutableSamplers;
13246 };
13247 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
13248
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013249 struct PipelineShaderStageCreateInfo
13250 {
13251 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
13252 : sType( StructureType::ePipelineShaderStageCreateInfo )
13253 , pNext( nullptr )
13254 , flags( flags_ )
13255 , stage( stage_ )
13256 , module( module_ )
13257 , pName( pName_ )
13258 , pSpecializationInfo( pSpecializationInfo_ )
13259 {
13260 }
13261
13262 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
13263 {
13264 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13265 }
13266
13267 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
13268 {
13269 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13270 return *this;
13271 }
13272
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013273 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
13274 {
13275 pNext = pNext_;
13276 return *this;
13277 }
13278
13279 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13280 {
13281 flags = flags_;
13282 return *this;
13283 }
13284
13285 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13286 {
13287 stage = stage_;
13288 return *this;
13289 }
13290
13291 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13292 {
13293 module = module_;
13294 return *this;
13295 }
13296
13297 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13298 {
13299 pName = pName_;
13300 return *this;
13301 }
13302
13303 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13304 {
13305 pSpecializationInfo = pSpecializationInfo_;
13306 return *this;
13307 }
13308
13309 operator const VkPipelineShaderStageCreateInfo&() const
13310 {
13311 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13312 }
13313
13314 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13315 {
13316 return ( sType == rhs.sType )
13317 && ( pNext == rhs.pNext )
13318 && ( flags == rhs.flags )
13319 && ( stage == rhs.stage )
13320 && ( module == rhs.module )
13321 && ( pName == rhs.pName )
13322 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13323 }
13324
13325 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13326 {
13327 return !operator==( rhs );
13328 }
13329
13330 private:
13331 StructureType sType;
13332
13333 public:
13334 const void* pNext;
13335 PipelineShaderStageCreateFlags flags;
13336 ShaderStageFlagBits stage;
13337 ShaderModule module;
13338 const char* pName;
13339 const SpecializationInfo* pSpecializationInfo;
13340 };
13341 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13342
13343 struct PushConstantRange
13344 {
13345 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13346 : stageFlags( stageFlags_ )
13347 , offset( offset_ )
13348 , size( size_ )
13349 {
13350 }
13351
13352 PushConstantRange( VkPushConstantRange const & rhs )
13353 {
13354 memcpy( this, &rhs, sizeof(PushConstantRange) );
13355 }
13356
13357 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13358 {
13359 memcpy( this, &rhs, sizeof(PushConstantRange) );
13360 return *this;
13361 }
13362
13363 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13364 {
13365 stageFlags = stageFlags_;
13366 return *this;
13367 }
13368
13369 PushConstantRange& setOffset( uint32_t offset_ )
13370 {
13371 offset = offset_;
13372 return *this;
13373 }
13374
13375 PushConstantRange& setSize( uint32_t size_ )
13376 {
13377 size = size_;
13378 return *this;
13379 }
13380
13381 operator const VkPushConstantRange&() const
13382 {
13383 return *reinterpret_cast<const VkPushConstantRange*>(this);
13384 }
13385
13386 bool operator==( PushConstantRange const& rhs ) const
13387 {
13388 return ( stageFlags == rhs.stageFlags )
13389 && ( offset == rhs.offset )
13390 && ( size == rhs.size );
13391 }
13392
13393 bool operator!=( PushConstantRange const& rhs ) const
13394 {
13395 return !operator==( rhs );
13396 }
13397
13398 ShaderStageFlags stageFlags;
13399 uint32_t offset;
13400 uint32_t size;
13401 };
13402 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13403
13404 struct PipelineLayoutCreateInfo
13405 {
13406 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13407 : sType( StructureType::ePipelineLayoutCreateInfo )
13408 , pNext( nullptr )
13409 , flags( flags_ )
13410 , setLayoutCount( setLayoutCount_ )
13411 , pSetLayouts( pSetLayouts_ )
13412 , pushConstantRangeCount( pushConstantRangeCount_ )
13413 , pPushConstantRanges( pPushConstantRanges_ )
13414 {
13415 }
13416
13417 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13418 {
13419 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13420 }
13421
13422 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13423 {
13424 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13425 return *this;
13426 }
13427
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013428 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13429 {
13430 pNext = pNext_;
13431 return *this;
13432 }
13433
13434 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13435 {
13436 flags = flags_;
13437 return *this;
13438 }
13439
13440 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13441 {
13442 setLayoutCount = setLayoutCount_;
13443 return *this;
13444 }
13445
13446 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13447 {
13448 pSetLayouts = pSetLayouts_;
13449 return *this;
13450 }
13451
13452 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13453 {
13454 pushConstantRangeCount = pushConstantRangeCount_;
13455 return *this;
13456 }
13457
13458 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13459 {
13460 pPushConstantRanges = pPushConstantRanges_;
13461 return *this;
13462 }
13463
13464 operator const VkPipelineLayoutCreateInfo&() const
13465 {
13466 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13467 }
13468
13469 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13470 {
13471 return ( sType == rhs.sType )
13472 && ( pNext == rhs.pNext )
13473 && ( flags == rhs.flags )
13474 && ( setLayoutCount == rhs.setLayoutCount )
13475 && ( pSetLayouts == rhs.pSetLayouts )
13476 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13477 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13478 }
13479
13480 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13481 {
13482 return !operator==( rhs );
13483 }
13484
13485 private:
13486 StructureType sType;
13487
13488 public:
13489 const void* pNext;
13490 PipelineLayoutCreateFlags flags;
13491 uint32_t setLayoutCount;
13492 const DescriptorSetLayout* pSetLayouts;
13493 uint32_t pushConstantRangeCount;
13494 const PushConstantRange* pPushConstantRanges;
13495 };
13496 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13497
13498 enum class ImageUsageFlagBits
13499 {
13500 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13501 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13502 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13503 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13504 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13505 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13506 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13507 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13508 };
13509
13510 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13511
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013512 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013513 {
13514 return ImageUsageFlags( bit0 ) | bit1;
13515 }
13516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013517 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13518 {
13519 return ~( ImageUsageFlags( bits ) );
13520 }
13521
13522 template <> struct FlagTraits<ImageUsageFlagBits>
13523 {
13524 enum
13525 {
13526 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)
13527 };
13528 };
13529
Mark Lobodzinski54385432017-05-15 10:27:52 -060013530 struct SharedPresentSurfaceCapabilitiesKHR
13531 {
13532 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
13533 {
13534 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
13535 }
13536
13537 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13538 {
13539 return ( sType == rhs.sType )
13540 && ( pNext == rhs.pNext )
13541 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
13542 }
13543
13544 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13545 {
13546 return !operator==( rhs );
13547 }
13548
13549 private:
13550 StructureType sType;
13551
13552 public:
13553 void* pNext;
13554 ImageUsageFlags sharedPresentSupportedUsageFlags;
13555 };
13556 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
13557
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013558 enum class ImageCreateFlagBits
13559 {
13560 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13561 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13562 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13563 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013564 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013565 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013566 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013567 };
13568
13569 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13570
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013571 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013572 {
13573 return ImageCreateFlags( bit0 ) | bit1;
13574 }
13575
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013576 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13577 {
13578 return ~( ImageCreateFlags( bits ) );
13579 }
13580
13581 template <> struct FlagTraits<ImageCreateFlagBits>
13582 {
13583 enum
13584 {
Mark Young0f183a82017-02-28 09:58:04 -070013585 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 -070013586 };
13587 };
13588
Mark Young39389872017-01-19 21:10:49 -070013589 struct PhysicalDeviceImageFormatInfo2KHR
13590 {
13591 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13592 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13593 , pNext( nullptr )
13594 , format( format_ )
13595 , type( type_ )
13596 , tiling( tiling_ )
13597 , usage( usage_ )
13598 , flags( flags_ )
13599 {
13600 }
13601
13602 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13603 {
13604 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13605 }
13606
13607 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13608 {
13609 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13610 return *this;
13611 }
13612
Mark Young39389872017-01-19 21:10:49 -070013613 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13614 {
13615 pNext = pNext_;
13616 return *this;
13617 }
13618
13619 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13620 {
13621 format = format_;
13622 return *this;
13623 }
13624
13625 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13626 {
13627 type = type_;
13628 return *this;
13629 }
13630
13631 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13632 {
13633 tiling = tiling_;
13634 return *this;
13635 }
13636
13637 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13638 {
13639 usage = usage_;
13640 return *this;
13641 }
13642
13643 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13644 {
13645 flags = flags_;
13646 return *this;
13647 }
13648
13649 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13650 {
13651 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13652 }
13653
13654 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13655 {
13656 return ( sType == rhs.sType )
13657 && ( pNext == rhs.pNext )
13658 && ( format == rhs.format )
13659 && ( type == rhs.type )
13660 && ( tiling == rhs.tiling )
13661 && ( usage == rhs.usage )
13662 && ( flags == rhs.flags );
13663 }
13664
13665 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13666 {
13667 return !operator==( rhs );
13668 }
13669
13670 private:
13671 StructureType sType;
13672
13673 public:
13674 const void* pNext;
13675 Format format;
13676 ImageType type;
13677 ImageTiling tiling;
13678 ImageUsageFlags usage;
13679 ImageCreateFlags flags;
13680 };
13681 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13682
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013683 enum class PipelineCreateFlagBits
13684 {
13685 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13686 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013687 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13688 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13689 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013690 };
13691
13692 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13693
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013694 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013695 {
13696 return PipelineCreateFlags( bit0 ) | bit1;
13697 }
13698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013699 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13700 {
13701 return ~( PipelineCreateFlags( bits ) );
13702 }
13703
13704 template <> struct FlagTraits<PipelineCreateFlagBits>
13705 {
13706 enum
13707 {
Mark Young0f183a82017-02-28 09:58:04 -070013708 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013709 };
13710 };
13711
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013712 struct ComputePipelineCreateInfo
13713 {
13714 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13715 : sType( StructureType::eComputePipelineCreateInfo )
13716 , pNext( nullptr )
13717 , flags( flags_ )
13718 , stage( stage_ )
13719 , layout( layout_ )
13720 , basePipelineHandle( basePipelineHandle_ )
13721 , basePipelineIndex( basePipelineIndex_ )
13722 {
13723 }
13724
13725 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13726 {
13727 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13728 }
13729
13730 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13731 {
13732 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13733 return *this;
13734 }
13735
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013736 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13737 {
13738 pNext = pNext_;
13739 return *this;
13740 }
13741
13742 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13743 {
13744 flags = flags_;
13745 return *this;
13746 }
13747
13748 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13749 {
13750 stage = stage_;
13751 return *this;
13752 }
13753
13754 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13755 {
13756 layout = layout_;
13757 return *this;
13758 }
13759
13760 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13761 {
13762 basePipelineHandle = basePipelineHandle_;
13763 return *this;
13764 }
13765
13766 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13767 {
13768 basePipelineIndex = basePipelineIndex_;
13769 return *this;
13770 }
13771
13772 operator const VkComputePipelineCreateInfo&() const
13773 {
13774 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13775 }
13776
13777 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13778 {
13779 return ( sType == rhs.sType )
13780 && ( pNext == rhs.pNext )
13781 && ( flags == rhs.flags )
13782 && ( stage == rhs.stage )
13783 && ( layout == rhs.layout )
13784 && ( basePipelineHandle == rhs.basePipelineHandle )
13785 && ( basePipelineIndex == rhs.basePipelineIndex );
13786 }
13787
13788 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13789 {
13790 return !operator==( rhs );
13791 }
13792
13793 private:
13794 StructureType sType;
13795
13796 public:
13797 const void* pNext;
13798 PipelineCreateFlags flags;
13799 PipelineShaderStageCreateInfo stage;
13800 PipelineLayout layout;
13801 Pipeline basePipelineHandle;
13802 int32_t basePipelineIndex;
13803 };
13804 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13805
13806 enum class ColorComponentFlagBits
13807 {
13808 eR = VK_COLOR_COMPONENT_R_BIT,
13809 eG = VK_COLOR_COMPONENT_G_BIT,
13810 eB = VK_COLOR_COMPONENT_B_BIT,
13811 eA = VK_COLOR_COMPONENT_A_BIT
13812 };
13813
13814 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13815
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013816 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013817 {
13818 return ColorComponentFlags( bit0 ) | bit1;
13819 }
13820
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013821 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13822 {
13823 return ~( ColorComponentFlags( bits ) );
13824 }
13825
13826 template <> struct FlagTraits<ColorComponentFlagBits>
13827 {
13828 enum
13829 {
13830 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13831 };
13832 };
13833
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013834 struct PipelineColorBlendAttachmentState
13835 {
13836 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() )
13837 : blendEnable( blendEnable_ )
13838 , srcColorBlendFactor( srcColorBlendFactor_ )
13839 , dstColorBlendFactor( dstColorBlendFactor_ )
13840 , colorBlendOp( colorBlendOp_ )
13841 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13842 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13843 , alphaBlendOp( alphaBlendOp_ )
13844 , colorWriteMask( colorWriteMask_ )
13845 {
13846 }
13847
13848 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13849 {
13850 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13851 }
13852
13853 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13854 {
13855 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13856 return *this;
13857 }
13858
13859 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13860 {
13861 blendEnable = blendEnable_;
13862 return *this;
13863 }
13864
13865 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13866 {
13867 srcColorBlendFactor = srcColorBlendFactor_;
13868 return *this;
13869 }
13870
13871 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13872 {
13873 dstColorBlendFactor = dstColorBlendFactor_;
13874 return *this;
13875 }
13876
13877 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13878 {
13879 colorBlendOp = colorBlendOp_;
13880 return *this;
13881 }
13882
13883 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13884 {
13885 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13886 return *this;
13887 }
13888
13889 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13890 {
13891 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13892 return *this;
13893 }
13894
13895 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13896 {
13897 alphaBlendOp = alphaBlendOp_;
13898 return *this;
13899 }
13900
13901 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13902 {
13903 colorWriteMask = colorWriteMask_;
13904 return *this;
13905 }
13906
13907 operator const VkPipelineColorBlendAttachmentState&() const
13908 {
13909 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13910 }
13911
13912 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13913 {
13914 return ( blendEnable == rhs.blendEnable )
13915 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13916 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13917 && ( colorBlendOp == rhs.colorBlendOp )
13918 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13919 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13920 && ( alphaBlendOp == rhs.alphaBlendOp )
13921 && ( colorWriteMask == rhs.colorWriteMask );
13922 }
13923
13924 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13925 {
13926 return !operator==( rhs );
13927 }
13928
13929 Bool32 blendEnable;
13930 BlendFactor srcColorBlendFactor;
13931 BlendFactor dstColorBlendFactor;
13932 BlendOp colorBlendOp;
13933 BlendFactor srcAlphaBlendFactor;
13934 BlendFactor dstAlphaBlendFactor;
13935 BlendOp alphaBlendOp;
13936 ColorComponentFlags colorWriteMask;
13937 };
13938 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13939
13940 struct PipelineColorBlendStateCreateInfo
13941 {
13942 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 } } )
13943 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13944 , pNext( nullptr )
13945 , flags( flags_ )
13946 , logicOpEnable( logicOpEnable_ )
13947 , logicOp( logicOp_ )
13948 , attachmentCount( attachmentCount_ )
13949 , pAttachments( pAttachments_ )
13950 {
13951 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13952 }
13953
13954 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13955 {
13956 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13957 }
13958
13959 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13960 {
13961 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13962 return *this;
13963 }
13964
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013965 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13966 {
13967 pNext = pNext_;
13968 return *this;
13969 }
13970
13971 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13972 {
13973 flags = flags_;
13974 return *this;
13975 }
13976
13977 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13978 {
13979 logicOpEnable = logicOpEnable_;
13980 return *this;
13981 }
13982
13983 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13984 {
13985 logicOp = logicOp_;
13986 return *this;
13987 }
13988
13989 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13990 {
13991 attachmentCount = attachmentCount_;
13992 return *this;
13993 }
13994
13995 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13996 {
13997 pAttachments = pAttachments_;
13998 return *this;
13999 }
14000
14001 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
14002 {
14003 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14004 return *this;
14005 }
14006
14007 operator const VkPipelineColorBlendStateCreateInfo&() const
14008 {
14009 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
14010 }
14011
14012 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
14013 {
14014 return ( sType == rhs.sType )
14015 && ( pNext == rhs.pNext )
14016 && ( flags == rhs.flags )
14017 && ( logicOpEnable == rhs.logicOpEnable )
14018 && ( logicOp == rhs.logicOp )
14019 && ( attachmentCount == rhs.attachmentCount )
14020 && ( pAttachments == rhs.pAttachments )
14021 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
14022 }
14023
14024 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
14025 {
14026 return !operator==( rhs );
14027 }
14028
14029 private:
14030 StructureType sType;
14031
14032 public:
14033 const void* pNext;
14034 PipelineColorBlendStateCreateFlags flags;
14035 Bool32 logicOpEnable;
14036 LogicOp logicOp;
14037 uint32_t attachmentCount;
14038 const PipelineColorBlendAttachmentState* pAttachments;
14039 float blendConstants[4];
14040 };
14041 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
14042
14043 enum class FenceCreateFlagBits
14044 {
14045 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
14046 };
14047
14048 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
14049
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014050 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014051 {
14052 return FenceCreateFlags( bit0 ) | bit1;
14053 }
14054
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014055 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
14056 {
14057 return ~( FenceCreateFlags( bits ) );
14058 }
14059
14060 template <> struct FlagTraits<FenceCreateFlagBits>
14061 {
14062 enum
14063 {
14064 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
14065 };
14066 };
14067
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014068 struct FenceCreateInfo
14069 {
14070 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
14071 : sType( StructureType::eFenceCreateInfo )
14072 , pNext( nullptr )
14073 , flags( flags_ )
14074 {
14075 }
14076
14077 FenceCreateInfo( VkFenceCreateInfo const & rhs )
14078 {
14079 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
14080 }
14081
14082 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
14083 {
14084 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
14085 return *this;
14086 }
14087
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014088 FenceCreateInfo& setPNext( const void* pNext_ )
14089 {
14090 pNext = pNext_;
14091 return *this;
14092 }
14093
14094 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
14095 {
14096 flags = flags_;
14097 return *this;
14098 }
14099
14100 operator const VkFenceCreateInfo&() const
14101 {
14102 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
14103 }
14104
14105 bool operator==( FenceCreateInfo const& rhs ) const
14106 {
14107 return ( sType == rhs.sType )
14108 && ( pNext == rhs.pNext )
14109 && ( flags == rhs.flags );
14110 }
14111
14112 bool operator!=( FenceCreateInfo const& rhs ) const
14113 {
14114 return !operator==( rhs );
14115 }
14116
14117 private:
14118 StructureType sType;
14119
14120 public:
14121 const void* pNext;
14122 FenceCreateFlags flags;
14123 };
14124 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
14125
14126 enum class FormatFeatureFlagBits
14127 {
14128 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14129 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14130 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14131 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14132 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14133 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14134 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14135 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14136 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14137 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14138 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14139 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14140 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014141 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14142 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
14143 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014144 };
14145
14146 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014148 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014149 {
14150 return FormatFeatureFlags( bit0 ) | bit1;
14151 }
14152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014153 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14154 {
14155 return ~( FormatFeatureFlags( bits ) );
14156 }
14157
14158 template <> struct FlagTraits<FormatFeatureFlagBits>
14159 {
14160 enum
14161 {
Mark Young39389872017-01-19 21:10:49 -070014162 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 -070014163 };
14164 };
14165
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014166 struct FormatProperties
14167 {
14168 operator const VkFormatProperties&() const
14169 {
14170 return *reinterpret_cast<const VkFormatProperties*>(this);
14171 }
14172
14173 bool operator==( FormatProperties const& rhs ) const
14174 {
14175 return ( linearTilingFeatures == rhs.linearTilingFeatures )
14176 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
14177 && ( bufferFeatures == rhs.bufferFeatures );
14178 }
14179
14180 bool operator!=( FormatProperties const& rhs ) const
14181 {
14182 return !operator==( rhs );
14183 }
14184
14185 FormatFeatureFlags linearTilingFeatures;
14186 FormatFeatureFlags optimalTilingFeatures;
14187 FormatFeatureFlags bufferFeatures;
14188 };
14189 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
14190
Mark Young39389872017-01-19 21:10:49 -070014191 struct FormatProperties2KHR
14192 {
14193 operator const VkFormatProperties2KHR&() const
14194 {
14195 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
14196 }
14197
14198 bool operator==( FormatProperties2KHR const& rhs ) const
14199 {
14200 return ( sType == rhs.sType )
14201 && ( pNext == rhs.pNext )
14202 && ( formatProperties == rhs.formatProperties );
14203 }
14204
14205 bool operator!=( FormatProperties2KHR const& rhs ) const
14206 {
14207 return !operator==( rhs );
14208 }
14209
14210 private:
14211 StructureType sType;
14212
14213 public:
14214 void* pNext;
14215 FormatProperties formatProperties;
14216 };
14217 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
14218
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014219 enum class QueryControlFlagBits
14220 {
14221 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
14222 };
14223
14224 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
14225
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014226 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014227 {
14228 return QueryControlFlags( bit0 ) | bit1;
14229 }
14230
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014231 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
14232 {
14233 return ~( QueryControlFlags( bits ) );
14234 }
14235
14236 template <> struct FlagTraits<QueryControlFlagBits>
14237 {
14238 enum
14239 {
14240 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
14241 };
14242 };
14243
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014244 enum class QueryResultFlagBits
14245 {
14246 e64 = VK_QUERY_RESULT_64_BIT,
14247 eWait = VK_QUERY_RESULT_WAIT_BIT,
14248 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
14249 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
14250 };
14251
14252 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
14253
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014254 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014255 {
14256 return QueryResultFlags( bit0 ) | bit1;
14257 }
14258
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014259 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
14260 {
14261 return ~( QueryResultFlags( bits ) );
14262 }
14263
14264 template <> struct FlagTraits<QueryResultFlagBits>
14265 {
14266 enum
14267 {
14268 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
14269 };
14270 };
14271
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014272 enum class CommandBufferUsageFlagBits
14273 {
14274 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
14275 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
14276 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
14277 };
14278
14279 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
14280
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014281 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014282 {
14283 return CommandBufferUsageFlags( bit0 ) | bit1;
14284 }
14285
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014286 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
14287 {
14288 return ~( CommandBufferUsageFlags( bits ) );
14289 }
14290
14291 template <> struct FlagTraits<CommandBufferUsageFlagBits>
14292 {
14293 enum
14294 {
14295 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
14296 };
14297 };
14298
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014299 enum class QueryPipelineStatisticFlagBits
14300 {
14301 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
14302 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
14303 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
14304 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
14305 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
14306 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14307 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14308 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14309 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14310 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14311 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14312 };
14313
14314 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14315
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014316 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014317 {
14318 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14319 }
14320
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014321 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14322 {
14323 return ~( QueryPipelineStatisticFlags( bits ) );
14324 }
14325
14326 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14327 {
14328 enum
14329 {
14330 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)
14331 };
14332 };
14333
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014334 struct CommandBufferInheritanceInfo
14335 {
14336 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14337 : sType( StructureType::eCommandBufferInheritanceInfo )
14338 , pNext( nullptr )
14339 , renderPass( renderPass_ )
14340 , subpass( subpass_ )
14341 , framebuffer( framebuffer_ )
14342 , occlusionQueryEnable( occlusionQueryEnable_ )
14343 , queryFlags( queryFlags_ )
14344 , pipelineStatistics( pipelineStatistics_ )
14345 {
14346 }
14347
14348 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14349 {
14350 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14351 }
14352
14353 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14354 {
14355 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14356 return *this;
14357 }
14358
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014359 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14360 {
14361 pNext = pNext_;
14362 return *this;
14363 }
14364
14365 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14366 {
14367 renderPass = renderPass_;
14368 return *this;
14369 }
14370
14371 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14372 {
14373 subpass = subpass_;
14374 return *this;
14375 }
14376
14377 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14378 {
14379 framebuffer = framebuffer_;
14380 return *this;
14381 }
14382
14383 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14384 {
14385 occlusionQueryEnable = occlusionQueryEnable_;
14386 return *this;
14387 }
14388
14389 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14390 {
14391 queryFlags = queryFlags_;
14392 return *this;
14393 }
14394
14395 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14396 {
14397 pipelineStatistics = pipelineStatistics_;
14398 return *this;
14399 }
14400
14401 operator const VkCommandBufferInheritanceInfo&() const
14402 {
14403 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14404 }
14405
14406 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14407 {
14408 return ( sType == rhs.sType )
14409 && ( pNext == rhs.pNext )
14410 && ( renderPass == rhs.renderPass )
14411 && ( subpass == rhs.subpass )
14412 && ( framebuffer == rhs.framebuffer )
14413 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14414 && ( queryFlags == rhs.queryFlags )
14415 && ( pipelineStatistics == rhs.pipelineStatistics );
14416 }
14417
14418 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14419 {
14420 return !operator==( rhs );
14421 }
14422
14423 private:
14424 StructureType sType;
14425
14426 public:
14427 const void* pNext;
14428 RenderPass renderPass;
14429 uint32_t subpass;
14430 Framebuffer framebuffer;
14431 Bool32 occlusionQueryEnable;
14432 QueryControlFlags queryFlags;
14433 QueryPipelineStatisticFlags pipelineStatistics;
14434 };
14435 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14436
14437 struct CommandBufferBeginInfo
14438 {
14439 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14440 : sType( StructureType::eCommandBufferBeginInfo )
14441 , pNext( nullptr )
14442 , flags( flags_ )
14443 , pInheritanceInfo( pInheritanceInfo_ )
14444 {
14445 }
14446
14447 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14448 {
14449 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14450 }
14451
14452 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14453 {
14454 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14455 return *this;
14456 }
14457
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014458 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14459 {
14460 pNext = pNext_;
14461 return *this;
14462 }
14463
14464 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14465 {
14466 flags = flags_;
14467 return *this;
14468 }
14469
14470 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14471 {
14472 pInheritanceInfo = pInheritanceInfo_;
14473 return *this;
14474 }
14475
14476 operator const VkCommandBufferBeginInfo&() const
14477 {
14478 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14479 }
14480
14481 bool operator==( CommandBufferBeginInfo const& rhs ) const
14482 {
14483 return ( sType == rhs.sType )
14484 && ( pNext == rhs.pNext )
14485 && ( flags == rhs.flags )
14486 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14487 }
14488
14489 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14490 {
14491 return !operator==( rhs );
14492 }
14493
14494 private:
14495 StructureType sType;
14496
14497 public:
14498 const void* pNext;
14499 CommandBufferUsageFlags flags;
14500 const CommandBufferInheritanceInfo* pInheritanceInfo;
14501 };
14502 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14503
14504 struct QueryPoolCreateInfo
14505 {
14506 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14507 : sType( StructureType::eQueryPoolCreateInfo )
14508 , pNext( nullptr )
14509 , flags( flags_ )
14510 , queryType( queryType_ )
14511 , queryCount( queryCount_ )
14512 , pipelineStatistics( pipelineStatistics_ )
14513 {
14514 }
14515
14516 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14517 {
14518 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14519 }
14520
14521 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14522 {
14523 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14524 return *this;
14525 }
14526
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014527 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14528 {
14529 pNext = pNext_;
14530 return *this;
14531 }
14532
14533 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14534 {
14535 flags = flags_;
14536 return *this;
14537 }
14538
14539 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14540 {
14541 queryType = queryType_;
14542 return *this;
14543 }
14544
14545 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14546 {
14547 queryCount = queryCount_;
14548 return *this;
14549 }
14550
14551 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14552 {
14553 pipelineStatistics = pipelineStatistics_;
14554 return *this;
14555 }
14556
14557 operator const VkQueryPoolCreateInfo&() const
14558 {
14559 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14560 }
14561
14562 bool operator==( QueryPoolCreateInfo const& rhs ) const
14563 {
14564 return ( sType == rhs.sType )
14565 && ( pNext == rhs.pNext )
14566 && ( flags == rhs.flags )
14567 && ( queryType == rhs.queryType )
14568 && ( queryCount == rhs.queryCount )
14569 && ( pipelineStatistics == rhs.pipelineStatistics );
14570 }
14571
14572 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14573 {
14574 return !operator==( rhs );
14575 }
14576
14577 private:
14578 StructureType sType;
14579
14580 public:
14581 const void* pNext;
14582 QueryPoolCreateFlags flags;
14583 QueryType queryType;
14584 uint32_t queryCount;
14585 QueryPipelineStatisticFlags pipelineStatistics;
14586 };
14587 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14588
14589 enum class ImageAspectFlagBits
14590 {
14591 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14592 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14593 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14594 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14595 };
14596
14597 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014599 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014600 {
14601 return ImageAspectFlags( bit0 ) | bit1;
14602 }
14603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014604 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14605 {
14606 return ~( ImageAspectFlags( bits ) );
14607 }
14608
14609 template <> struct FlagTraits<ImageAspectFlagBits>
14610 {
14611 enum
14612 {
14613 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14614 };
14615 };
14616
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014617 struct ImageSubresource
14618 {
14619 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14620 : aspectMask( aspectMask_ )
14621 , mipLevel( mipLevel_ )
14622 , arrayLayer( arrayLayer_ )
14623 {
14624 }
14625
14626 ImageSubresource( VkImageSubresource const & rhs )
14627 {
14628 memcpy( this, &rhs, sizeof(ImageSubresource) );
14629 }
14630
14631 ImageSubresource& operator=( VkImageSubresource const & rhs )
14632 {
14633 memcpy( this, &rhs, sizeof(ImageSubresource) );
14634 return *this;
14635 }
14636
14637 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14638 {
14639 aspectMask = aspectMask_;
14640 return *this;
14641 }
14642
14643 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14644 {
14645 mipLevel = mipLevel_;
14646 return *this;
14647 }
14648
14649 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14650 {
14651 arrayLayer = arrayLayer_;
14652 return *this;
14653 }
14654
14655 operator const VkImageSubresource&() const
14656 {
14657 return *reinterpret_cast<const VkImageSubresource*>(this);
14658 }
14659
14660 bool operator==( ImageSubresource const& rhs ) const
14661 {
14662 return ( aspectMask == rhs.aspectMask )
14663 && ( mipLevel == rhs.mipLevel )
14664 && ( arrayLayer == rhs.arrayLayer );
14665 }
14666
14667 bool operator!=( ImageSubresource const& rhs ) const
14668 {
14669 return !operator==( rhs );
14670 }
14671
14672 ImageAspectFlags aspectMask;
14673 uint32_t mipLevel;
14674 uint32_t arrayLayer;
14675 };
14676 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14677
14678 struct ImageSubresourceLayers
14679 {
14680 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14681 : aspectMask( aspectMask_ )
14682 , mipLevel( mipLevel_ )
14683 , baseArrayLayer( baseArrayLayer_ )
14684 , layerCount( layerCount_ )
14685 {
14686 }
14687
14688 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14689 {
14690 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14691 }
14692
14693 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14694 {
14695 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14696 return *this;
14697 }
14698
14699 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14700 {
14701 aspectMask = aspectMask_;
14702 return *this;
14703 }
14704
14705 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14706 {
14707 mipLevel = mipLevel_;
14708 return *this;
14709 }
14710
14711 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14712 {
14713 baseArrayLayer = baseArrayLayer_;
14714 return *this;
14715 }
14716
14717 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14718 {
14719 layerCount = layerCount_;
14720 return *this;
14721 }
14722
14723 operator const VkImageSubresourceLayers&() const
14724 {
14725 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14726 }
14727
14728 bool operator==( ImageSubresourceLayers const& rhs ) const
14729 {
14730 return ( aspectMask == rhs.aspectMask )
14731 && ( mipLevel == rhs.mipLevel )
14732 && ( baseArrayLayer == rhs.baseArrayLayer )
14733 && ( layerCount == rhs.layerCount );
14734 }
14735
14736 bool operator!=( ImageSubresourceLayers const& rhs ) const
14737 {
14738 return !operator==( rhs );
14739 }
14740
14741 ImageAspectFlags aspectMask;
14742 uint32_t mipLevel;
14743 uint32_t baseArrayLayer;
14744 uint32_t layerCount;
14745 };
14746 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14747
14748 struct ImageSubresourceRange
14749 {
14750 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14751 : aspectMask( aspectMask_ )
14752 , baseMipLevel( baseMipLevel_ )
14753 , levelCount( levelCount_ )
14754 , baseArrayLayer( baseArrayLayer_ )
14755 , layerCount( layerCount_ )
14756 {
14757 }
14758
14759 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14760 {
14761 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14762 }
14763
14764 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14765 {
14766 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14767 return *this;
14768 }
14769
14770 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14771 {
14772 aspectMask = aspectMask_;
14773 return *this;
14774 }
14775
14776 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14777 {
14778 baseMipLevel = baseMipLevel_;
14779 return *this;
14780 }
14781
14782 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14783 {
14784 levelCount = levelCount_;
14785 return *this;
14786 }
14787
14788 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14789 {
14790 baseArrayLayer = baseArrayLayer_;
14791 return *this;
14792 }
14793
14794 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14795 {
14796 layerCount = layerCount_;
14797 return *this;
14798 }
14799
14800 operator const VkImageSubresourceRange&() const
14801 {
14802 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14803 }
14804
14805 bool operator==( ImageSubresourceRange const& rhs ) const
14806 {
14807 return ( aspectMask == rhs.aspectMask )
14808 && ( baseMipLevel == rhs.baseMipLevel )
14809 && ( levelCount == rhs.levelCount )
14810 && ( baseArrayLayer == rhs.baseArrayLayer )
14811 && ( layerCount == rhs.layerCount );
14812 }
14813
14814 bool operator!=( ImageSubresourceRange const& rhs ) const
14815 {
14816 return !operator==( rhs );
14817 }
14818
14819 ImageAspectFlags aspectMask;
14820 uint32_t baseMipLevel;
14821 uint32_t levelCount;
14822 uint32_t baseArrayLayer;
14823 uint32_t layerCount;
14824 };
14825 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14826
14827 struct ImageMemoryBarrier
14828 {
14829 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() )
14830 : sType( StructureType::eImageMemoryBarrier )
14831 , pNext( nullptr )
14832 , srcAccessMask( srcAccessMask_ )
14833 , dstAccessMask( dstAccessMask_ )
14834 , oldLayout( oldLayout_ )
14835 , newLayout( newLayout_ )
14836 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14837 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14838 , image( image_ )
14839 , subresourceRange( subresourceRange_ )
14840 {
14841 }
14842
14843 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14844 {
14845 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14846 }
14847
14848 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14849 {
14850 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14851 return *this;
14852 }
14853
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014854 ImageMemoryBarrier& setPNext( const void* pNext_ )
14855 {
14856 pNext = pNext_;
14857 return *this;
14858 }
14859
14860 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14861 {
14862 srcAccessMask = srcAccessMask_;
14863 return *this;
14864 }
14865
14866 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14867 {
14868 dstAccessMask = dstAccessMask_;
14869 return *this;
14870 }
14871
14872 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14873 {
14874 oldLayout = oldLayout_;
14875 return *this;
14876 }
14877
14878 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14879 {
14880 newLayout = newLayout_;
14881 return *this;
14882 }
14883
14884 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14885 {
14886 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14887 return *this;
14888 }
14889
14890 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14891 {
14892 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14893 return *this;
14894 }
14895
14896 ImageMemoryBarrier& setImage( Image image_ )
14897 {
14898 image = image_;
14899 return *this;
14900 }
14901
14902 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14903 {
14904 subresourceRange = subresourceRange_;
14905 return *this;
14906 }
14907
14908 operator const VkImageMemoryBarrier&() const
14909 {
14910 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14911 }
14912
14913 bool operator==( ImageMemoryBarrier const& rhs ) const
14914 {
14915 return ( sType == rhs.sType )
14916 && ( pNext == rhs.pNext )
14917 && ( srcAccessMask == rhs.srcAccessMask )
14918 && ( dstAccessMask == rhs.dstAccessMask )
14919 && ( oldLayout == rhs.oldLayout )
14920 && ( newLayout == rhs.newLayout )
14921 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14922 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14923 && ( image == rhs.image )
14924 && ( subresourceRange == rhs.subresourceRange );
14925 }
14926
14927 bool operator!=( ImageMemoryBarrier const& rhs ) const
14928 {
14929 return !operator==( rhs );
14930 }
14931
14932 private:
14933 StructureType sType;
14934
14935 public:
14936 const void* pNext;
14937 AccessFlags srcAccessMask;
14938 AccessFlags dstAccessMask;
14939 ImageLayout oldLayout;
14940 ImageLayout newLayout;
14941 uint32_t srcQueueFamilyIndex;
14942 uint32_t dstQueueFamilyIndex;
14943 Image image;
14944 ImageSubresourceRange subresourceRange;
14945 };
14946 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14947
14948 struct ImageViewCreateInfo
14949 {
14950 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14951 : sType( StructureType::eImageViewCreateInfo )
14952 , pNext( nullptr )
14953 , flags( flags_ )
14954 , image( image_ )
14955 , viewType( viewType_ )
14956 , format( format_ )
14957 , components( components_ )
14958 , subresourceRange( subresourceRange_ )
14959 {
14960 }
14961
14962 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14963 {
14964 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14965 }
14966
14967 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14968 {
14969 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14970 return *this;
14971 }
14972
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014973 ImageViewCreateInfo& setPNext( const void* pNext_ )
14974 {
14975 pNext = pNext_;
14976 return *this;
14977 }
14978
14979 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14980 {
14981 flags = flags_;
14982 return *this;
14983 }
14984
14985 ImageViewCreateInfo& setImage( Image image_ )
14986 {
14987 image = image_;
14988 return *this;
14989 }
14990
14991 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14992 {
14993 viewType = viewType_;
14994 return *this;
14995 }
14996
14997 ImageViewCreateInfo& setFormat( Format format_ )
14998 {
14999 format = format_;
15000 return *this;
15001 }
15002
15003 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
15004 {
15005 components = components_;
15006 return *this;
15007 }
15008
15009 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15010 {
15011 subresourceRange = subresourceRange_;
15012 return *this;
15013 }
15014
15015 operator const VkImageViewCreateInfo&() const
15016 {
15017 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
15018 }
15019
15020 bool operator==( ImageViewCreateInfo const& rhs ) const
15021 {
15022 return ( sType == rhs.sType )
15023 && ( pNext == rhs.pNext )
15024 && ( flags == rhs.flags )
15025 && ( image == rhs.image )
15026 && ( viewType == rhs.viewType )
15027 && ( format == rhs.format )
15028 && ( components == rhs.components )
15029 && ( subresourceRange == rhs.subresourceRange );
15030 }
15031
15032 bool operator!=( ImageViewCreateInfo const& rhs ) const
15033 {
15034 return !operator==( rhs );
15035 }
15036
15037 private:
15038 StructureType sType;
15039
15040 public:
15041 const void* pNext;
15042 ImageViewCreateFlags flags;
15043 Image image;
15044 ImageViewType viewType;
15045 Format format;
15046 ComponentMapping components;
15047 ImageSubresourceRange subresourceRange;
15048 };
15049 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
15050
15051 struct ImageCopy
15052 {
15053 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15054 : srcSubresource( srcSubresource_ )
15055 , srcOffset( srcOffset_ )
15056 , dstSubresource( dstSubresource_ )
15057 , dstOffset( dstOffset_ )
15058 , extent( extent_ )
15059 {
15060 }
15061
15062 ImageCopy( VkImageCopy const & rhs )
15063 {
15064 memcpy( this, &rhs, sizeof(ImageCopy) );
15065 }
15066
15067 ImageCopy& operator=( VkImageCopy const & rhs )
15068 {
15069 memcpy( this, &rhs, sizeof(ImageCopy) );
15070 return *this;
15071 }
15072
15073 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15074 {
15075 srcSubresource = srcSubresource_;
15076 return *this;
15077 }
15078
15079 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
15080 {
15081 srcOffset = srcOffset_;
15082 return *this;
15083 }
15084
15085 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15086 {
15087 dstSubresource = dstSubresource_;
15088 return *this;
15089 }
15090
15091 ImageCopy& setDstOffset( Offset3D dstOffset_ )
15092 {
15093 dstOffset = dstOffset_;
15094 return *this;
15095 }
15096
15097 ImageCopy& setExtent( Extent3D extent_ )
15098 {
15099 extent = extent_;
15100 return *this;
15101 }
15102
15103 operator const VkImageCopy&() const
15104 {
15105 return *reinterpret_cast<const VkImageCopy*>(this);
15106 }
15107
15108 bool operator==( ImageCopy const& rhs ) const
15109 {
15110 return ( srcSubresource == rhs.srcSubresource )
15111 && ( srcOffset == rhs.srcOffset )
15112 && ( dstSubresource == rhs.dstSubresource )
15113 && ( dstOffset == rhs.dstOffset )
15114 && ( extent == rhs.extent );
15115 }
15116
15117 bool operator!=( ImageCopy const& rhs ) const
15118 {
15119 return !operator==( rhs );
15120 }
15121
15122 ImageSubresourceLayers srcSubresource;
15123 Offset3D srcOffset;
15124 ImageSubresourceLayers dstSubresource;
15125 Offset3D dstOffset;
15126 Extent3D extent;
15127 };
15128 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15129
15130 struct ImageBlit
15131 {
15132 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15133 : srcSubresource( srcSubresource_ )
15134 , dstSubresource( dstSubresource_ )
15135 {
15136 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15137 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15138 }
15139
15140 ImageBlit( VkImageBlit const & rhs )
15141 {
15142 memcpy( this, &rhs, sizeof(ImageBlit) );
15143 }
15144
15145 ImageBlit& operator=( VkImageBlit const & rhs )
15146 {
15147 memcpy( this, &rhs, sizeof(ImageBlit) );
15148 return *this;
15149 }
15150
15151 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15152 {
15153 srcSubresource = srcSubresource_;
15154 return *this;
15155 }
15156
15157 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15158 {
15159 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15160 return *this;
15161 }
15162
15163 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15164 {
15165 dstSubresource = dstSubresource_;
15166 return *this;
15167 }
15168
15169 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15170 {
15171 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15172 return *this;
15173 }
15174
15175 operator const VkImageBlit&() const
15176 {
15177 return *reinterpret_cast<const VkImageBlit*>(this);
15178 }
15179
15180 bool operator==( ImageBlit const& rhs ) const
15181 {
15182 return ( srcSubresource == rhs.srcSubresource )
15183 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
15184 && ( dstSubresource == rhs.dstSubresource )
15185 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
15186 }
15187
15188 bool operator!=( ImageBlit const& rhs ) const
15189 {
15190 return !operator==( rhs );
15191 }
15192
15193 ImageSubresourceLayers srcSubresource;
15194 Offset3D srcOffsets[2];
15195 ImageSubresourceLayers dstSubresource;
15196 Offset3D dstOffsets[2];
15197 };
15198 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
15199
15200 struct BufferImageCopy
15201 {
15202 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
15203 : bufferOffset( bufferOffset_ )
15204 , bufferRowLength( bufferRowLength_ )
15205 , bufferImageHeight( bufferImageHeight_ )
15206 , imageSubresource( imageSubresource_ )
15207 , imageOffset( imageOffset_ )
15208 , imageExtent( imageExtent_ )
15209 {
15210 }
15211
15212 BufferImageCopy( VkBufferImageCopy const & rhs )
15213 {
15214 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15215 }
15216
15217 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
15218 {
15219 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15220 return *this;
15221 }
15222
15223 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
15224 {
15225 bufferOffset = bufferOffset_;
15226 return *this;
15227 }
15228
15229 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
15230 {
15231 bufferRowLength = bufferRowLength_;
15232 return *this;
15233 }
15234
15235 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
15236 {
15237 bufferImageHeight = bufferImageHeight_;
15238 return *this;
15239 }
15240
15241 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
15242 {
15243 imageSubresource = imageSubresource_;
15244 return *this;
15245 }
15246
15247 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
15248 {
15249 imageOffset = imageOffset_;
15250 return *this;
15251 }
15252
15253 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
15254 {
15255 imageExtent = imageExtent_;
15256 return *this;
15257 }
15258
15259 operator const VkBufferImageCopy&() const
15260 {
15261 return *reinterpret_cast<const VkBufferImageCopy*>(this);
15262 }
15263
15264 bool operator==( BufferImageCopy const& rhs ) const
15265 {
15266 return ( bufferOffset == rhs.bufferOffset )
15267 && ( bufferRowLength == rhs.bufferRowLength )
15268 && ( bufferImageHeight == rhs.bufferImageHeight )
15269 && ( imageSubresource == rhs.imageSubresource )
15270 && ( imageOffset == rhs.imageOffset )
15271 && ( imageExtent == rhs.imageExtent );
15272 }
15273
15274 bool operator!=( BufferImageCopy const& rhs ) const
15275 {
15276 return !operator==( rhs );
15277 }
15278
15279 DeviceSize bufferOffset;
15280 uint32_t bufferRowLength;
15281 uint32_t bufferImageHeight;
15282 ImageSubresourceLayers imageSubresource;
15283 Offset3D imageOffset;
15284 Extent3D imageExtent;
15285 };
15286 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
15287
15288 struct ImageResolve
15289 {
15290 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15291 : srcSubresource( srcSubresource_ )
15292 , srcOffset( srcOffset_ )
15293 , dstSubresource( dstSubresource_ )
15294 , dstOffset( dstOffset_ )
15295 , extent( extent_ )
15296 {
15297 }
15298
15299 ImageResolve( VkImageResolve const & rhs )
15300 {
15301 memcpy( this, &rhs, sizeof(ImageResolve) );
15302 }
15303
15304 ImageResolve& operator=( VkImageResolve const & rhs )
15305 {
15306 memcpy( this, &rhs, sizeof(ImageResolve) );
15307 return *this;
15308 }
15309
15310 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15311 {
15312 srcSubresource = srcSubresource_;
15313 return *this;
15314 }
15315
15316 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15317 {
15318 srcOffset = srcOffset_;
15319 return *this;
15320 }
15321
15322 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15323 {
15324 dstSubresource = dstSubresource_;
15325 return *this;
15326 }
15327
15328 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15329 {
15330 dstOffset = dstOffset_;
15331 return *this;
15332 }
15333
15334 ImageResolve& setExtent( Extent3D extent_ )
15335 {
15336 extent = extent_;
15337 return *this;
15338 }
15339
15340 operator const VkImageResolve&() const
15341 {
15342 return *reinterpret_cast<const VkImageResolve*>(this);
15343 }
15344
15345 bool operator==( ImageResolve const& rhs ) const
15346 {
15347 return ( srcSubresource == rhs.srcSubresource )
15348 && ( srcOffset == rhs.srcOffset )
15349 && ( dstSubresource == rhs.dstSubresource )
15350 && ( dstOffset == rhs.dstOffset )
15351 && ( extent == rhs.extent );
15352 }
15353
15354 bool operator!=( ImageResolve const& rhs ) const
15355 {
15356 return !operator==( rhs );
15357 }
15358
15359 ImageSubresourceLayers srcSubresource;
15360 Offset3D srcOffset;
15361 ImageSubresourceLayers dstSubresource;
15362 Offset3D dstOffset;
15363 Extent3D extent;
15364 };
15365 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15366
15367 struct ClearAttachment
15368 {
15369 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15370 : aspectMask( aspectMask_ )
15371 , colorAttachment( colorAttachment_ )
15372 , clearValue( clearValue_ )
15373 {
15374 }
15375
15376 ClearAttachment( VkClearAttachment const & rhs )
15377 {
15378 memcpy( this, &rhs, sizeof(ClearAttachment) );
15379 }
15380
15381 ClearAttachment& operator=( VkClearAttachment const & rhs )
15382 {
15383 memcpy( this, &rhs, sizeof(ClearAttachment) );
15384 return *this;
15385 }
15386
15387 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15388 {
15389 aspectMask = aspectMask_;
15390 return *this;
15391 }
15392
15393 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15394 {
15395 colorAttachment = colorAttachment_;
15396 return *this;
15397 }
15398
15399 ClearAttachment& setClearValue( ClearValue clearValue_ )
15400 {
15401 clearValue = clearValue_;
15402 return *this;
15403 }
15404
15405 operator const VkClearAttachment&() const
15406 {
15407 return *reinterpret_cast<const VkClearAttachment*>(this);
15408 }
15409
15410 ImageAspectFlags aspectMask;
15411 uint32_t colorAttachment;
15412 ClearValue clearValue;
15413 };
15414 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15415
15416 enum class SparseImageFormatFlagBits
15417 {
15418 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15419 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15420 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15421 };
15422
15423 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15424
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015425 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015426 {
15427 return SparseImageFormatFlags( bit0 ) | bit1;
15428 }
15429
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015430 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15431 {
15432 return ~( SparseImageFormatFlags( bits ) );
15433 }
15434
15435 template <> struct FlagTraits<SparseImageFormatFlagBits>
15436 {
15437 enum
15438 {
15439 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15440 };
15441 };
15442
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015443 struct SparseImageFormatProperties
15444 {
15445 operator const VkSparseImageFormatProperties&() const
15446 {
15447 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15448 }
15449
15450 bool operator==( SparseImageFormatProperties const& rhs ) const
15451 {
15452 return ( aspectMask == rhs.aspectMask )
15453 && ( imageGranularity == rhs.imageGranularity )
15454 && ( flags == rhs.flags );
15455 }
15456
15457 bool operator!=( SparseImageFormatProperties const& rhs ) const
15458 {
15459 return !operator==( rhs );
15460 }
15461
15462 ImageAspectFlags aspectMask;
15463 Extent3D imageGranularity;
15464 SparseImageFormatFlags flags;
15465 };
15466 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15467
15468 struct SparseImageMemoryRequirements
15469 {
15470 operator const VkSparseImageMemoryRequirements&() const
15471 {
15472 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15473 }
15474
15475 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15476 {
15477 return ( formatProperties == rhs.formatProperties )
15478 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15479 && ( imageMipTailSize == rhs.imageMipTailSize )
15480 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15481 && ( imageMipTailStride == rhs.imageMipTailStride );
15482 }
15483
15484 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15485 {
15486 return !operator==( rhs );
15487 }
15488
15489 SparseImageFormatProperties formatProperties;
15490 uint32_t imageMipTailFirstLod;
15491 DeviceSize imageMipTailSize;
15492 DeviceSize imageMipTailOffset;
15493 DeviceSize imageMipTailStride;
15494 };
15495 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15496
Mark Young39389872017-01-19 21:10:49 -070015497 struct SparseImageFormatProperties2KHR
15498 {
15499 operator const VkSparseImageFormatProperties2KHR&() const
15500 {
15501 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15502 }
15503
15504 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15505 {
15506 return ( sType == rhs.sType )
15507 && ( pNext == rhs.pNext )
15508 && ( properties == rhs.properties );
15509 }
15510
15511 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15512 {
15513 return !operator==( rhs );
15514 }
15515
15516 private:
15517 StructureType sType;
15518
15519 public:
15520 void* pNext;
15521 SparseImageFormatProperties properties;
15522 };
15523 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15524
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015525 enum class SparseMemoryBindFlagBits
15526 {
15527 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15528 };
15529
15530 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15531
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015532 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015533 {
15534 return SparseMemoryBindFlags( bit0 ) | bit1;
15535 }
15536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015537 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15538 {
15539 return ~( SparseMemoryBindFlags( bits ) );
15540 }
15541
15542 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15543 {
15544 enum
15545 {
15546 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15547 };
15548 };
15549
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015550 struct SparseMemoryBind
15551 {
15552 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15553 : resourceOffset( resourceOffset_ )
15554 , size( size_ )
15555 , memory( memory_ )
15556 , memoryOffset( memoryOffset_ )
15557 , flags( flags_ )
15558 {
15559 }
15560
15561 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15562 {
15563 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15564 }
15565
15566 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15567 {
15568 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15569 return *this;
15570 }
15571
15572 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15573 {
15574 resourceOffset = resourceOffset_;
15575 return *this;
15576 }
15577
15578 SparseMemoryBind& setSize( DeviceSize size_ )
15579 {
15580 size = size_;
15581 return *this;
15582 }
15583
15584 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15585 {
15586 memory = memory_;
15587 return *this;
15588 }
15589
15590 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15591 {
15592 memoryOffset = memoryOffset_;
15593 return *this;
15594 }
15595
15596 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15597 {
15598 flags = flags_;
15599 return *this;
15600 }
15601
15602 operator const VkSparseMemoryBind&() const
15603 {
15604 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15605 }
15606
15607 bool operator==( SparseMemoryBind const& rhs ) const
15608 {
15609 return ( resourceOffset == rhs.resourceOffset )
15610 && ( size == rhs.size )
15611 && ( memory == rhs.memory )
15612 && ( memoryOffset == rhs.memoryOffset )
15613 && ( flags == rhs.flags );
15614 }
15615
15616 bool operator!=( SparseMemoryBind const& rhs ) const
15617 {
15618 return !operator==( rhs );
15619 }
15620
15621 DeviceSize resourceOffset;
15622 DeviceSize size;
15623 DeviceMemory memory;
15624 DeviceSize memoryOffset;
15625 SparseMemoryBindFlags flags;
15626 };
15627 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15628
15629 struct SparseImageMemoryBind
15630 {
15631 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15632 : subresource( subresource_ )
15633 , offset( offset_ )
15634 , extent( extent_ )
15635 , memory( memory_ )
15636 , memoryOffset( memoryOffset_ )
15637 , flags( flags_ )
15638 {
15639 }
15640
15641 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15642 {
15643 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15644 }
15645
15646 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15647 {
15648 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15649 return *this;
15650 }
15651
15652 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15653 {
15654 subresource = subresource_;
15655 return *this;
15656 }
15657
15658 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15659 {
15660 offset = offset_;
15661 return *this;
15662 }
15663
15664 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15665 {
15666 extent = extent_;
15667 return *this;
15668 }
15669
15670 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15671 {
15672 memory = memory_;
15673 return *this;
15674 }
15675
15676 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15677 {
15678 memoryOffset = memoryOffset_;
15679 return *this;
15680 }
15681
15682 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15683 {
15684 flags = flags_;
15685 return *this;
15686 }
15687
15688 operator const VkSparseImageMemoryBind&() const
15689 {
15690 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15691 }
15692
15693 bool operator==( SparseImageMemoryBind const& rhs ) const
15694 {
15695 return ( subresource == rhs.subresource )
15696 && ( offset == rhs.offset )
15697 && ( extent == rhs.extent )
15698 && ( memory == rhs.memory )
15699 && ( memoryOffset == rhs.memoryOffset )
15700 && ( flags == rhs.flags );
15701 }
15702
15703 bool operator!=( SparseImageMemoryBind const& rhs ) const
15704 {
15705 return !operator==( rhs );
15706 }
15707
15708 ImageSubresource subresource;
15709 Offset3D offset;
15710 Extent3D extent;
15711 DeviceMemory memory;
15712 DeviceSize memoryOffset;
15713 SparseMemoryBindFlags flags;
15714 };
15715 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15716
15717 struct SparseBufferMemoryBindInfo
15718 {
15719 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15720 : buffer( buffer_ )
15721 , bindCount( bindCount_ )
15722 , pBinds( pBinds_ )
15723 {
15724 }
15725
15726 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15727 {
15728 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15729 }
15730
15731 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15732 {
15733 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15734 return *this;
15735 }
15736
15737 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15738 {
15739 buffer = buffer_;
15740 return *this;
15741 }
15742
15743 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15744 {
15745 bindCount = bindCount_;
15746 return *this;
15747 }
15748
15749 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15750 {
15751 pBinds = pBinds_;
15752 return *this;
15753 }
15754
15755 operator const VkSparseBufferMemoryBindInfo&() const
15756 {
15757 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15758 }
15759
15760 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15761 {
15762 return ( buffer == rhs.buffer )
15763 && ( bindCount == rhs.bindCount )
15764 && ( pBinds == rhs.pBinds );
15765 }
15766
15767 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15768 {
15769 return !operator==( rhs );
15770 }
15771
15772 Buffer buffer;
15773 uint32_t bindCount;
15774 const SparseMemoryBind* pBinds;
15775 };
15776 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15777
15778 struct SparseImageOpaqueMemoryBindInfo
15779 {
15780 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15781 : image( image_ )
15782 , bindCount( bindCount_ )
15783 , pBinds( pBinds_ )
15784 {
15785 }
15786
15787 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15788 {
15789 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15790 }
15791
15792 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15793 {
15794 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15795 return *this;
15796 }
15797
15798 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15799 {
15800 image = image_;
15801 return *this;
15802 }
15803
15804 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15805 {
15806 bindCount = bindCount_;
15807 return *this;
15808 }
15809
15810 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15811 {
15812 pBinds = pBinds_;
15813 return *this;
15814 }
15815
15816 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15817 {
15818 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15819 }
15820
15821 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15822 {
15823 return ( image == rhs.image )
15824 && ( bindCount == rhs.bindCount )
15825 && ( pBinds == rhs.pBinds );
15826 }
15827
15828 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15829 {
15830 return !operator==( rhs );
15831 }
15832
15833 Image image;
15834 uint32_t bindCount;
15835 const SparseMemoryBind* pBinds;
15836 };
15837 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15838
15839 struct SparseImageMemoryBindInfo
15840 {
15841 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15842 : image( image_ )
15843 , bindCount( bindCount_ )
15844 , pBinds( pBinds_ )
15845 {
15846 }
15847
15848 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15849 {
15850 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15851 }
15852
15853 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15854 {
15855 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15856 return *this;
15857 }
15858
15859 SparseImageMemoryBindInfo& setImage( Image image_ )
15860 {
15861 image = image_;
15862 return *this;
15863 }
15864
15865 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15866 {
15867 bindCount = bindCount_;
15868 return *this;
15869 }
15870
15871 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15872 {
15873 pBinds = pBinds_;
15874 return *this;
15875 }
15876
15877 operator const VkSparseImageMemoryBindInfo&() const
15878 {
15879 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15880 }
15881
15882 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15883 {
15884 return ( image == rhs.image )
15885 && ( bindCount == rhs.bindCount )
15886 && ( pBinds == rhs.pBinds );
15887 }
15888
15889 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15890 {
15891 return !operator==( rhs );
15892 }
15893
15894 Image image;
15895 uint32_t bindCount;
15896 const SparseImageMemoryBind* pBinds;
15897 };
15898 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15899
15900 struct BindSparseInfo
15901 {
15902 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 )
15903 : sType( StructureType::eBindSparseInfo )
15904 , pNext( nullptr )
15905 , waitSemaphoreCount( waitSemaphoreCount_ )
15906 , pWaitSemaphores( pWaitSemaphores_ )
15907 , bufferBindCount( bufferBindCount_ )
15908 , pBufferBinds( pBufferBinds_ )
15909 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15910 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15911 , imageBindCount( imageBindCount_ )
15912 , pImageBinds( pImageBinds_ )
15913 , signalSemaphoreCount( signalSemaphoreCount_ )
15914 , pSignalSemaphores( pSignalSemaphores_ )
15915 {
15916 }
15917
15918 BindSparseInfo( VkBindSparseInfo const & rhs )
15919 {
15920 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15921 }
15922
15923 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15924 {
15925 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15926 return *this;
15927 }
15928
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015929 BindSparseInfo& setPNext( const void* pNext_ )
15930 {
15931 pNext = pNext_;
15932 return *this;
15933 }
15934
15935 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15936 {
15937 waitSemaphoreCount = waitSemaphoreCount_;
15938 return *this;
15939 }
15940
15941 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15942 {
15943 pWaitSemaphores = pWaitSemaphores_;
15944 return *this;
15945 }
15946
15947 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15948 {
15949 bufferBindCount = bufferBindCount_;
15950 return *this;
15951 }
15952
15953 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15954 {
15955 pBufferBinds = pBufferBinds_;
15956 return *this;
15957 }
15958
15959 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15960 {
15961 imageOpaqueBindCount = imageOpaqueBindCount_;
15962 return *this;
15963 }
15964
15965 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15966 {
15967 pImageOpaqueBinds = pImageOpaqueBinds_;
15968 return *this;
15969 }
15970
15971 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15972 {
15973 imageBindCount = imageBindCount_;
15974 return *this;
15975 }
15976
15977 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15978 {
15979 pImageBinds = pImageBinds_;
15980 return *this;
15981 }
15982
15983 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15984 {
15985 signalSemaphoreCount = signalSemaphoreCount_;
15986 return *this;
15987 }
15988
15989 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15990 {
15991 pSignalSemaphores = pSignalSemaphores_;
15992 return *this;
15993 }
15994
15995 operator const VkBindSparseInfo&() const
15996 {
15997 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15998 }
15999
16000 bool operator==( BindSparseInfo const& rhs ) const
16001 {
16002 return ( sType == rhs.sType )
16003 && ( pNext == rhs.pNext )
16004 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
16005 && ( pWaitSemaphores == rhs.pWaitSemaphores )
16006 && ( bufferBindCount == rhs.bufferBindCount )
16007 && ( pBufferBinds == rhs.pBufferBinds )
16008 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
16009 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
16010 && ( imageBindCount == rhs.imageBindCount )
16011 && ( pImageBinds == rhs.pImageBinds )
16012 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
16013 && ( pSignalSemaphores == rhs.pSignalSemaphores );
16014 }
16015
16016 bool operator!=( BindSparseInfo const& rhs ) const
16017 {
16018 return !operator==( rhs );
16019 }
16020
16021 private:
16022 StructureType sType;
16023
16024 public:
16025 const void* pNext;
16026 uint32_t waitSemaphoreCount;
16027 const Semaphore* pWaitSemaphores;
16028 uint32_t bufferBindCount;
16029 const SparseBufferMemoryBindInfo* pBufferBinds;
16030 uint32_t imageOpaqueBindCount;
16031 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
16032 uint32_t imageBindCount;
16033 const SparseImageMemoryBindInfo* pImageBinds;
16034 uint32_t signalSemaphoreCount;
16035 const Semaphore* pSignalSemaphores;
16036 };
16037 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
16038
16039 enum class PipelineStageFlagBits
16040 {
16041 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
16042 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
16043 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
16044 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
16045 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
16046 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
16047 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
16048 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
16049 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
16050 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
16051 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
16052 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
16053 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
16054 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
16055 eHost = VK_PIPELINE_STAGE_HOST_BIT,
16056 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016057 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
16058 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016059 };
16060
16061 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
16062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016063 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016064 {
16065 return PipelineStageFlags( bit0 ) | bit1;
16066 }
16067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016068 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
16069 {
16070 return ~( PipelineStageFlags( bits ) );
16071 }
16072
16073 template <> struct FlagTraits<PipelineStageFlagBits>
16074 {
16075 enum
16076 {
16077 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)
16078 };
16079 };
16080
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016081 enum class CommandPoolCreateFlagBits
16082 {
16083 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
16084 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
16085 };
16086
16087 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
16088
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016089 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016090 {
16091 return CommandPoolCreateFlags( bit0 ) | bit1;
16092 }
16093
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016094 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
16095 {
16096 return ~( CommandPoolCreateFlags( bits ) );
16097 }
16098
16099 template <> struct FlagTraits<CommandPoolCreateFlagBits>
16100 {
16101 enum
16102 {
16103 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
16104 };
16105 };
16106
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016107 struct CommandPoolCreateInfo
16108 {
16109 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
16110 : sType( StructureType::eCommandPoolCreateInfo )
16111 , pNext( nullptr )
16112 , flags( flags_ )
16113 , queueFamilyIndex( queueFamilyIndex_ )
16114 {
16115 }
16116
16117 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
16118 {
16119 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
16120 }
16121
16122 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
16123 {
16124 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
16125 return *this;
16126 }
16127
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016128 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16129 {
16130 pNext = pNext_;
16131 return *this;
16132 }
16133
16134 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16135 {
16136 flags = flags_;
16137 return *this;
16138 }
16139
16140 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16141 {
16142 queueFamilyIndex = queueFamilyIndex_;
16143 return *this;
16144 }
16145
16146 operator const VkCommandPoolCreateInfo&() const
16147 {
16148 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16149 }
16150
16151 bool operator==( CommandPoolCreateInfo const& rhs ) const
16152 {
16153 return ( sType == rhs.sType )
16154 && ( pNext == rhs.pNext )
16155 && ( flags == rhs.flags )
16156 && ( queueFamilyIndex == rhs.queueFamilyIndex );
16157 }
16158
16159 bool operator!=( CommandPoolCreateInfo const& rhs ) const
16160 {
16161 return !operator==( rhs );
16162 }
16163
16164 private:
16165 StructureType sType;
16166
16167 public:
16168 const void* pNext;
16169 CommandPoolCreateFlags flags;
16170 uint32_t queueFamilyIndex;
16171 };
16172 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
16173
16174 enum class CommandPoolResetFlagBits
16175 {
16176 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
16177 };
16178
16179 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
16180
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016181 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016182 {
16183 return CommandPoolResetFlags( bit0 ) | bit1;
16184 }
16185
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016186 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
16187 {
16188 return ~( CommandPoolResetFlags( bits ) );
16189 }
16190
16191 template <> struct FlagTraits<CommandPoolResetFlagBits>
16192 {
16193 enum
16194 {
16195 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
16196 };
16197 };
16198
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016199 enum class CommandBufferResetFlagBits
16200 {
16201 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
16202 };
16203
16204 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
16205
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016206 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016207 {
16208 return CommandBufferResetFlags( bit0 ) | bit1;
16209 }
16210
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016211 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
16212 {
16213 return ~( CommandBufferResetFlags( bits ) );
16214 }
16215
16216 template <> struct FlagTraits<CommandBufferResetFlagBits>
16217 {
16218 enum
16219 {
16220 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
16221 };
16222 };
16223
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016224 enum class SampleCountFlagBits
16225 {
16226 e1 = VK_SAMPLE_COUNT_1_BIT,
16227 e2 = VK_SAMPLE_COUNT_2_BIT,
16228 e4 = VK_SAMPLE_COUNT_4_BIT,
16229 e8 = VK_SAMPLE_COUNT_8_BIT,
16230 e16 = VK_SAMPLE_COUNT_16_BIT,
16231 e32 = VK_SAMPLE_COUNT_32_BIT,
16232 e64 = VK_SAMPLE_COUNT_64_BIT
16233 };
16234
16235 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
16236
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016237 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016238 {
16239 return SampleCountFlags( bit0 ) | bit1;
16240 }
16241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016242 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
16243 {
16244 return ~( SampleCountFlags( bits ) );
16245 }
16246
16247 template <> struct FlagTraits<SampleCountFlagBits>
16248 {
16249 enum
16250 {
16251 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
16252 };
16253 };
16254
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016255 struct ImageFormatProperties
16256 {
16257 operator const VkImageFormatProperties&() const
16258 {
16259 return *reinterpret_cast<const VkImageFormatProperties*>(this);
16260 }
16261
16262 bool operator==( ImageFormatProperties const& rhs ) const
16263 {
16264 return ( maxExtent == rhs.maxExtent )
16265 && ( maxMipLevels == rhs.maxMipLevels )
16266 && ( maxArrayLayers == rhs.maxArrayLayers )
16267 && ( sampleCounts == rhs.sampleCounts )
16268 && ( maxResourceSize == rhs.maxResourceSize );
16269 }
16270
16271 bool operator!=( ImageFormatProperties const& rhs ) const
16272 {
16273 return !operator==( rhs );
16274 }
16275
16276 Extent3D maxExtent;
16277 uint32_t maxMipLevels;
16278 uint32_t maxArrayLayers;
16279 SampleCountFlags sampleCounts;
16280 DeviceSize maxResourceSize;
16281 };
16282 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
16283
16284 struct ImageCreateInfo
16285 {
16286 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 )
16287 : sType( StructureType::eImageCreateInfo )
16288 , pNext( nullptr )
16289 , flags( flags_ )
16290 , imageType( imageType_ )
16291 , format( format_ )
16292 , extent( extent_ )
16293 , mipLevels( mipLevels_ )
16294 , arrayLayers( arrayLayers_ )
16295 , samples( samples_ )
16296 , tiling( tiling_ )
16297 , usage( usage_ )
16298 , sharingMode( sharingMode_ )
16299 , queueFamilyIndexCount( queueFamilyIndexCount_ )
16300 , pQueueFamilyIndices( pQueueFamilyIndices_ )
16301 , initialLayout( initialLayout_ )
16302 {
16303 }
16304
16305 ImageCreateInfo( VkImageCreateInfo const & rhs )
16306 {
16307 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16308 }
16309
16310 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16311 {
16312 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16313 return *this;
16314 }
16315
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016316 ImageCreateInfo& setPNext( const void* pNext_ )
16317 {
16318 pNext = pNext_;
16319 return *this;
16320 }
16321
16322 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16323 {
16324 flags = flags_;
16325 return *this;
16326 }
16327
16328 ImageCreateInfo& setImageType( ImageType imageType_ )
16329 {
16330 imageType = imageType_;
16331 return *this;
16332 }
16333
16334 ImageCreateInfo& setFormat( Format format_ )
16335 {
16336 format = format_;
16337 return *this;
16338 }
16339
16340 ImageCreateInfo& setExtent( Extent3D extent_ )
16341 {
16342 extent = extent_;
16343 return *this;
16344 }
16345
16346 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16347 {
16348 mipLevels = mipLevels_;
16349 return *this;
16350 }
16351
16352 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16353 {
16354 arrayLayers = arrayLayers_;
16355 return *this;
16356 }
16357
16358 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16359 {
16360 samples = samples_;
16361 return *this;
16362 }
16363
16364 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16365 {
16366 tiling = tiling_;
16367 return *this;
16368 }
16369
16370 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16371 {
16372 usage = usage_;
16373 return *this;
16374 }
16375
16376 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16377 {
16378 sharingMode = sharingMode_;
16379 return *this;
16380 }
16381
16382 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16383 {
16384 queueFamilyIndexCount = queueFamilyIndexCount_;
16385 return *this;
16386 }
16387
16388 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16389 {
16390 pQueueFamilyIndices = pQueueFamilyIndices_;
16391 return *this;
16392 }
16393
16394 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16395 {
16396 initialLayout = initialLayout_;
16397 return *this;
16398 }
16399
16400 operator const VkImageCreateInfo&() const
16401 {
16402 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16403 }
16404
16405 bool operator==( ImageCreateInfo const& rhs ) const
16406 {
16407 return ( sType == rhs.sType )
16408 && ( pNext == rhs.pNext )
16409 && ( flags == rhs.flags )
16410 && ( imageType == rhs.imageType )
16411 && ( format == rhs.format )
16412 && ( extent == rhs.extent )
16413 && ( mipLevels == rhs.mipLevels )
16414 && ( arrayLayers == rhs.arrayLayers )
16415 && ( samples == rhs.samples )
16416 && ( tiling == rhs.tiling )
16417 && ( usage == rhs.usage )
16418 && ( sharingMode == rhs.sharingMode )
16419 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16420 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16421 && ( initialLayout == rhs.initialLayout );
16422 }
16423
16424 bool operator!=( ImageCreateInfo const& rhs ) const
16425 {
16426 return !operator==( rhs );
16427 }
16428
16429 private:
16430 StructureType sType;
16431
16432 public:
16433 const void* pNext;
16434 ImageCreateFlags flags;
16435 ImageType imageType;
16436 Format format;
16437 Extent3D extent;
16438 uint32_t mipLevels;
16439 uint32_t arrayLayers;
16440 SampleCountFlagBits samples;
16441 ImageTiling tiling;
16442 ImageUsageFlags usage;
16443 SharingMode sharingMode;
16444 uint32_t queueFamilyIndexCount;
16445 const uint32_t* pQueueFamilyIndices;
16446 ImageLayout initialLayout;
16447 };
16448 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16449
16450 struct PipelineMultisampleStateCreateInfo
16451 {
16452 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16453 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16454 , pNext( nullptr )
16455 , flags( flags_ )
16456 , rasterizationSamples( rasterizationSamples_ )
16457 , sampleShadingEnable( sampleShadingEnable_ )
16458 , minSampleShading( minSampleShading_ )
16459 , pSampleMask( pSampleMask_ )
16460 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16461 , alphaToOneEnable( alphaToOneEnable_ )
16462 {
16463 }
16464
16465 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16466 {
16467 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16468 }
16469
16470 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16471 {
16472 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16473 return *this;
16474 }
16475
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016476 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16477 {
16478 pNext = pNext_;
16479 return *this;
16480 }
16481
16482 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16483 {
16484 flags = flags_;
16485 return *this;
16486 }
16487
16488 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16489 {
16490 rasterizationSamples = rasterizationSamples_;
16491 return *this;
16492 }
16493
16494 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16495 {
16496 sampleShadingEnable = sampleShadingEnable_;
16497 return *this;
16498 }
16499
16500 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16501 {
16502 minSampleShading = minSampleShading_;
16503 return *this;
16504 }
16505
16506 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16507 {
16508 pSampleMask = pSampleMask_;
16509 return *this;
16510 }
16511
16512 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16513 {
16514 alphaToCoverageEnable = alphaToCoverageEnable_;
16515 return *this;
16516 }
16517
16518 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16519 {
16520 alphaToOneEnable = alphaToOneEnable_;
16521 return *this;
16522 }
16523
16524 operator const VkPipelineMultisampleStateCreateInfo&() const
16525 {
16526 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16527 }
16528
16529 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16530 {
16531 return ( sType == rhs.sType )
16532 && ( pNext == rhs.pNext )
16533 && ( flags == rhs.flags )
16534 && ( rasterizationSamples == rhs.rasterizationSamples )
16535 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16536 && ( minSampleShading == rhs.minSampleShading )
16537 && ( pSampleMask == rhs.pSampleMask )
16538 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16539 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16540 }
16541
16542 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16543 {
16544 return !operator==( rhs );
16545 }
16546
16547 private:
16548 StructureType sType;
16549
16550 public:
16551 const void* pNext;
16552 PipelineMultisampleStateCreateFlags flags;
16553 SampleCountFlagBits rasterizationSamples;
16554 Bool32 sampleShadingEnable;
16555 float minSampleShading;
16556 const SampleMask* pSampleMask;
16557 Bool32 alphaToCoverageEnable;
16558 Bool32 alphaToOneEnable;
16559 };
16560 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16561
16562 struct GraphicsPipelineCreateInfo
16563 {
16564 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 )
16565 : sType( StructureType::eGraphicsPipelineCreateInfo )
16566 , pNext( nullptr )
16567 , flags( flags_ )
16568 , stageCount( stageCount_ )
16569 , pStages( pStages_ )
16570 , pVertexInputState( pVertexInputState_ )
16571 , pInputAssemblyState( pInputAssemblyState_ )
16572 , pTessellationState( pTessellationState_ )
16573 , pViewportState( pViewportState_ )
16574 , pRasterizationState( pRasterizationState_ )
16575 , pMultisampleState( pMultisampleState_ )
16576 , pDepthStencilState( pDepthStencilState_ )
16577 , pColorBlendState( pColorBlendState_ )
16578 , pDynamicState( pDynamicState_ )
16579 , layout( layout_ )
16580 , renderPass( renderPass_ )
16581 , subpass( subpass_ )
16582 , basePipelineHandle( basePipelineHandle_ )
16583 , basePipelineIndex( basePipelineIndex_ )
16584 {
16585 }
16586
16587 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16588 {
16589 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16590 }
16591
16592 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16593 {
16594 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16595 return *this;
16596 }
16597
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016598 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16599 {
16600 pNext = pNext_;
16601 return *this;
16602 }
16603
16604 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16605 {
16606 flags = flags_;
16607 return *this;
16608 }
16609
16610 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16611 {
16612 stageCount = stageCount_;
16613 return *this;
16614 }
16615
16616 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16617 {
16618 pStages = pStages_;
16619 return *this;
16620 }
16621
16622 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16623 {
16624 pVertexInputState = pVertexInputState_;
16625 return *this;
16626 }
16627
16628 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16629 {
16630 pInputAssemblyState = pInputAssemblyState_;
16631 return *this;
16632 }
16633
16634 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16635 {
16636 pTessellationState = pTessellationState_;
16637 return *this;
16638 }
16639
16640 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16641 {
16642 pViewportState = pViewportState_;
16643 return *this;
16644 }
16645
16646 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16647 {
16648 pRasterizationState = pRasterizationState_;
16649 return *this;
16650 }
16651
16652 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16653 {
16654 pMultisampleState = pMultisampleState_;
16655 return *this;
16656 }
16657
16658 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16659 {
16660 pDepthStencilState = pDepthStencilState_;
16661 return *this;
16662 }
16663
16664 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16665 {
16666 pColorBlendState = pColorBlendState_;
16667 return *this;
16668 }
16669
16670 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16671 {
16672 pDynamicState = pDynamicState_;
16673 return *this;
16674 }
16675
16676 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16677 {
16678 layout = layout_;
16679 return *this;
16680 }
16681
16682 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16683 {
16684 renderPass = renderPass_;
16685 return *this;
16686 }
16687
16688 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16689 {
16690 subpass = subpass_;
16691 return *this;
16692 }
16693
16694 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16695 {
16696 basePipelineHandle = basePipelineHandle_;
16697 return *this;
16698 }
16699
16700 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16701 {
16702 basePipelineIndex = basePipelineIndex_;
16703 return *this;
16704 }
16705
16706 operator const VkGraphicsPipelineCreateInfo&() const
16707 {
16708 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16709 }
16710
16711 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16712 {
16713 return ( sType == rhs.sType )
16714 && ( pNext == rhs.pNext )
16715 && ( flags == rhs.flags )
16716 && ( stageCount == rhs.stageCount )
16717 && ( pStages == rhs.pStages )
16718 && ( pVertexInputState == rhs.pVertexInputState )
16719 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16720 && ( pTessellationState == rhs.pTessellationState )
16721 && ( pViewportState == rhs.pViewportState )
16722 && ( pRasterizationState == rhs.pRasterizationState )
16723 && ( pMultisampleState == rhs.pMultisampleState )
16724 && ( pDepthStencilState == rhs.pDepthStencilState )
16725 && ( pColorBlendState == rhs.pColorBlendState )
16726 && ( pDynamicState == rhs.pDynamicState )
16727 && ( layout == rhs.layout )
16728 && ( renderPass == rhs.renderPass )
16729 && ( subpass == rhs.subpass )
16730 && ( basePipelineHandle == rhs.basePipelineHandle )
16731 && ( basePipelineIndex == rhs.basePipelineIndex );
16732 }
16733
16734 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16735 {
16736 return !operator==( rhs );
16737 }
16738
16739 private:
16740 StructureType sType;
16741
16742 public:
16743 const void* pNext;
16744 PipelineCreateFlags flags;
16745 uint32_t stageCount;
16746 const PipelineShaderStageCreateInfo* pStages;
16747 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16748 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16749 const PipelineTessellationStateCreateInfo* pTessellationState;
16750 const PipelineViewportStateCreateInfo* pViewportState;
16751 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16752 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16753 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16754 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16755 const PipelineDynamicStateCreateInfo* pDynamicState;
16756 PipelineLayout layout;
16757 RenderPass renderPass;
16758 uint32_t subpass;
16759 Pipeline basePipelineHandle;
16760 int32_t basePipelineIndex;
16761 };
16762 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16763
16764 struct PhysicalDeviceLimits
16765 {
16766 operator const VkPhysicalDeviceLimits&() const
16767 {
16768 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16769 }
16770
16771 bool operator==( PhysicalDeviceLimits const& rhs ) const
16772 {
16773 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16774 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16775 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16776 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16777 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16778 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16779 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16780 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16781 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16782 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16783 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16784 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16785 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16786 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16787 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16788 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16789 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16790 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16791 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16792 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16793 && ( maxPerStageResources == rhs.maxPerStageResources )
16794 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16795 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16796 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16797 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16798 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16799 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16800 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16801 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16802 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16803 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16804 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16805 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16806 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16807 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16808 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16809 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16810 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16811 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16812 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16813 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16814 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16815 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16816 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16817 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16818 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16819 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16820 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16821 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16822 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16823 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16824 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16825 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16826 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16827 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16828 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16829 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16830 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16831 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16832 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16833 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16834 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16835 && ( maxViewports == rhs.maxViewports )
16836 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16837 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16838 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16839 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16840 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16841 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16842 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16843 && ( minTexelOffset == rhs.minTexelOffset )
16844 && ( maxTexelOffset == rhs.maxTexelOffset )
16845 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16846 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16847 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16848 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16849 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16850 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16851 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16852 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16853 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16854 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16855 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16856 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16857 && ( maxColorAttachments == rhs.maxColorAttachments )
16858 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16859 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16860 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16861 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16862 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16863 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16864 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16865 && ( timestampPeriod == rhs.timestampPeriod )
16866 && ( maxClipDistances == rhs.maxClipDistances )
16867 && ( maxCullDistances == rhs.maxCullDistances )
16868 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16869 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16870 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16871 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16872 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16873 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16874 && ( strictLines == rhs.strictLines )
16875 && ( standardSampleLocations == rhs.standardSampleLocations )
16876 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16877 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16878 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16879 }
16880
16881 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16882 {
16883 return !operator==( rhs );
16884 }
16885
16886 uint32_t maxImageDimension1D;
16887 uint32_t maxImageDimension2D;
16888 uint32_t maxImageDimension3D;
16889 uint32_t maxImageDimensionCube;
16890 uint32_t maxImageArrayLayers;
16891 uint32_t maxTexelBufferElements;
16892 uint32_t maxUniformBufferRange;
16893 uint32_t maxStorageBufferRange;
16894 uint32_t maxPushConstantsSize;
16895 uint32_t maxMemoryAllocationCount;
16896 uint32_t maxSamplerAllocationCount;
16897 DeviceSize bufferImageGranularity;
16898 DeviceSize sparseAddressSpaceSize;
16899 uint32_t maxBoundDescriptorSets;
16900 uint32_t maxPerStageDescriptorSamplers;
16901 uint32_t maxPerStageDescriptorUniformBuffers;
16902 uint32_t maxPerStageDescriptorStorageBuffers;
16903 uint32_t maxPerStageDescriptorSampledImages;
16904 uint32_t maxPerStageDescriptorStorageImages;
16905 uint32_t maxPerStageDescriptorInputAttachments;
16906 uint32_t maxPerStageResources;
16907 uint32_t maxDescriptorSetSamplers;
16908 uint32_t maxDescriptorSetUniformBuffers;
16909 uint32_t maxDescriptorSetUniformBuffersDynamic;
16910 uint32_t maxDescriptorSetStorageBuffers;
16911 uint32_t maxDescriptorSetStorageBuffersDynamic;
16912 uint32_t maxDescriptorSetSampledImages;
16913 uint32_t maxDescriptorSetStorageImages;
16914 uint32_t maxDescriptorSetInputAttachments;
16915 uint32_t maxVertexInputAttributes;
16916 uint32_t maxVertexInputBindings;
16917 uint32_t maxVertexInputAttributeOffset;
16918 uint32_t maxVertexInputBindingStride;
16919 uint32_t maxVertexOutputComponents;
16920 uint32_t maxTessellationGenerationLevel;
16921 uint32_t maxTessellationPatchSize;
16922 uint32_t maxTessellationControlPerVertexInputComponents;
16923 uint32_t maxTessellationControlPerVertexOutputComponents;
16924 uint32_t maxTessellationControlPerPatchOutputComponents;
16925 uint32_t maxTessellationControlTotalOutputComponents;
16926 uint32_t maxTessellationEvaluationInputComponents;
16927 uint32_t maxTessellationEvaluationOutputComponents;
16928 uint32_t maxGeometryShaderInvocations;
16929 uint32_t maxGeometryInputComponents;
16930 uint32_t maxGeometryOutputComponents;
16931 uint32_t maxGeometryOutputVertices;
16932 uint32_t maxGeometryTotalOutputComponents;
16933 uint32_t maxFragmentInputComponents;
16934 uint32_t maxFragmentOutputAttachments;
16935 uint32_t maxFragmentDualSrcAttachments;
16936 uint32_t maxFragmentCombinedOutputResources;
16937 uint32_t maxComputeSharedMemorySize;
16938 uint32_t maxComputeWorkGroupCount[3];
16939 uint32_t maxComputeWorkGroupInvocations;
16940 uint32_t maxComputeWorkGroupSize[3];
16941 uint32_t subPixelPrecisionBits;
16942 uint32_t subTexelPrecisionBits;
16943 uint32_t mipmapPrecisionBits;
16944 uint32_t maxDrawIndexedIndexValue;
16945 uint32_t maxDrawIndirectCount;
16946 float maxSamplerLodBias;
16947 float maxSamplerAnisotropy;
16948 uint32_t maxViewports;
16949 uint32_t maxViewportDimensions[2];
16950 float viewportBoundsRange[2];
16951 uint32_t viewportSubPixelBits;
16952 size_t minMemoryMapAlignment;
16953 DeviceSize minTexelBufferOffsetAlignment;
16954 DeviceSize minUniformBufferOffsetAlignment;
16955 DeviceSize minStorageBufferOffsetAlignment;
16956 int32_t minTexelOffset;
16957 uint32_t maxTexelOffset;
16958 int32_t minTexelGatherOffset;
16959 uint32_t maxTexelGatherOffset;
16960 float minInterpolationOffset;
16961 float maxInterpolationOffset;
16962 uint32_t subPixelInterpolationOffsetBits;
16963 uint32_t maxFramebufferWidth;
16964 uint32_t maxFramebufferHeight;
16965 uint32_t maxFramebufferLayers;
16966 SampleCountFlags framebufferColorSampleCounts;
16967 SampleCountFlags framebufferDepthSampleCounts;
16968 SampleCountFlags framebufferStencilSampleCounts;
16969 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16970 uint32_t maxColorAttachments;
16971 SampleCountFlags sampledImageColorSampleCounts;
16972 SampleCountFlags sampledImageIntegerSampleCounts;
16973 SampleCountFlags sampledImageDepthSampleCounts;
16974 SampleCountFlags sampledImageStencilSampleCounts;
16975 SampleCountFlags storageImageSampleCounts;
16976 uint32_t maxSampleMaskWords;
16977 Bool32 timestampComputeAndGraphics;
16978 float timestampPeriod;
16979 uint32_t maxClipDistances;
16980 uint32_t maxCullDistances;
16981 uint32_t maxCombinedClipAndCullDistances;
16982 uint32_t discreteQueuePriorities;
16983 float pointSizeRange[2];
16984 float lineWidthRange[2];
16985 float pointSizeGranularity;
16986 float lineWidthGranularity;
16987 Bool32 strictLines;
16988 Bool32 standardSampleLocations;
16989 DeviceSize optimalBufferCopyOffsetAlignment;
16990 DeviceSize optimalBufferCopyRowPitchAlignment;
16991 DeviceSize nonCoherentAtomSize;
16992 };
16993 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16994
16995 struct PhysicalDeviceProperties
16996 {
16997 operator const VkPhysicalDeviceProperties&() const
16998 {
16999 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
17000 }
17001
17002 bool operator==( PhysicalDeviceProperties const& rhs ) const
17003 {
17004 return ( apiVersion == rhs.apiVersion )
17005 && ( driverVersion == rhs.driverVersion )
17006 && ( vendorID == rhs.vendorID )
17007 && ( deviceID == rhs.deviceID )
17008 && ( deviceType == rhs.deviceType )
17009 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
17010 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
17011 && ( limits == rhs.limits )
17012 && ( sparseProperties == rhs.sparseProperties );
17013 }
17014
17015 bool operator!=( PhysicalDeviceProperties const& rhs ) const
17016 {
17017 return !operator==( rhs );
17018 }
17019
17020 uint32_t apiVersion;
17021 uint32_t driverVersion;
17022 uint32_t vendorID;
17023 uint32_t deviceID;
17024 PhysicalDeviceType deviceType;
17025 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
17026 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
17027 PhysicalDeviceLimits limits;
17028 PhysicalDeviceSparseProperties sparseProperties;
17029 };
17030 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
17031
Mark Young39389872017-01-19 21:10:49 -070017032 struct PhysicalDeviceProperties2KHR
17033 {
17034 operator const VkPhysicalDeviceProperties2KHR&() const
17035 {
17036 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
17037 }
17038
17039 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
17040 {
17041 return ( sType == rhs.sType )
17042 && ( pNext == rhs.pNext )
17043 && ( properties == rhs.properties );
17044 }
17045
17046 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
17047 {
17048 return !operator==( rhs );
17049 }
17050
17051 private:
17052 StructureType sType;
17053
17054 public:
17055 void* pNext;
17056 PhysicalDeviceProperties properties;
17057 };
17058 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
17059
17060 struct ImageFormatProperties2KHR
17061 {
17062 operator const VkImageFormatProperties2KHR&() const
17063 {
17064 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
17065 }
17066
17067 bool operator==( ImageFormatProperties2KHR const& rhs ) const
17068 {
17069 return ( sType == rhs.sType )
17070 && ( pNext == rhs.pNext )
17071 && ( imageFormatProperties == rhs.imageFormatProperties );
17072 }
17073
17074 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
17075 {
17076 return !operator==( rhs );
17077 }
17078
17079 private:
17080 StructureType sType;
17081
17082 public:
17083 void* pNext;
17084 ImageFormatProperties imageFormatProperties;
17085 };
17086 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17087
17088 struct PhysicalDeviceSparseImageFormatInfo2KHR
17089 {
17090 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
17091 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
17092 , pNext( nullptr )
17093 , format( format_ )
17094 , type( type_ )
17095 , samples( samples_ )
17096 , usage( usage_ )
17097 , tiling( tiling_ )
17098 {
17099 }
17100
17101 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17102 {
17103 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
17104 }
17105
17106 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17107 {
17108 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
17109 return *this;
17110 }
17111
Mark Young39389872017-01-19 21:10:49 -070017112 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
17113 {
17114 pNext = pNext_;
17115 return *this;
17116 }
17117
17118 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
17119 {
17120 format = format_;
17121 return *this;
17122 }
17123
17124 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
17125 {
17126 type = type_;
17127 return *this;
17128 }
17129
17130 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17131 {
17132 samples = samples_;
17133 return *this;
17134 }
17135
17136 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17137 {
17138 usage = usage_;
17139 return *this;
17140 }
17141
17142 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17143 {
17144 tiling = tiling_;
17145 return *this;
17146 }
17147
17148 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17149 {
17150 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17151 }
17152
17153 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17154 {
17155 return ( sType == rhs.sType )
17156 && ( pNext == rhs.pNext )
17157 && ( format == rhs.format )
17158 && ( type == rhs.type )
17159 && ( samples == rhs.samples )
17160 && ( usage == rhs.usage )
17161 && ( tiling == rhs.tiling );
17162 }
17163
17164 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17165 {
17166 return !operator==( rhs );
17167 }
17168
17169 private:
17170 StructureType sType;
17171
17172 public:
17173 const void* pNext;
17174 Format format;
17175 ImageType type;
17176 SampleCountFlagBits samples;
17177 ImageUsageFlags usage;
17178 ImageTiling tiling;
17179 };
17180 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
17181
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017182 enum class AttachmentDescriptionFlagBits
17183 {
17184 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
17185 };
17186
17187 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
17188
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017189 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017190 {
17191 return AttachmentDescriptionFlags( bit0 ) | bit1;
17192 }
17193
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017194 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
17195 {
17196 return ~( AttachmentDescriptionFlags( bits ) );
17197 }
17198
17199 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
17200 {
17201 enum
17202 {
17203 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
17204 };
17205 };
17206
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017207 struct AttachmentDescription
17208 {
17209 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 )
17210 : flags( flags_ )
17211 , format( format_ )
17212 , samples( samples_ )
17213 , loadOp( loadOp_ )
17214 , storeOp( storeOp_ )
17215 , stencilLoadOp( stencilLoadOp_ )
17216 , stencilStoreOp( stencilStoreOp_ )
17217 , initialLayout( initialLayout_ )
17218 , finalLayout( finalLayout_ )
17219 {
17220 }
17221
17222 AttachmentDescription( VkAttachmentDescription const & rhs )
17223 {
17224 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17225 }
17226
17227 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
17228 {
17229 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17230 return *this;
17231 }
17232
17233 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
17234 {
17235 flags = flags_;
17236 return *this;
17237 }
17238
17239 AttachmentDescription& setFormat( Format format_ )
17240 {
17241 format = format_;
17242 return *this;
17243 }
17244
17245 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
17246 {
17247 samples = samples_;
17248 return *this;
17249 }
17250
17251 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
17252 {
17253 loadOp = loadOp_;
17254 return *this;
17255 }
17256
17257 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
17258 {
17259 storeOp = storeOp_;
17260 return *this;
17261 }
17262
17263 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
17264 {
17265 stencilLoadOp = stencilLoadOp_;
17266 return *this;
17267 }
17268
17269 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
17270 {
17271 stencilStoreOp = stencilStoreOp_;
17272 return *this;
17273 }
17274
17275 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
17276 {
17277 initialLayout = initialLayout_;
17278 return *this;
17279 }
17280
17281 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
17282 {
17283 finalLayout = finalLayout_;
17284 return *this;
17285 }
17286
17287 operator const VkAttachmentDescription&() const
17288 {
17289 return *reinterpret_cast<const VkAttachmentDescription*>(this);
17290 }
17291
17292 bool operator==( AttachmentDescription const& rhs ) const
17293 {
17294 return ( flags == rhs.flags )
17295 && ( format == rhs.format )
17296 && ( samples == rhs.samples )
17297 && ( loadOp == rhs.loadOp )
17298 && ( storeOp == rhs.storeOp )
17299 && ( stencilLoadOp == rhs.stencilLoadOp )
17300 && ( stencilStoreOp == rhs.stencilStoreOp )
17301 && ( initialLayout == rhs.initialLayout )
17302 && ( finalLayout == rhs.finalLayout );
17303 }
17304
17305 bool operator!=( AttachmentDescription const& rhs ) const
17306 {
17307 return !operator==( rhs );
17308 }
17309
17310 AttachmentDescriptionFlags flags;
17311 Format format;
17312 SampleCountFlagBits samples;
17313 AttachmentLoadOp loadOp;
17314 AttachmentStoreOp storeOp;
17315 AttachmentLoadOp stencilLoadOp;
17316 AttachmentStoreOp stencilStoreOp;
17317 ImageLayout initialLayout;
17318 ImageLayout finalLayout;
17319 };
17320 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17321
17322 enum class StencilFaceFlagBits
17323 {
17324 eFront = VK_STENCIL_FACE_FRONT_BIT,
17325 eBack = VK_STENCIL_FACE_BACK_BIT,
17326 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17327 };
17328
17329 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17330
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017331 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017332 {
17333 return StencilFaceFlags( bit0 ) | bit1;
17334 }
17335
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017336 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17337 {
17338 return ~( StencilFaceFlags( bits ) );
17339 }
17340
17341 template <> struct FlagTraits<StencilFaceFlagBits>
17342 {
17343 enum
17344 {
17345 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17346 };
17347 };
17348
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017349 enum class DescriptorPoolCreateFlagBits
17350 {
17351 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17352 };
17353
17354 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17355
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017356 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017357 {
17358 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17359 }
17360
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017361 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17362 {
17363 return ~( DescriptorPoolCreateFlags( bits ) );
17364 }
17365
17366 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17367 {
17368 enum
17369 {
17370 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17371 };
17372 };
17373
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017374 struct DescriptorPoolCreateInfo
17375 {
17376 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17377 : sType( StructureType::eDescriptorPoolCreateInfo )
17378 , pNext( nullptr )
17379 , flags( flags_ )
17380 , maxSets( maxSets_ )
17381 , poolSizeCount( poolSizeCount_ )
17382 , pPoolSizes( pPoolSizes_ )
17383 {
17384 }
17385
17386 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17387 {
17388 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17389 }
17390
17391 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17392 {
17393 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17394 return *this;
17395 }
17396
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017397 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17398 {
17399 pNext = pNext_;
17400 return *this;
17401 }
17402
17403 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17404 {
17405 flags = flags_;
17406 return *this;
17407 }
17408
17409 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17410 {
17411 maxSets = maxSets_;
17412 return *this;
17413 }
17414
17415 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17416 {
17417 poolSizeCount = poolSizeCount_;
17418 return *this;
17419 }
17420
17421 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17422 {
17423 pPoolSizes = pPoolSizes_;
17424 return *this;
17425 }
17426
17427 operator const VkDescriptorPoolCreateInfo&() const
17428 {
17429 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17430 }
17431
17432 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17433 {
17434 return ( sType == rhs.sType )
17435 && ( pNext == rhs.pNext )
17436 && ( flags == rhs.flags )
17437 && ( maxSets == rhs.maxSets )
17438 && ( poolSizeCount == rhs.poolSizeCount )
17439 && ( pPoolSizes == rhs.pPoolSizes );
17440 }
17441
17442 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17443 {
17444 return !operator==( rhs );
17445 }
17446
17447 private:
17448 StructureType sType;
17449
17450 public:
17451 const void* pNext;
17452 DescriptorPoolCreateFlags flags;
17453 uint32_t maxSets;
17454 uint32_t poolSizeCount;
17455 const DescriptorPoolSize* pPoolSizes;
17456 };
17457 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17458
17459 enum class DependencyFlagBits
17460 {
Mark Young0f183a82017-02-28 09:58:04 -070017461 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17462 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17463 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017464 };
17465
17466 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017468 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017469 {
17470 return DependencyFlags( bit0 ) | bit1;
17471 }
17472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017473 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17474 {
17475 return ~( DependencyFlags( bits ) );
17476 }
17477
17478 template <> struct FlagTraits<DependencyFlagBits>
17479 {
17480 enum
17481 {
Mark Young0f183a82017-02-28 09:58:04 -070017482 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017483 };
17484 };
17485
17486 struct SubpassDependency
17487 {
17488 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17489 : srcSubpass( srcSubpass_ )
17490 , dstSubpass( dstSubpass_ )
17491 , srcStageMask( srcStageMask_ )
17492 , dstStageMask( dstStageMask_ )
17493 , srcAccessMask( srcAccessMask_ )
17494 , dstAccessMask( dstAccessMask_ )
17495 , dependencyFlags( dependencyFlags_ )
17496 {
17497 }
17498
17499 SubpassDependency( VkSubpassDependency const & rhs )
17500 {
17501 memcpy( this, &rhs, sizeof(SubpassDependency) );
17502 }
17503
17504 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17505 {
17506 memcpy( this, &rhs, sizeof(SubpassDependency) );
17507 return *this;
17508 }
17509
17510 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17511 {
17512 srcSubpass = srcSubpass_;
17513 return *this;
17514 }
17515
17516 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17517 {
17518 dstSubpass = dstSubpass_;
17519 return *this;
17520 }
17521
17522 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17523 {
17524 srcStageMask = srcStageMask_;
17525 return *this;
17526 }
17527
17528 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17529 {
17530 dstStageMask = dstStageMask_;
17531 return *this;
17532 }
17533
17534 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17535 {
17536 srcAccessMask = srcAccessMask_;
17537 return *this;
17538 }
17539
17540 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17541 {
17542 dstAccessMask = dstAccessMask_;
17543 return *this;
17544 }
17545
17546 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17547 {
17548 dependencyFlags = dependencyFlags_;
17549 return *this;
17550 }
17551
17552 operator const VkSubpassDependency&() const
17553 {
17554 return *reinterpret_cast<const VkSubpassDependency*>(this);
17555 }
17556
17557 bool operator==( SubpassDependency const& rhs ) const
17558 {
17559 return ( srcSubpass == rhs.srcSubpass )
17560 && ( dstSubpass == rhs.dstSubpass )
17561 && ( srcStageMask == rhs.srcStageMask )
17562 && ( dstStageMask == rhs.dstStageMask )
17563 && ( srcAccessMask == rhs.srcAccessMask )
17564 && ( dstAccessMask == rhs.dstAccessMask )
17565 && ( dependencyFlags == rhs.dependencyFlags );
17566 }
17567
17568 bool operator!=( SubpassDependency const& rhs ) const
17569 {
17570 return !operator==( rhs );
17571 }
17572
17573 uint32_t srcSubpass;
17574 uint32_t dstSubpass;
17575 PipelineStageFlags srcStageMask;
17576 PipelineStageFlags dstStageMask;
17577 AccessFlags srcAccessMask;
17578 AccessFlags dstAccessMask;
17579 DependencyFlags dependencyFlags;
17580 };
17581 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17582
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017583 enum class PresentModeKHR
17584 {
17585 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17586 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17587 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060017588 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
17589 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
17590 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017591 };
17592
17593 enum class ColorSpaceKHR
17594 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017595 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17596 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17597 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17598 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17599 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17600 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17601 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17602 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17603 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17604 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17605 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17606 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17607 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17608 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017609 };
17610
17611 struct SurfaceFormatKHR
17612 {
17613 operator const VkSurfaceFormatKHR&() const
17614 {
17615 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17616 }
17617
17618 bool operator==( SurfaceFormatKHR const& rhs ) const
17619 {
17620 return ( format == rhs.format )
17621 && ( colorSpace == rhs.colorSpace );
17622 }
17623
17624 bool operator!=( SurfaceFormatKHR const& rhs ) const
17625 {
17626 return !operator==( rhs );
17627 }
17628
17629 Format format;
17630 ColorSpaceKHR colorSpace;
17631 };
17632 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17633
Mark Lobodzinski54385432017-05-15 10:27:52 -060017634 struct SurfaceFormat2KHR
17635 {
17636 operator const VkSurfaceFormat2KHR&() const
17637 {
17638 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
17639 }
17640
17641 bool operator==( SurfaceFormat2KHR const& rhs ) const
17642 {
17643 return ( sType == rhs.sType )
17644 && ( pNext == rhs.pNext )
17645 && ( surfaceFormat == rhs.surfaceFormat );
17646 }
17647
17648 bool operator!=( SurfaceFormat2KHR const& rhs ) const
17649 {
17650 return !operator==( rhs );
17651 }
17652
17653 private:
17654 StructureType sType;
17655
17656 public:
17657 void* pNext;
17658 SurfaceFormatKHR surfaceFormat;
17659 };
17660 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
17661
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017662 enum class DisplayPlaneAlphaFlagBitsKHR
17663 {
17664 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17665 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17666 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17667 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17668 };
17669
17670 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17671
17672 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17673 {
17674 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17675 }
17676
17677 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17678 {
17679 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17680 }
17681
17682 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17683 {
17684 enum
17685 {
17686 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17687 };
17688 };
17689
17690 struct DisplayPlaneCapabilitiesKHR
17691 {
17692 operator const VkDisplayPlaneCapabilitiesKHR&() const
17693 {
17694 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17695 }
17696
17697 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17698 {
17699 return ( supportedAlpha == rhs.supportedAlpha )
17700 && ( minSrcPosition == rhs.minSrcPosition )
17701 && ( maxSrcPosition == rhs.maxSrcPosition )
17702 && ( minSrcExtent == rhs.minSrcExtent )
17703 && ( maxSrcExtent == rhs.maxSrcExtent )
17704 && ( minDstPosition == rhs.minDstPosition )
17705 && ( maxDstPosition == rhs.maxDstPosition )
17706 && ( minDstExtent == rhs.minDstExtent )
17707 && ( maxDstExtent == rhs.maxDstExtent );
17708 }
17709
17710 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17711 {
17712 return !operator==( rhs );
17713 }
17714
17715 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17716 Offset2D minSrcPosition;
17717 Offset2D maxSrcPosition;
17718 Extent2D minSrcExtent;
17719 Extent2D maxSrcExtent;
17720 Offset2D minDstPosition;
17721 Offset2D maxDstPosition;
17722 Extent2D minDstExtent;
17723 Extent2D maxDstExtent;
17724 };
17725 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17726
17727 enum class CompositeAlphaFlagBitsKHR
17728 {
17729 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17730 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17731 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17732 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17733 };
17734
17735 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17736
17737 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17738 {
17739 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17740 }
17741
17742 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17743 {
17744 return ~( CompositeAlphaFlagsKHR( bits ) );
17745 }
17746
17747 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17748 {
17749 enum
17750 {
17751 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17752 };
17753 };
17754
17755 enum class SurfaceTransformFlagBitsKHR
17756 {
17757 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17758 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17759 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17760 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17761 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17762 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17763 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17764 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17765 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17766 };
17767
17768 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17769
17770 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17771 {
17772 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17773 }
17774
17775 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17776 {
17777 return ~( SurfaceTransformFlagsKHR( bits ) );
17778 }
17779
17780 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17781 {
17782 enum
17783 {
17784 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)
17785 };
17786 };
17787
17788 struct DisplayPropertiesKHR
17789 {
17790 operator const VkDisplayPropertiesKHR&() const
17791 {
17792 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17793 }
17794
17795 bool operator==( DisplayPropertiesKHR const& rhs ) const
17796 {
17797 return ( display == rhs.display )
17798 && ( displayName == rhs.displayName )
17799 && ( physicalDimensions == rhs.physicalDimensions )
17800 && ( physicalResolution == rhs.physicalResolution )
17801 && ( supportedTransforms == rhs.supportedTransforms )
17802 && ( planeReorderPossible == rhs.planeReorderPossible )
17803 && ( persistentContent == rhs.persistentContent );
17804 }
17805
17806 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17807 {
17808 return !operator==( rhs );
17809 }
17810
17811 DisplayKHR display;
17812 const char* displayName;
17813 Extent2D physicalDimensions;
17814 Extent2D physicalResolution;
17815 SurfaceTransformFlagsKHR supportedTransforms;
17816 Bool32 planeReorderPossible;
17817 Bool32 persistentContent;
17818 };
17819 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17820
17821 struct DisplaySurfaceCreateInfoKHR
17822 {
17823 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() )
17824 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17825 , pNext( nullptr )
17826 , flags( flags_ )
17827 , displayMode( displayMode_ )
17828 , planeIndex( planeIndex_ )
17829 , planeStackIndex( planeStackIndex_ )
17830 , transform( transform_ )
17831 , globalAlpha( globalAlpha_ )
17832 , alphaMode( alphaMode_ )
17833 , imageExtent( imageExtent_ )
17834 {
17835 }
17836
17837 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17838 {
17839 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17840 }
17841
17842 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17843 {
17844 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17845 return *this;
17846 }
17847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017848 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17849 {
17850 pNext = pNext_;
17851 return *this;
17852 }
17853
17854 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17855 {
17856 flags = flags_;
17857 return *this;
17858 }
17859
17860 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17861 {
17862 displayMode = displayMode_;
17863 return *this;
17864 }
17865
17866 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17867 {
17868 planeIndex = planeIndex_;
17869 return *this;
17870 }
17871
17872 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17873 {
17874 planeStackIndex = planeStackIndex_;
17875 return *this;
17876 }
17877
17878 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17879 {
17880 transform = transform_;
17881 return *this;
17882 }
17883
17884 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17885 {
17886 globalAlpha = globalAlpha_;
17887 return *this;
17888 }
17889
17890 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17891 {
17892 alphaMode = alphaMode_;
17893 return *this;
17894 }
17895
17896 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17897 {
17898 imageExtent = imageExtent_;
17899 return *this;
17900 }
17901
17902 operator const VkDisplaySurfaceCreateInfoKHR&() const
17903 {
17904 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17905 }
17906
17907 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17908 {
17909 return ( sType == rhs.sType )
17910 && ( pNext == rhs.pNext )
17911 && ( flags == rhs.flags )
17912 && ( displayMode == rhs.displayMode )
17913 && ( planeIndex == rhs.planeIndex )
17914 && ( planeStackIndex == rhs.planeStackIndex )
17915 && ( transform == rhs.transform )
17916 && ( globalAlpha == rhs.globalAlpha )
17917 && ( alphaMode == rhs.alphaMode )
17918 && ( imageExtent == rhs.imageExtent );
17919 }
17920
17921 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17922 {
17923 return !operator==( rhs );
17924 }
17925
17926 private:
17927 StructureType sType;
17928
17929 public:
17930 const void* pNext;
17931 DisplaySurfaceCreateFlagsKHR flags;
17932 DisplayModeKHR displayMode;
17933 uint32_t planeIndex;
17934 uint32_t planeStackIndex;
17935 SurfaceTransformFlagBitsKHR transform;
17936 float globalAlpha;
17937 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17938 Extent2D imageExtent;
17939 };
17940 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17941
17942 struct SurfaceCapabilitiesKHR
17943 {
17944 operator const VkSurfaceCapabilitiesKHR&() const
17945 {
17946 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17947 }
17948
17949 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17950 {
17951 return ( minImageCount == rhs.minImageCount )
17952 && ( maxImageCount == rhs.maxImageCount )
17953 && ( currentExtent == rhs.currentExtent )
17954 && ( minImageExtent == rhs.minImageExtent )
17955 && ( maxImageExtent == rhs.maxImageExtent )
17956 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17957 && ( supportedTransforms == rhs.supportedTransforms )
17958 && ( currentTransform == rhs.currentTransform )
17959 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17960 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17961 }
17962
17963 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17964 {
17965 return !operator==( rhs );
17966 }
17967
17968 uint32_t minImageCount;
17969 uint32_t maxImageCount;
17970 Extent2D currentExtent;
17971 Extent2D minImageExtent;
17972 Extent2D maxImageExtent;
17973 uint32_t maxImageArrayLayers;
17974 SurfaceTransformFlagsKHR supportedTransforms;
17975 SurfaceTransformFlagBitsKHR currentTransform;
17976 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17977 ImageUsageFlags supportedUsageFlags;
17978 };
17979 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17980
Mark Lobodzinski54385432017-05-15 10:27:52 -060017981 struct SurfaceCapabilities2KHR
17982 {
17983 operator const VkSurfaceCapabilities2KHR&() const
17984 {
17985 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
17986 }
17987
17988 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
17989 {
17990 return ( sType == rhs.sType )
17991 && ( pNext == rhs.pNext )
17992 && ( surfaceCapabilities == rhs.surfaceCapabilities );
17993 }
17994
17995 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
17996 {
17997 return !operator==( rhs );
17998 }
17999
18000 private:
18001 StructureType sType;
18002
18003 public:
18004 void* pNext;
18005 SurfaceCapabilitiesKHR surfaceCapabilities;
18006 };
18007 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
18008
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018009 enum class DebugReportFlagBitsEXT
18010 {
18011 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
18012 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
18013 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
18014 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
18015 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
18016 };
18017
18018 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
18019
18020 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
18021 {
18022 return DebugReportFlagsEXT( bit0 ) | bit1;
18023 }
18024
18025 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
18026 {
18027 return ~( DebugReportFlagsEXT( bits ) );
18028 }
18029
18030 template <> struct FlagTraits<DebugReportFlagBitsEXT>
18031 {
18032 enum
18033 {
18034 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
18035 };
18036 };
18037
18038 struct DebugReportCallbackCreateInfoEXT
18039 {
18040 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
18041 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
18042 , pNext( nullptr )
18043 , flags( flags_ )
18044 , pfnCallback( pfnCallback_ )
18045 , pUserData( pUserData_ )
18046 {
18047 }
18048
18049 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
18050 {
18051 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
18052 }
18053
18054 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
18055 {
18056 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
18057 return *this;
18058 }
18059
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018060 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
18061 {
18062 pNext = pNext_;
18063 return *this;
18064 }
18065
18066 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
18067 {
18068 flags = flags_;
18069 return *this;
18070 }
18071
18072 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
18073 {
18074 pfnCallback = pfnCallback_;
18075 return *this;
18076 }
18077
18078 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
18079 {
18080 pUserData = pUserData_;
18081 return *this;
18082 }
18083
18084 operator const VkDebugReportCallbackCreateInfoEXT&() const
18085 {
18086 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
18087 }
18088
18089 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
18090 {
18091 return ( sType == rhs.sType )
18092 && ( pNext == rhs.pNext )
18093 && ( flags == rhs.flags )
18094 && ( pfnCallback == rhs.pfnCallback )
18095 && ( pUserData == rhs.pUserData );
18096 }
18097
18098 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
18099 {
18100 return !operator==( rhs );
18101 }
18102
18103 private:
18104 StructureType sType;
18105
18106 public:
18107 const void* pNext;
18108 DebugReportFlagsEXT flags;
18109 PFN_vkDebugReportCallbackEXT pfnCallback;
18110 void* pUserData;
18111 };
18112 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
18113
18114 enum class DebugReportObjectTypeEXT
18115 {
18116 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
18117 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
18118 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
18119 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
18120 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
18121 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
18122 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
18123 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
18124 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
18125 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
18126 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
18127 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
18128 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
18129 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
18130 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
18131 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
18132 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
18133 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
18134 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
18135 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
18136 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
18137 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
18138 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
18139 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
18140 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
18141 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
18142 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
18143 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
18144 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
18145 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
18146 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
18147 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060018148 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018149 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018150 };
18151
18152 struct DebugMarkerObjectNameInfoEXT
18153 {
18154 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
18155 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
18156 , pNext( nullptr )
18157 , objectType( objectType_ )
18158 , object( object_ )
18159 , pObjectName( pObjectName_ )
18160 {
18161 }
18162
18163 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
18164 {
18165 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
18166 }
18167
18168 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
18169 {
18170 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
18171 return *this;
18172 }
18173
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018174 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
18175 {
18176 pNext = pNext_;
18177 return *this;
18178 }
18179
18180 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18181 {
18182 objectType = objectType_;
18183 return *this;
18184 }
18185
18186 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
18187 {
18188 object = object_;
18189 return *this;
18190 }
18191
18192 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
18193 {
18194 pObjectName = pObjectName_;
18195 return *this;
18196 }
18197
18198 operator const VkDebugMarkerObjectNameInfoEXT&() const
18199 {
18200 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
18201 }
18202
18203 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
18204 {
18205 return ( sType == rhs.sType )
18206 && ( pNext == rhs.pNext )
18207 && ( objectType == rhs.objectType )
18208 && ( object == rhs.object )
18209 && ( pObjectName == rhs.pObjectName );
18210 }
18211
18212 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
18213 {
18214 return !operator==( rhs );
18215 }
18216
18217 private:
18218 StructureType sType;
18219
18220 public:
18221 const void* pNext;
18222 DebugReportObjectTypeEXT objectType;
18223 uint64_t object;
18224 const char* pObjectName;
18225 };
18226 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
18227
18228 struct DebugMarkerObjectTagInfoEXT
18229 {
18230 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
18231 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
18232 , pNext( nullptr )
18233 , objectType( objectType_ )
18234 , object( object_ )
18235 , tagName( tagName_ )
18236 , tagSize( tagSize_ )
18237 , pTag( pTag_ )
18238 {
18239 }
18240
18241 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
18242 {
18243 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18244 }
18245
18246 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
18247 {
18248 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18249 return *this;
18250 }
18251
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018252 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
18253 {
18254 pNext = pNext_;
18255 return *this;
18256 }
18257
18258 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18259 {
18260 objectType = objectType_;
18261 return *this;
18262 }
18263
18264 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
18265 {
18266 object = object_;
18267 return *this;
18268 }
18269
18270 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
18271 {
18272 tagName = tagName_;
18273 return *this;
18274 }
18275
18276 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
18277 {
18278 tagSize = tagSize_;
18279 return *this;
18280 }
18281
18282 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
18283 {
18284 pTag = pTag_;
18285 return *this;
18286 }
18287
18288 operator const VkDebugMarkerObjectTagInfoEXT&() const
18289 {
18290 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
18291 }
18292
18293 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
18294 {
18295 return ( sType == rhs.sType )
18296 && ( pNext == rhs.pNext )
18297 && ( objectType == rhs.objectType )
18298 && ( object == rhs.object )
18299 && ( tagName == rhs.tagName )
18300 && ( tagSize == rhs.tagSize )
18301 && ( pTag == rhs.pTag );
18302 }
18303
18304 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
18305 {
18306 return !operator==( rhs );
18307 }
18308
18309 private:
18310 StructureType sType;
18311
18312 public:
18313 const void* pNext;
18314 DebugReportObjectTypeEXT objectType;
18315 uint64_t object;
18316 uint64_t tagName;
18317 size_t tagSize;
18318 const void* pTag;
18319 };
18320 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
18321
18322 enum class DebugReportErrorEXT
18323 {
18324 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
18325 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
18326 };
18327
18328 enum class RasterizationOrderAMD
18329 {
18330 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
18331 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
18332 };
18333
18334 struct PipelineRasterizationStateRasterizationOrderAMD
18335 {
18336 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
18337 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
18338 , pNext( nullptr )
18339 , rasterizationOrder( rasterizationOrder_ )
18340 {
18341 }
18342
18343 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18344 {
18345 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18346 }
18347
18348 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18349 {
18350 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18351 return *this;
18352 }
18353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018354 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
18355 {
18356 pNext = pNext_;
18357 return *this;
18358 }
18359
18360 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
18361 {
18362 rasterizationOrder = rasterizationOrder_;
18363 return *this;
18364 }
18365
18366 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18367 {
18368 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18369 }
18370
18371 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18372 {
18373 return ( sType == rhs.sType )
18374 && ( pNext == rhs.pNext )
18375 && ( rasterizationOrder == rhs.rasterizationOrder );
18376 }
18377
18378 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18379 {
18380 return !operator==( rhs );
18381 }
18382
18383 private:
18384 StructureType sType;
18385
18386 public:
18387 const void* pNext;
18388 RasterizationOrderAMD rasterizationOrder;
18389 };
18390 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18391
18392 enum class ExternalMemoryHandleTypeFlagBitsNV
18393 {
18394 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18395 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18396 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18397 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18398 };
18399
18400 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18401
18402 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18403 {
18404 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18405 }
18406
18407 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18408 {
18409 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18410 }
18411
18412 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18413 {
18414 enum
18415 {
18416 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18417 };
18418 };
18419
18420 struct ExternalMemoryImageCreateInfoNV
18421 {
18422 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18423 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18424 , pNext( nullptr )
18425 , handleTypes( handleTypes_ )
18426 {
18427 }
18428
18429 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18430 {
18431 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18432 }
18433
18434 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18435 {
18436 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18437 return *this;
18438 }
18439
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018440 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18441 {
18442 pNext = pNext_;
18443 return *this;
18444 }
18445
18446 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18447 {
18448 handleTypes = handleTypes_;
18449 return *this;
18450 }
18451
18452 operator const VkExternalMemoryImageCreateInfoNV&() const
18453 {
18454 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18455 }
18456
18457 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18458 {
18459 return ( sType == rhs.sType )
18460 && ( pNext == rhs.pNext )
18461 && ( handleTypes == rhs.handleTypes );
18462 }
18463
18464 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18465 {
18466 return !operator==( rhs );
18467 }
18468
18469 private:
18470 StructureType sType;
18471
18472 public:
18473 const void* pNext;
18474 ExternalMemoryHandleTypeFlagsNV handleTypes;
18475 };
18476 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18477
18478 struct ExportMemoryAllocateInfoNV
18479 {
18480 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18481 : sType( StructureType::eExportMemoryAllocateInfoNV )
18482 , pNext( nullptr )
18483 , handleTypes( handleTypes_ )
18484 {
18485 }
18486
18487 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18488 {
18489 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18490 }
18491
18492 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18493 {
18494 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18495 return *this;
18496 }
18497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018498 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18499 {
18500 pNext = pNext_;
18501 return *this;
18502 }
18503
18504 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18505 {
18506 handleTypes = handleTypes_;
18507 return *this;
18508 }
18509
18510 operator const VkExportMemoryAllocateInfoNV&() const
18511 {
18512 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18513 }
18514
18515 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18516 {
18517 return ( sType == rhs.sType )
18518 && ( pNext == rhs.pNext )
18519 && ( handleTypes == rhs.handleTypes );
18520 }
18521
18522 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18523 {
18524 return !operator==( rhs );
18525 }
18526
18527 private:
18528 StructureType sType;
18529
18530 public:
18531 const void* pNext;
18532 ExternalMemoryHandleTypeFlagsNV handleTypes;
18533 };
18534 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18535
18536#ifdef VK_USE_PLATFORM_WIN32_KHR
18537 struct ImportMemoryWin32HandleInfoNV
18538 {
18539 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18540 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18541 , pNext( nullptr )
18542 , handleType( handleType_ )
18543 , handle( handle_ )
18544 {
18545 }
18546
18547 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18548 {
18549 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18550 }
18551
18552 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18553 {
18554 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18555 return *this;
18556 }
18557
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018558 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18559 {
18560 pNext = pNext_;
18561 return *this;
18562 }
18563
18564 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18565 {
18566 handleType = handleType_;
18567 return *this;
18568 }
18569
18570 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18571 {
18572 handle = handle_;
18573 return *this;
18574 }
18575
18576 operator const VkImportMemoryWin32HandleInfoNV&() const
18577 {
18578 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18579 }
18580
18581 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18582 {
18583 return ( sType == rhs.sType )
18584 && ( pNext == rhs.pNext )
18585 && ( handleType == rhs.handleType )
18586 && ( handle == rhs.handle );
18587 }
18588
18589 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18590 {
18591 return !operator==( rhs );
18592 }
18593
18594 private:
18595 StructureType sType;
18596
18597 public:
18598 const void* pNext;
18599 ExternalMemoryHandleTypeFlagsNV handleType;
18600 HANDLE handle;
18601 };
18602 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18603#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18604
18605 enum class ExternalMemoryFeatureFlagBitsNV
18606 {
18607 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18608 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18609 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18610 };
18611
18612 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18613
18614 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18615 {
18616 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18617 }
18618
18619 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18620 {
18621 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18622 }
18623
18624 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18625 {
18626 enum
18627 {
18628 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18629 };
18630 };
18631
18632 struct ExternalImageFormatPropertiesNV
18633 {
18634 operator const VkExternalImageFormatPropertiesNV&() const
18635 {
18636 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18637 }
18638
18639 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18640 {
18641 return ( imageFormatProperties == rhs.imageFormatProperties )
18642 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18643 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18644 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18645 }
18646
18647 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18648 {
18649 return !operator==( rhs );
18650 }
18651
18652 ImageFormatProperties imageFormatProperties;
18653 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18654 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18655 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18656 };
18657 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18658
18659 enum class ValidationCheckEXT
18660 {
18661 eAll = VK_VALIDATION_CHECK_ALL_EXT
18662 };
18663
18664 struct ValidationFlagsEXT
18665 {
18666 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18667 : sType( StructureType::eValidationFlagsEXT )
18668 , pNext( nullptr )
18669 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18670 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18671 {
18672 }
18673
18674 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18675 {
18676 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18677 }
18678
18679 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18680 {
18681 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18682 return *this;
18683 }
18684
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018685 ValidationFlagsEXT& setPNext( const void* pNext_ )
18686 {
18687 pNext = pNext_;
18688 return *this;
18689 }
18690
18691 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18692 {
18693 disabledValidationCheckCount = disabledValidationCheckCount_;
18694 return *this;
18695 }
18696
18697 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18698 {
18699 pDisabledValidationChecks = pDisabledValidationChecks_;
18700 return *this;
18701 }
18702
18703 operator const VkValidationFlagsEXT&() const
18704 {
18705 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18706 }
18707
18708 bool operator==( ValidationFlagsEXT const& rhs ) const
18709 {
18710 return ( sType == rhs.sType )
18711 && ( pNext == rhs.pNext )
18712 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18713 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18714 }
18715
18716 bool operator!=( ValidationFlagsEXT const& rhs ) const
18717 {
18718 return !operator==( rhs );
18719 }
18720
18721 private:
18722 StructureType sType;
18723
18724 public:
18725 const void* pNext;
18726 uint32_t disabledValidationCheckCount;
18727 ValidationCheckEXT* pDisabledValidationChecks;
18728 };
18729 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18730
18731 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18732 {
18733 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18734 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18735 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18736 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18737 };
18738
18739 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18740
18741 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18742 {
18743 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18744 }
18745
18746 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18747 {
18748 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18749 }
18750
18751 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18752 {
18753 enum
18754 {
18755 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18756 };
18757 };
18758
18759 enum class ObjectEntryUsageFlagBitsNVX
18760 {
18761 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18762 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18763 };
18764
18765 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18766
18767 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18768 {
18769 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18770 }
18771
18772 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18773 {
18774 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18775 }
18776
18777 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18778 {
18779 enum
18780 {
18781 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18782 };
18783 };
18784
18785 enum class IndirectCommandsTokenTypeNVX
18786 {
18787 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18788 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18789 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18790 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18791 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18792 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18793 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18794 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18795 };
18796
18797 struct IndirectCommandsTokenNVX
18798 {
18799 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18800 : tokenType( tokenType_ )
18801 , buffer( buffer_ )
18802 , offset( offset_ )
18803 {
18804 }
18805
18806 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18807 {
18808 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18809 }
18810
18811 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18812 {
18813 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18814 return *this;
18815 }
18816
18817 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18818 {
18819 tokenType = tokenType_;
18820 return *this;
18821 }
18822
18823 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18824 {
18825 buffer = buffer_;
18826 return *this;
18827 }
18828
18829 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18830 {
18831 offset = offset_;
18832 return *this;
18833 }
18834
18835 operator const VkIndirectCommandsTokenNVX&() const
18836 {
18837 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18838 }
18839
18840 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18841 {
18842 return ( tokenType == rhs.tokenType )
18843 && ( buffer == rhs.buffer )
18844 && ( offset == rhs.offset );
18845 }
18846
18847 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18848 {
18849 return !operator==( rhs );
18850 }
18851
18852 IndirectCommandsTokenTypeNVX tokenType;
18853 Buffer buffer;
18854 DeviceSize offset;
18855 };
18856 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18857
18858 struct IndirectCommandsLayoutTokenNVX
18859 {
18860 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18861 : tokenType( tokenType_ )
18862 , bindingUnit( bindingUnit_ )
18863 , dynamicCount( dynamicCount_ )
18864 , divisor( divisor_ )
18865 {
18866 }
18867
18868 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18869 {
18870 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18871 }
18872
18873 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18874 {
18875 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18876 return *this;
18877 }
18878
18879 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18880 {
18881 tokenType = tokenType_;
18882 return *this;
18883 }
18884
18885 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18886 {
18887 bindingUnit = bindingUnit_;
18888 return *this;
18889 }
18890
18891 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18892 {
18893 dynamicCount = dynamicCount_;
18894 return *this;
18895 }
18896
18897 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18898 {
18899 divisor = divisor_;
18900 return *this;
18901 }
18902
18903 operator const VkIndirectCommandsLayoutTokenNVX&() const
18904 {
18905 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18906 }
18907
18908 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18909 {
18910 return ( tokenType == rhs.tokenType )
18911 && ( bindingUnit == rhs.bindingUnit )
18912 && ( dynamicCount == rhs.dynamicCount )
18913 && ( divisor == rhs.divisor );
18914 }
18915
18916 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18917 {
18918 return !operator==( rhs );
18919 }
18920
18921 IndirectCommandsTokenTypeNVX tokenType;
18922 uint32_t bindingUnit;
18923 uint32_t dynamicCount;
18924 uint32_t divisor;
18925 };
18926 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18927
18928 struct IndirectCommandsLayoutCreateInfoNVX
18929 {
18930 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18931 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18932 , pNext( nullptr )
18933 , pipelineBindPoint( pipelineBindPoint_ )
18934 , flags( flags_ )
18935 , tokenCount( tokenCount_ )
18936 , pTokens( pTokens_ )
18937 {
18938 }
18939
18940 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18941 {
18942 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18943 }
18944
18945 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18946 {
18947 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18948 return *this;
18949 }
18950
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018951 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18952 {
18953 pNext = pNext_;
18954 return *this;
18955 }
18956
18957 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18958 {
18959 pipelineBindPoint = pipelineBindPoint_;
18960 return *this;
18961 }
18962
18963 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18964 {
18965 flags = flags_;
18966 return *this;
18967 }
18968
18969 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18970 {
18971 tokenCount = tokenCount_;
18972 return *this;
18973 }
18974
18975 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18976 {
18977 pTokens = pTokens_;
18978 return *this;
18979 }
18980
18981 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18982 {
18983 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18984 }
18985
18986 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18987 {
18988 return ( sType == rhs.sType )
18989 && ( pNext == rhs.pNext )
18990 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18991 && ( flags == rhs.flags )
18992 && ( tokenCount == rhs.tokenCount )
18993 && ( pTokens == rhs.pTokens );
18994 }
18995
18996 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18997 {
18998 return !operator==( rhs );
18999 }
19000
19001 private:
19002 StructureType sType;
19003
19004 public:
19005 const void* pNext;
19006 PipelineBindPoint pipelineBindPoint;
19007 IndirectCommandsLayoutUsageFlagsNVX flags;
19008 uint32_t tokenCount;
19009 const IndirectCommandsLayoutTokenNVX* pTokens;
19010 };
19011 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
19012
19013 enum class ObjectEntryTypeNVX
19014 {
19015 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
19016 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
19017 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
19018 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
19019 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
19020 };
19021
19022 struct ObjectTableCreateInfoNVX
19023 {
19024 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 )
19025 : sType( StructureType::eObjectTableCreateInfoNVX )
19026 , pNext( nullptr )
19027 , objectCount( objectCount_ )
19028 , pObjectEntryTypes( pObjectEntryTypes_ )
19029 , pObjectEntryCounts( pObjectEntryCounts_ )
19030 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
19031 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
19032 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
19033 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
19034 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
19035 , maxPipelineLayouts( maxPipelineLayouts_ )
19036 {
19037 }
19038
19039 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
19040 {
19041 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
19042 }
19043
19044 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
19045 {
19046 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
19047 return *this;
19048 }
19049
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019050 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
19051 {
19052 pNext = pNext_;
19053 return *this;
19054 }
19055
19056 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
19057 {
19058 objectCount = objectCount_;
19059 return *this;
19060 }
19061
19062 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
19063 {
19064 pObjectEntryTypes = pObjectEntryTypes_;
19065 return *this;
19066 }
19067
19068 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
19069 {
19070 pObjectEntryCounts = pObjectEntryCounts_;
19071 return *this;
19072 }
19073
19074 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
19075 {
19076 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
19077 return *this;
19078 }
19079
19080 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
19081 {
19082 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
19083 return *this;
19084 }
19085
19086 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
19087 {
19088 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
19089 return *this;
19090 }
19091
19092 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
19093 {
19094 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
19095 return *this;
19096 }
19097
19098 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
19099 {
19100 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
19101 return *this;
19102 }
19103
19104 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
19105 {
19106 maxPipelineLayouts = maxPipelineLayouts_;
19107 return *this;
19108 }
19109
19110 operator const VkObjectTableCreateInfoNVX&() const
19111 {
19112 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
19113 }
19114
19115 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
19116 {
19117 return ( sType == rhs.sType )
19118 && ( pNext == rhs.pNext )
19119 && ( objectCount == rhs.objectCount )
19120 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
19121 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
19122 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
19123 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
19124 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
19125 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
19126 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
19127 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
19128 }
19129
19130 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
19131 {
19132 return !operator==( rhs );
19133 }
19134
19135 private:
19136 StructureType sType;
19137
19138 public:
19139 const void* pNext;
19140 uint32_t objectCount;
19141 const ObjectEntryTypeNVX* pObjectEntryTypes;
19142 const uint32_t* pObjectEntryCounts;
19143 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
19144 uint32_t maxUniformBuffersPerDescriptor;
19145 uint32_t maxStorageBuffersPerDescriptor;
19146 uint32_t maxStorageImagesPerDescriptor;
19147 uint32_t maxSampledImagesPerDescriptor;
19148 uint32_t maxPipelineLayouts;
19149 };
19150 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
19151
19152 struct ObjectTableEntryNVX
19153 {
19154 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
19155 : type( type_ )
19156 , flags( flags_ )
19157 {
19158 }
19159
19160 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
19161 {
19162 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
19163 }
19164
19165 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
19166 {
19167 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
19168 return *this;
19169 }
19170
19171 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
19172 {
19173 type = type_;
19174 return *this;
19175 }
19176
19177 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19178 {
19179 flags = flags_;
19180 return *this;
19181 }
19182
19183 operator const VkObjectTableEntryNVX&() const
19184 {
19185 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
19186 }
19187
19188 bool operator==( ObjectTableEntryNVX const& rhs ) const
19189 {
19190 return ( type == rhs.type )
19191 && ( flags == rhs.flags );
19192 }
19193
19194 bool operator!=( ObjectTableEntryNVX const& rhs ) const
19195 {
19196 return !operator==( rhs );
19197 }
19198
19199 ObjectEntryTypeNVX type;
19200 ObjectEntryUsageFlagsNVX flags;
19201 };
19202 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
19203
19204 struct ObjectTablePipelineEntryNVX
19205 {
19206 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
19207 : type( type_ )
19208 , flags( flags_ )
19209 , pipeline( pipeline_ )
19210 {
19211 }
19212
19213 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
19214 {
19215 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19216 }
19217
19218 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
19219 {
19220 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19221 return *this;
19222 }
19223
19224 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
19225 {
19226 type = type_;
19227 return *this;
19228 }
19229
19230 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19231 {
19232 flags = flags_;
19233 return *this;
19234 }
19235
19236 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
19237 {
19238 pipeline = pipeline_;
19239 return *this;
19240 }
19241
19242 operator const VkObjectTablePipelineEntryNVX&() const
19243 {
19244 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
19245 }
19246
19247 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
19248 {
19249 return ( type == rhs.type )
19250 && ( flags == rhs.flags )
19251 && ( pipeline == rhs.pipeline );
19252 }
19253
19254 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
19255 {
19256 return !operator==( rhs );
19257 }
19258
19259 ObjectEntryTypeNVX type;
19260 ObjectEntryUsageFlagsNVX flags;
19261 Pipeline pipeline;
19262 };
19263 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
19264
19265 struct ObjectTableDescriptorSetEntryNVX
19266 {
19267 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
19268 : type( type_ )
19269 , flags( flags_ )
19270 , pipelineLayout( pipelineLayout_ )
19271 , descriptorSet( descriptorSet_ )
19272 {
19273 }
19274
19275 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
19276 {
19277 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19278 }
19279
19280 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
19281 {
19282 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19283 return *this;
19284 }
19285
19286 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
19287 {
19288 type = type_;
19289 return *this;
19290 }
19291
19292 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19293 {
19294 flags = flags_;
19295 return *this;
19296 }
19297
19298 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19299 {
19300 pipelineLayout = pipelineLayout_;
19301 return *this;
19302 }
19303
19304 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
19305 {
19306 descriptorSet = descriptorSet_;
19307 return *this;
19308 }
19309
19310 operator const VkObjectTableDescriptorSetEntryNVX&() const
19311 {
19312 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
19313 }
19314
19315 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19316 {
19317 return ( type == rhs.type )
19318 && ( flags == rhs.flags )
19319 && ( pipelineLayout == rhs.pipelineLayout )
19320 && ( descriptorSet == rhs.descriptorSet );
19321 }
19322
19323 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19324 {
19325 return !operator==( rhs );
19326 }
19327
19328 ObjectEntryTypeNVX type;
19329 ObjectEntryUsageFlagsNVX flags;
19330 PipelineLayout pipelineLayout;
19331 DescriptorSet descriptorSet;
19332 };
19333 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
19334
19335 struct ObjectTableVertexBufferEntryNVX
19336 {
19337 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
19338 : type( type_ )
19339 , flags( flags_ )
19340 , buffer( buffer_ )
19341 {
19342 }
19343
19344 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
19345 {
19346 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19347 }
19348
19349 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
19350 {
19351 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19352 return *this;
19353 }
19354
19355 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19356 {
19357 type = type_;
19358 return *this;
19359 }
19360
19361 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19362 {
19363 flags = flags_;
19364 return *this;
19365 }
19366
19367 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19368 {
19369 buffer = buffer_;
19370 return *this;
19371 }
19372
19373 operator const VkObjectTableVertexBufferEntryNVX&() const
19374 {
19375 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19376 }
19377
19378 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19379 {
19380 return ( type == rhs.type )
19381 && ( flags == rhs.flags )
19382 && ( buffer == rhs.buffer );
19383 }
19384
19385 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19386 {
19387 return !operator==( rhs );
19388 }
19389
19390 ObjectEntryTypeNVX type;
19391 ObjectEntryUsageFlagsNVX flags;
19392 Buffer buffer;
19393 };
19394 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19395
19396 struct ObjectTableIndexBufferEntryNVX
19397 {
Mark Young39389872017-01-19 21:10:49 -070019398 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019399 : type( type_ )
19400 , flags( flags_ )
19401 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019402 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019403 {
19404 }
19405
19406 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19407 {
19408 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19409 }
19410
19411 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19412 {
19413 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19414 return *this;
19415 }
19416
19417 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19418 {
19419 type = type_;
19420 return *this;
19421 }
19422
19423 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19424 {
19425 flags = flags_;
19426 return *this;
19427 }
19428
19429 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19430 {
19431 buffer = buffer_;
19432 return *this;
19433 }
19434
Mark Young39389872017-01-19 21:10:49 -070019435 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19436 {
19437 indexType = indexType_;
19438 return *this;
19439 }
19440
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019441 operator const VkObjectTableIndexBufferEntryNVX&() const
19442 {
19443 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19444 }
19445
19446 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19447 {
19448 return ( type == rhs.type )
19449 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019450 && ( buffer == rhs.buffer )
19451 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019452 }
19453
19454 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19455 {
19456 return !operator==( rhs );
19457 }
19458
19459 ObjectEntryTypeNVX type;
19460 ObjectEntryUsageFlagsNVX flags;
19461 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019462 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019463 };
19464 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19465
19466 struct ObjectTablePushConstantEntryNVX
19467 {
19468 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19469 : type( type_ )
19470 , flags( flags_ )
19471 , pipelineLayout( pipelineLayout_ )
19472 , stageFlags( stageFlags_ )
19473 {
19474 }
19475
19476 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19477 {
19478 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19479 }
19480
19481 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19482 {
19483 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19484 return *this;
19485 }
19486
19487 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19488 {
19489 type = type_;
19490 return *this;
19491 }
19492
19493 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19494 {
19495 flags = flags_;
19496 return *this;
19497 }
19498
19499 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19500 {
19501 pipelineLayout = pipelineLayout_;
19502 return *this;
19503 }
19504
19505 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19506 {
19507 stageFlags = stageFlags_;
19508 return *this;
19509 }
19510
19511 operator const VkObjectTablePushConstantEntryNVX&() const
19512 {
19513 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19514 }
19515
19516 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19517 {
19518 return ( type == rhs.type )
19519 && ( flags == rhs.flags )
19520 && ( pipelineLayout == rhs.pipelineLayout )
19521 && ( stageFlags == rhs.stageFlags );
19522 }
19523
19524 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19525 {
19526 return !operator==( rhs );
19527 }
19528
19529 ObjectEntryTypeNVX type;
19530 ObjectEntryUsageFlagsNVX flags;
19531 PipelineLayout pipelineLayout;
19532 ShaderStageFlags stageFlags;
19533 };
19534 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19535
Mark Young0f183a82017-02-28 09:58:04 -070019536 enum class DescriptorSetLayoutCreateFlagBits
19537 {
19538 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19539 };
19540
19541 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19542
19543 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19544 {
19545 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19546 }
19547
19548 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19549 {
19550 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19551 }
19552
19553 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19554 {
19555 enum
19556 {
19557 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19558 };
19559 };
19560
19561 struct DescriptorSetLayoutCreateInfo
19562 {
19563 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19564 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19565 , pNext( nullptr )
19566 , flags( flags_ )
19567 , bindingCount( bindingCount_ )
19568 , pBindings( pBindings_ )
19569 {
19570 }
19571
19572 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19573 {
19574 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19575 }
19576
19577 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19578 {
19579 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19580 return *this;
19581 }
19582
19583 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19584 {
19585 pNext = pNext_;
19586 return *this;
19587 }
19588
19589 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19590 {
19591 flags = flags_;
19592 return *this;
19593 }
19594
19595 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19596 {
19597 bindingCount = bindingCount_;
19598 return *this;
19599 }
19600
19601 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19602 {
19603 pBindings = pBindings_;
19604 return *this;
19605 }
19606
19607 operator const VkDescriptorSetLayoutCreateInfo&() const
19608 {
19609 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19610 }
19611
19612 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19613 {
19614 return ( sType == rhs.sType )
19615 && ( pNext == rhs.pNext )
19616 && ( flags == rhs.flags )
19617 && ( bindingCount == rhs.bindingCount )
19618 && ( pBindings == rhs.pBindings );
19619 }
19620
19621 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19622 {
19623 return !operator==( rhs );
19624 }
19625
19626 private:
19627 StructureType sType;
19628
19629 public:
19630 const void* pNext;
19631 DescriptorSetLayoutCreateFlags flags;
19632 uint32_t bindingCount;
19633 const DescriptorSetLayoutBinding* pBindings;
19634 };
19635 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19636
19637 enum class ExternalMemoryHandleTypeFlagBitsKHX
19638 {
19639 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19640 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19641 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19642 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19643 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19644 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19645 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19646 };
19647
19648 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19649
19650 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19651 {
19652 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19653 }
19654
19655 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19656 {
19657 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19658 }
19659
19660 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19661 {
19662 enum
19663 {
19664 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19665 };
19666 };
19667
19668 struct PhysicalDeviceExternalImageFormatInfoKHX
19669 {
19670 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19671 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19672 , pNext( nullptr )
19673 , handleType( handleType_ )
19674 {
19675 }
19676
19677 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19678 {
19679 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19680 }
19681
19682 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19683 {
19684 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19685 return *this;
19686 }
19687
19688 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19689 {
19690 pNext = pNext_;
19691 return *this;
19692 }
19693
19694 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19695 {
19696 handleType = handleType_;
19697 return *this;
19698 }
19699
19700 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19701 {
19702 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19703 }
19704
19705 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19706 {
19707 return ( sType == rhs.sType )
19708 && ( pNext == rhs.pNext )
19709 && ( handleType == rhs.handleType );
19710 }
19711
19712 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19713 {
19714 return !operator==( rhs );
19715 }
19716
19717 private:
19718 StructureType sType;
19719
19720 public:
19721 const void* pNext;
19722 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19723 };
19724 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19725
19726 struct PhysicalDeviceExternalBufferInfoKHX
19727 {
19728 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19729 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19730 , pNext( nullptr )
19731 , flags( flags_ )
19732 , usage( usage_ )
19733 , handleType( handleType_ )
19734 {
19735 }
19736
19737 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19738 {
19739 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19740 }
19741
19742 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19743 {
19744 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19745 return *this;
19746 }
19747
19748 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19749 {
19750 pNext = pNext_;
19751 return *this;
19752 }
19753
19754 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19755 {
19756 flags = flags_;
19757 return *this;
19758 }
19759
19760 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19761 {
19762 usage = usage_;
19763 return *this;
19764 }
19765
19766 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19767 {
19768 handleType = handleType_;
19769 return *this;
19770 }
19771
19772 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19773 {
19774 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19775 }
19776
19777 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19778 {
19779 return ( sType == rhs.sType )
19780 && ( pNext == rhs.pNext )
19781 && ( flags == rhs.flags )
19782 && ( usage == rhs.usage )
19783 && ( handleType == rhs.handleType );
19784 }
19785
19786 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19787 {
19788 return !operator==( rhs );
19789 }
19790
19791 private:
19792 StructureType sType;
19793
19794 public:
19795 const void* pNext;
19796 BufferCreateFlags flags;
19797 BufferUsageFlags usage;
19798 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19799 };
19800 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19801
19802 struct ExternalMemoryImageCreateInfoKHX
19803 {
19804 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19805 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19806 , pNext( nullptr )
19807 , handleTypes( handleTypes_ )
19808 {
19809 }
19810
19811 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19812 {
19813 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19814 }
19815
19816 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19817 {
19818 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19819 return *this;
19820 }
19821
19822 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19823 {
19824 pNext = pNext_;
19825 return *this;
19826 }
19827
19828 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19829 {
19830 handleTypes = handleTypes_;
19831 return *this;
19832 }
19833
19834 operator const VkExternalMemoryImageCreateInfoKHX&() const
19835 {
19836 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19837 }
19838
19839 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19840 {
19841 return ( sType == rhs.sType )
19842 && ( pNext == rhs.pNext )
19843 && ( handleTypes == rhs.handleTypes );
19844 }
19845
19846 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19847 {
19848 return !operator==( rhs );
19849 }
19850
19851 private:
19852 StructureType sType;
19853
19854 public:
19855 const void* pNext;
19856 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19857 };
19858 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19859
19860 struct ExternalMemoryBufferCreateInfoKHX
19861 {
19862 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19863 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19864 , pNext( nullptr )
19865 , handleTypes( handleTypes_ )
19866 {
19867 }
19868
19869 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19870 {
19871 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19872 }
19873
19874 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19875 {
19876 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19877 return *this;
19878 }
19879
19880 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19881 {
19882 pNext = pNext_;
19883 return *this;
19884 }
19885
19886 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19887 {
19888 handleTypes = handleTypes_;
19889 return *this;
19890 }
19891
19892 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19893 {
19894 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19895 }
19896
19897 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19898 {
19899 return ( sType == rhs.sType )
19900 && ( pNext == rhs.pNext )
19901 && ( handleTypes == rhs.handleTypes );
19902 }
19903
19904 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19905 {
19906 return !operator==( rhs );
19907 }
19908
19909 private:
19910 StructureType sType;
19911
19912 public:
19913 const void* pNext;
19914 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19915 };
19916 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19917
19918 struct ExportMemoryAllocateInfoKHX
19919 {
19920 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19921 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19922 , pNext( nullptr )
19923 , handleTypes( handleTypes_ )
19924 {
19925 }
19926
19927 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19928 {
19929 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19930 }
19931
19932 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19933 {
19934 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19935 return *this;
19936 }
19937
19938 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19939 {
19940 pNext = pNext_;
19941 return *this;
19942 }
19943
19944 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19945 {
19946 handleTypes = handleTypes_;
19947 return *this;
19948 }
19949
19950 operator const VkExportMemoryAllocateInfoKHX&() const
19951 {
19952 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19953 }
19954
19955 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19956 {
19957 return ( sType == rhs.sType )
19958 && ( pNext == rhs.pNext )
19959 && ( handleTypes == rhs.handleTypes );
19960 }
19961
19962 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19963 {
19964 return !operator==( rhs );
19965 }
19966
19967 private:
19968 StructureType sType;
19969
19970 public:
19971 const void* pNext;
19972 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19973 };
19974 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19975
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019976#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070019977 struct ImportMemoryWin32HandleInfoKHX
19978 {
19979 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19980 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19981 , pNext( nullptr )
19982 , handleType( handleType_ )
19983 , handle( handle_ )
19984 {
19985 }
19986
19987 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19988 {
19989 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19990 }
19991
19992 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19993 {
19994 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19995 return *this;
19996 }
19997
19998 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19999 {
20000 pNext = pNext_;
20001 return *this;
20002 }
20003
20004 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20005 {
20006 handleType = handleType_;
20007 return *this;
20008 }
20009
20010 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20011 {
20012 handle = handle_;
20013 return *this;
20014 }
20015
20016 operator const VkImportMemoryWin32HandleInfoKHX&() const
20017 {
20018 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
20019 }
20020
20021 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
20022 {
20023 return ( sType == rhs.sType )
20024 && ( pNext == rhs.pNext )
20025 && ( handleType == rhs.handleType )
20026 && ( handle == rhs.handle );
20027 }
20028
20029 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
20030 {
20031 return !operator==( rhs );
20032 }
20033
20034 private:
20035 StructureType sType;
20036
20037 public:
20038 const void* pNext;
20039 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20040 HANDLE handle;
20041 };
20042 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020043#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070020044
20045 struct ImportMemoryFdInfoKHX
20046 {
20047 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20048 : sType( StructureType::eImportMemoryFdInfoKHX )
20049 , pNext( nullptr )
20050 , handleType( handleType_ )
20051 , fd( fd_ )
20052 {
20053 }
20054
20055 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
20056 {
20057 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
20058 }
20059
20060 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
20061 {
20062 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
20063 return *this;
20064 }
20065
20066 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
20067 {
20068 pNext = pNext_;
20069 return *this;
20070 }
20071
20072 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20073 {
20074 handleType = handleType_;
20075 return *this;
20076 }
20077
20078 ImportMemoryFdInfoKHX& setFd( int fd_ )
20079 {
20080 fd = fd_;
20081 return *this;
20082 }
20083
20084 operator const VkImportMemoryFdInfoKHX&() const
20085 {
20086 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
20087 }
20088
20089 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
20090 {
20091 return ( sType == rhs.sType )
20092 && ( pNext == rhs.pNext )
20093 && ( handleType == rhs.handleType )
20094 && ( fd == rhs.fd );
20095 }
20096
20097 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
20098 {
20099 return !operator==( rhs );
20100 }
20101
20102 private:
20103 StructureType sType;
20104
20105 public:
20106 const void* pNext;
20107 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20108 int fd;
20109 };
20110 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
20111
20112 enum class ExternalMemoryFeatureFlagBitsKHX
20113 {
20114 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
20115 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
20116 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
20117 };
20118
20119 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
20120
20121 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
20122 {
20123 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
20124 }
20125
20126 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
20127 {
20128 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
20129 }
20130
20131 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
20132 {
20133 enum
20134 {
20135 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
20136 };
20137 };
20138
20139 struct ExternalMemoryPropertiesKHX
20140 {
20141 operator const VkExternalMemoryPropertiesKHX&() const
20142 {
20143 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
20144 }
20145
20146 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
20147 {
20148 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20149 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20150 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20151 }
20152
20153 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
20154 {
20155 return !operator==( rhs );
20156 }
20157
20158 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
20159 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
20160 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
20161 };
20162 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
20163
20164 struct ExternalImageFormatPropertiesKHX
20165 {
20166 operator const VkExternalImageFormatPropertiesKHX&() const
20167 {
20168 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
20169 }
20170
20171 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
20172 {
20173 return ( sType == rhs.sType )
20174 && ( pNext == rhs.pNext )
20175 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20176 }
20177
20178 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
20179 {
20180 return !operator==( rhs );
20181 }
20182
20183 private:
20184 StructureType sType;
20185
20186 public:
20187 void* pNext;
20188 ExternalMemoryPropertiesKHX externalMemoryProperties;
20189 };
20190 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
20191
20192 struct ExternalBufferPropertiesKHX
20193 {
20194 operator const VkExternalBufferPropertiesKHX&() const
20195 {
20196 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
20197 }
20198
20199 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
20200 {
20201 return ( sType == rhs.sType )
20202 && ( pNext == rhs.pNext )
20203 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20204 }
20205
20206 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
20207 {
20208 return !operator==( rhs );
20209 }
20210
20211 private:
20212 StructureType sType;
20213
20214 public:
20215 void* pNext;
20216 ExternalMemoryPropertiesKHX externalMemoryProperties;
20217 };
20218 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
20219
20220 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
20221 {
20222 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
20223 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
20224 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
20225 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
20226 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
20227 };
20228
20229 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
20230
20231 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
20232 {
20233 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
20234 }
20235
20236 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
20237 {
20238 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
20239 }
20240
20241 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
20242 {
20243 enum
20244 {
20245 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
20246 };
20247 };
20248
20249 struct PhysicalDeviceExternalSemaphoreInfoKHX
20250 {
20251 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
20252 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
20253 , pNext( nullptr )
20254 , handleType( handleType_ )
20255 {
20256 }
20257
20258 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20259 {
20260 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20261 }
20262
20263 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20264 {
20265 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20266 return *this;
20267 }
20268
20269 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
20270 {
20271 pNext = pNext_;
20272 return *this;
20273 }
20274
20275 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20276 {
20277 handleType = handleType_;
20278 return *this;
20279 }
20280
20281 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
20282 {
20283 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
20284 }
20285
20286 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20287 {
20288 return ( sType == rhs.sType )
20289 && ( pNext == rhs.pNext )
20290 && ( handleType == rhs.handleType );
20291 }
20292
20293 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20294 {
20295 return !operator==( rhs );
20296 }
20297
20298 private:
20299 StructureType sType;
20300
20301 public:
20302 const void* pNext;
20303 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20304 };
20305 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
20306
20307 struct ExportSemaphoreCreateInfoKHX
20308 {
20309 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
20310 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
20311 , pNext( nullptr )
20312 , handleTypes( handleTypes_ )
20313 {
20314 }
20315
20316 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
20317 {
20318 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20319 }
20320
20321 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
20322 {
20323 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20324 return *this;
20325 }
20326
20327 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
20328 {
20329 pNext = pNext_;
20330 return *this;
20331 }
20332
20333 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
20334 {
20335 handleTypes = handleTypes_;
20336 return *this;
20337 }
20338
20339 operator const VkExportSemaphoreCreateInfoKHX&() const
20340 {
20341 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
20342 }
20343
20344 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
20345 {
20346 return ( sType == rhs.sType )
20347 && ( pNext == rhs.pNext )
20348 && ( handleTypes == rhs.handleTypes );
20349 }
20350
20351 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
20352 {
20353 return !operator==( rhs );
20354 }
20355
20356 private:
20357 StructureType sType;
20358
20359 public:
20360 const void* pNext;
20361 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
20362 };
20363 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
20364
20365#ifdef VK_USE_PLATFORM_WIN32_KHX
20366 struct ImportSemaphoreWin32HandleInfoKHX
20367 {
20368 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20369 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20370 , pNext( nullptr )
20371 , semaphore( semaphore_ )
20372 , handleType( handleType_ )
20373 , handle( handle_ )
20374 {
20375 }
20376
20377 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20378 {
20379 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20380 }
20381
20382 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20383 {
20384 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20385 return *this;
20386 }
20387
20388 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20389 {
20390 pNext = pNext_;
20391 return *this;
20392 }
20393
20394 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20395 {
20396 semaphore = semaphore_;
20397 return *this;
20398 }
20399
20400 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20401 {
20402 handleType = handleType_;
20403 return *this;
20404 }
20405
20406 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20407 {
20408 handle = handle_;
20409 return *this;
20410 }
20411
20412 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20413 {
20414 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20415 }
20416
20417 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20418 {
20419 return ( sType == rhs.sType )
20420 && ( pNext == rhs.pNext )
20421 && ( semaphore == rhs.semaphore )
20422 && ( handleType == rhs.handleType )
20423 && ( handle == rhs.handle );
20424 }
20425
20426 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20427 {
20428 return !operator==( rhs );
20429 }
20430
20431 private:
20432 StructureType sType;
20433
20434 public:
20435 const void* pNext;
20436 Semaphore semaphore;
20437 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20438 HANDLE handle;
20439 };
20440 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20441#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20442
20443 struct ImportSemaphoreFdInfoKHX
20444 {
20445 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20446 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20447 , pNext( nullptr )
20448 , semaphore( semaphore_ )
20449 , handleType( handleType_ )
20450 , fd( fd_ )
20451 {
20452 }
20453
20454 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20455 {
20456 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20457 }
20458
20459 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20460 {
20461 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20462 return *this;
20463 }
20464
20465 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20466 {
20467 pNext = pNext_;
20468 return *this;
20469 }
20470
20471 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20472 {
20473 semaphore = semaphore_;
20474 return *this;
20475 }
20476
20477 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20478 {
20479 handleType = handleType_;
20480 return *this;
20481 }
20482
20483 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20484 {
20485 fd = fd_;
20486 return *this;
20487 }
20488
20489 operator const VkImportSemaphoreFdInfoKHX&() const
20490 {
20491 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20492 }
20493
20494 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20495 {
20496 return ( sType == rhs.sType )
20497 && ( pNext == rhs.pNext )
20498 && ( semaphore == rhs.semaphore )
20499 && ( handleType == rhs.handleType )
20500 && ( fd == rhs.fd );
20501 }
20502
20503 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20504 {
20505 return !operator==( rhs );
20506 }
20507
20508 private:
20509 StructureType sType;
20510
20511 public:
20512 const void* pNext;
20513 Semaphore semaphore;
20514 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20515 int fd;
20516 };
20517 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20518
20519 enum class ExternalSemaphoreFeatureFlagBitsKHX
20520 {
20521 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20522 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20523 };
20524
20525 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20526
20527 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20528 {
20529 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20530 }
20531
20532 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20533 {
20534 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20535 }
20536
20537 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20538 {
20539 enum
20540 {
20541 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20542 };
20543 };
20544
20545 struct ExternalSemaphorePropertiesKHX
20546 {
20547 operator const VkExternalSemaphorePropertiesKHX&() const
20548 {
20549 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20550 }
20551
20552 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20553 {
20554 return ( sType == rhs.sType )
20555 && ( pNext == rhs.pNext )
20556 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20557 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20558 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20559 }
20560
20561 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20562 {
20563 return !operator==( rhs );
20564 }
20565
20566 private:
20567 StructureType sType;
20568
20569 public:
20570 void* pNext;
20571 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20572 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20573 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20574 };
20575 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20576
Mark Young39389872017-01-19 21:10:49 -070020577 enum class SurfaceCounterFlagBitsEXT
20578 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020579 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070020580 };
20581
20582 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20583
20584 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20585 {
20586 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20587 }
20588
20589 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20590 {
20591 return ~( SurfaceCounterFlagsEXT( bits ) );
20592 }
20593
20594 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20595 {
20596 enum
20597 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020598 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070020599 };
20600 };
20601
20602 struct SurfaceCapabilities2EXT
20603 {
20604 operator const VkSurfaceCapabilities2EXT&() const
20605 {
20606 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20607 }
20608
20609 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20610 {
20611 return ( sType == rhs.sType )
20612 && ( pNext == rhs.pNext )
20613 && ( minImageCount == rhs.minImageCount )
20614 && ( maxImageCount == rhs.maxImageCount )
20615 && ( currentExtent == rhs.currentExtent )
20616 && ( minImageExtent == rhs.minImageExtent )
20617 && ( maxImageExtent == rhs.maxImageExtent )
20618 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20619 && ( supportedTransforms == rhs.supportedTransforms )
20620 && ( currentTransform == rhs.currentTransform )
20621 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20622 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20623 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20624 }
20625
20626 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20627 {
20628 return !operator==( rhs );
20629 }
20630
20631 private:
20632 StructureType sType;
20633
20634 public:
20635 void* pNext;
20636 uint32_t minImageCount;
20637 uint32_t maxImageCount;
20638 Extent2D currentExtent;
20639 Extent2D minImageExtent;
20640 Extent2D maxImageExtent;
20641 uint32_t maxImageArrayLayers;
20642 SurfaceTransformFlagsKHR supportedTransforms;
20643 SurfaceTransformFlagBitsKHR currentTransform;
20644 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20645 ImageUsageFlags supportedUsageFlags;
20646 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20647 };
20648 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20649
20650 struct SwapchainCounterCreateInfoEXT
20651 {
20652 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20653 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20654 , pNext( nullptr )
20655 , surfaceCounters( surfaceCounters_ )
20656 {
20657 }
20658
20659 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20660 {
20661 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20662 }
20663
20664 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20665 {
20666 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20667 return *this;
20668 }
20669
Mark Young39389872017-01-19 21:10:49 -070020670 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20671 {
20672 pNext = pNext_;
20673 return *this;
20674 }
20675
20676 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20677 {
20678 surfaceCounters = surfaceCounters_;
20679 return *this;
20680 }
20681
20682 operator const VkSwapchainCounterCreateInfoEXT&() const
20683 {
20684 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20685 }
20686
20687 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20688 {
20689 return ( sType == rhs.sType )
20690 && ( pNext == rhs.pNext )
20691 && ( surfaceCounters == rhs.surfaceCounters );
20692 }
20693
20694 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20695 {
20696 return !operator==( rhs );
20697 }
20698
20699 private:
20700 StructureType sType;
20701
20702 public:
20703 const void* pNext;
20704 SurfaceCounterFlagsEXT surfaceCounters;
20705 };
20706 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20707
20708 enum class DisplayPowerStateEXT
20709 {
20710 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20711 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20712 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20713 };
20714
20715 struct DisplayPowerInfoEXT
20716 {
20717 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20718 : sType( StructureType::eDisplayPowerInfoEXT )
20719 , pNext( nullptr )
20720 , powerState( powerState_ )
20721 {
20722 }
20723
20724 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20725 {
20726 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20727 }
20728
20729 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20730 {
20731 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20732 return *this;
20733 }
20734
Mark Young39389872017-01-19 21:10:49 -070020735 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20736 {
20737 pNext = pNext_;
20738 return *this;
20739 }
20740
20741 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20742 {
20743 powerState = powerState_;
20744 return *this;
20745 }
20746
20747 operator const VkDisplayPowerInfoEXT&() const
20748 {
20749 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20750 }
20751
20752 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20753 {
20754 return ( sType == rhs.sType )
20755 && ( pNext == rhs.pNext )
20756 && ( powerState == rhs.powerState );
20757 }
20758
20759 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20760 {
20761 return !operator==( rhs );
20762 }
20763
20764 private:
20765 StructureType sType;
20766
20767 public:
20768 const void* pNext;
20769 DisplayPowerStateEXT powerState;
20770 };
20771 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20772
20773 enum class DeviceEventTypeEXT
20774 {
20775 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20776 };
20777
20778 struct DeviceEventInfoEXT
20779 {
20780 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20781 : sType( StructureType::eDeviceEventInfoEXT )
20782 , pNext( nullptr )
20783 , deviceEvent( deviceEvent_ )
20784 {
20785 }
20786
20787 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20788 {
20789 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20790 }
20791
20792 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20793 {
20794 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20795 return *this;
20796 }
20797
Mark Young39389872017-01-19 21:10:49 -070020798 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20799 {
20800 pNext = pNext_;
20801 return *this;
20802 }
20803
20804 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20805 {
20806 deviceEvent = deviceEvent_;
20807 return *this;
20808 }
20809
20810 operator const VkDeviceEventInfoEXT&() const
20811 {
20812 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20813 }
20814
20815 bool operator==( DeviceEventInfoEXT const& rhs ) const
20816 {
20817 return ( sType == rhs.sType )
20818 && ( pNext == rhs.pNext )
20819 && ( deviceEvent == rhs.deviceEvent );
20820 }
20821
20822 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20823 {
20824 return !operator==( rhs );
20825 }
20826
20827 private:
20828 StructureType sType;
20829
20830 public:
20831 const void* pNext;
20832 DeviceEventTypeEXT deviceEvent;
20833 };
20834 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20835
20836 enum class DisplayEventTypeEXT
20837 {
20838 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20839 };
20840
20841 struct DisplayEventInfoEXT
20842 {
20843 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20844 : sType( StructureType::eDisplayEventInfoEXT )
20845 , pNext( nullptr )
20846 , displayEvent( displayEvent_ )
20847 {
20848 }
20849
20850 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20851 {
20852 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20853 }
20854
20855 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20856 {
20857 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20858 return *this;
20859 }
20860
Mark Young39389872017-01-19 21:10:49 -070020861 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20862 {
20863 pNext = pNext_;
20864 return *this;
20865 }
20866
20867 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20868 {
20869 displayEvent = displayEvent_;
20870 return *this;
20871 }
20872
20873 operator const VkDisplayEventInfoEXT&() const
20874 {
20875 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20876 }
20877
20878 bool operator==( DisplayEventInfoEXT const& rhs ) const
20879 {
20880 return ( sType == rhs.sType )
20881 && ( pNext == rhs.pNext )
20882 && ( displayEvent == rhs.displayEvent );
20883 }
20884
20885 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20886 {
20887 return !operator==( rhs );
20888 }
20889
20890 private:
20891 StructureType sType;
20892
20893 public:
20894 const void* pNext;
20895 DisplayEventTypeEXT displayEvent;
20896 };
20897 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20898
Mark Young0f183a82017-02-28 09:58:04 -070020899 enum class PeerMemoryFeatureFlagBitsKHX
20900 {
20901 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20902 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20903 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20904 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20905 };
20906
20907 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20908
20909 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20910 {
20911 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20912 }
20913
20914 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20915 {
20916 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20917 }
20918
20919 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20920 {
20921 enum
20922 {
20923 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20924 };
20925 };
20926
20927 enum class MemoryAllocateFlagBitsKHX
20928 {
20929 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20930 };
20931
20932 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20933
20934 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20935 {
20936 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20937 }
20938
20939 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20940 {
20941 return ~( MemoryAllocateFlagsKHX( bits ) );
20942 }
20943
20944 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20945 {
20946 enum
20947 {
20948 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20949 };
20950 };
20951
20952 struct MemoryAllocateFlagsInfoKHX
20953 {
20954 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20955 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20956 , pNext( nullptr )
20957 , flags( flags_ )
20958 , deviceMask( deviceMask_ )
20959 {
20960 }
20961
20962 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20963 {
20964 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20965 }
20966
20967 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20968 {
20969 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20970 return *this;
20971 }
20972
20973 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20974 {
20975 pNext = pNext_;
20976 return *this;
20977 }
20978
20979 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20980 {
20981 flags = flags_;
20982 return *this;
20983 }
20984
20985 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20986 {
20987 deviceMask = deviceMask_;
20988 return *this;
20989 }
20990
20991 operator const VkMemoryAllocateFlagsInfoKHX&() const
20992 {
20993 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20994 }
20995
20996 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20997 {
20998 return ( sType == rhs.sType )
20999 && ( pNext == rhs.pNext )
21000 && ( flags == rhs.flags )
21001 && ( deviceMask == rhs.deviceMask );
21002 }
21003
21004 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
21005 {
21006 return !operator==( rhs );
21007 }
21008
21009 private:
21010 StructureType sType;
21011
21012 public:
21013 const void* pNext;
21014 MemoryAllocateFlagsKHX flags;
21015 uint32_t deviceMask;
21016 };
21017 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
21018
21019 enum class DeviceGroupPresentModeFlagBitsKHX
21020 {
21021 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
21022 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
21023 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
21024 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
21025 };
21026
21027 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
21028
21029 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
21030 {
21031 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
21032 }
21033
21034 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
21035 {
21036 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
21037 }
21038
21039 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
21040 {
21041 enum
21042 {
21043 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
21044 };
21045 };
21046
21047 struct DeviceGroupPresentCapabilitiesKHX
21048 {
21049 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
21050 {
21051 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
21052 }
21053
21054 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21055 {
21056 return ( sType == rhs.sType )
21057 && ( pNext == rhs.pNext )
21058 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
21059 && ( modes == rhs.modes );
21060 }
21061
21062 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21063 {
21064 return !operator==( rhs );
21065 }
21066
21067 private:
21068 StructureType sType;
21069
21070 public:
21071 const void* pNext;
21072 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
21073 DeviceGroupPresentModeFlagsKHX modes;
21074 };
21075 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
21076
21077 struct DeviceGroupPresentInfoKHX
21078 {
21079 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
21080 : sType( StructureType::eDeviceGroupPresentInfoKHX )
21081 , pNext( nullptr )
21082 , swapchainCount( swapchainCount_ )
21083 , pDeviceMasks( pDeviceMasks_ )
21084 , mode( mode_ )
21085 {
21086 }
21087
21088 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
21089 {
21090 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
21091 }
21092
21093 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
21094 {
21095 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
21096 return *this;
21097 }
21098
21099 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
21100 {
21101 pNext = pNext_;
21102 return *this;
21103 }
21104
21105 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
21106 {
21107 swapchainCount = swapchainCount_;
21108 return *this;
21109 }
21110
21111 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
21112 {
21113 pDeviceMasks = pDeviceMasks_;
21114 return *this;
21115 }
21116
21117 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
21118 {
21119 mode = mode_;
21120 return *this;
21121 }
21122
21123 operator const VkDeviceGroupPresentInfoKHX&() const
21124 {
21125 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
21126 }
21127
21128 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
21129 {
21130 return ( sType == rhs.sType )
21131 && ( pNext == rhs.pNext )
21132 && ( swapchainCount == rhs.swapchainCount )
21133 && ( pDeviceMasks == rhs.pDeviceMasks )
21134 && ( mode == rhs.mode );
21135 }
21136
21137 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
21138 {
21139 return !operator==( rhs );
21140 }
21141
21142 private:
21143 StructureType sType;
21144
21145 public:
21146 const void* pNext;
21147 uint32_t swapchainCount;
21148 const uint32_t* pDeviceMasks;
21149 DeviceGroupPresentModeFlagBitsKHX mode;
21150 };
21151 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
21152
21153 struct DeviceGroupSwapchainCreateInfoKHX
21154 {
21155 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
21156 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
21157 , pNext( nullptr )
21158 , modes( modes_ )
21159 {
21160 }
21161
21162 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21163 {
21164 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
21165 }
21166
21167 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21168 {
21169 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
21170 return *this;
21171 }
21172
21173 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
21174 {
21175 pNext = pNext_;
21176 return *this;
21177 }
21178
21179 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
21180 {
21181 modes = modes_;
21182 return *this;
21183 }
21184
21185 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
21186 {
21187 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
21188 }
21189
21190 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21191 {
21192 return ( sType == rhs.sType )
21193 && ( pNext == rhs.pNext )
21194 && ( modes == rhs.modes );
21195 }
21196
21197 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21198 {
21199 return !operator==( rhs );
21200 }
21201
21202 private:
21203 StructureType sType;
21204
21205 public:
21206 const void* pNext;
21207 DeviceGroupPresentModeFlagsKHX modes;
21208 };
21209 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
21210
21211 enum class SwapchainCreateFlagBitsKHR
21212 {
21213 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
21214 };
21215
21216 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
21217
21218 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
21219 {
21220 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
21221 }
21222
21223 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
21224 {
21225 return ~( SwapchainCreateFlagsKHR( bits ) );
21226 }
21227
21228 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
21229 {
21230 enum
21231 {
21232 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
21233 };
21234 };
21235
21236 struct SwapchainCreateInfoKHR
21237 {
21238 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() )
21239 : sType( StructureType::eSwapchainCreateInfoKHR )
21240 , pNext( nullptr )
21241 , flags( flags_ )
21242 , surface( surface_ )
21243 , minImageCount( minImageCount_ )
21244 , imageFormat( imageFormat_ )
21245 , imageColorSpace( imageColorSpace_ )
21246 , imageExtent( imageExtent_ )
21247 , imageArrayLayers( imageArrayLayers_ )
21248 , imageUsage( imageUsage_ )
21249 , imageSharingMode( imageSharingMode_ )
21250 , queueFamilyIndexCount( queueFamilyIndexCount_ )
21251 , pQueueFamilyIndices( pQueueFamilyIndices_ )
21252 , preTransform( preTransform_ )
21253 , compositeAlpha( compositeAlpha_ )
21254 , presentMode( presentMode_ )
21255 , clipped( clipped_ )
21256 , oldSwapchain( oldSwapchain_ )
21257 {
21258 }
21259
21260 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
21261 {
21262 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21263 }
21264
21265 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
21266 {
21267 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21268 return *this;
21269 }
21270
21271 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
21272 {
21273 pNext = pNext_;
21274 return *this;
21275 }
21276
21277 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
21278 {
21279 flags = flags_;
21280 return *this;
21281 }
21282
21283 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
21284 {
21285 surface = surface_;
21286 return *this;
21287 }
21288
21289 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
21290 {
21291 minImageCount = minImageCount_;
21292 return *this;
21293 }
21294
21295 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
21296 {
21297 imageFormat = imageFormat_;
21298 return *this;
21299 }
21300
21301 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
21302 {
21303 imageColorSpace = imageColorSpace_;
21304 return *this;
21305 }
21306
21307 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
21308 {
21309 imageExtent = imageExtent_;
21310 return *this;
21311 }
21312
21313 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
21314 {
21315 imageArrayLayers = imageArrayLayers_;
21316 return *this;
21317 }
21318
21319 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
21320 {
21321 imageUsage = imageUsage_;
21322 return *this;
21323 }
21324
21325 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
21326 {
21327 imageSharingMode = imageSharingMode_;
21328 return *this;
21329 }
21330
21331 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
21332 {
21333 queueFamilyIndexCount = queueFamilyIndexCount_;
21334 return *this;
21335 }
21336
21337 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
21338 {
21339 pQueueFamilyIndices = pQueueFamilyIndices_;
21340 return *this;
21341 }
21342
21343 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
21344 {
21345 preTransform = preTransform_;
21346 return *this;
21347 }
21348
21349 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
21350 {
21351 compositeAlpha = compositeAlpha_;
21352 return *this;
21353 }
21354
21355 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
21356 {
21357 presentMode = presentMode_;
21358 return *this;
21359 }
21360
21361 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
21362 {
21363 clipped = clipped_;
21364 return *this;
21365 }
21366
21367 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21368 {
21369 oldSwapchain = oldSwapchain_;
21370 return *this;
21371 }
21372
21373 operator const VkSwapchainCreateInfoKHR&() const
21374 {
21375 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21376 }
21377
21378 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21379 {
21380 return ( sType == rhs.sType )
21381 && ( pNext == rhs.pNext )
21382 && ( flags == rhs.flags )
21383 && ( surface == rhs.surface )
21384 && ( minImageCount == rhs.minImageCount )
21385 && ( imageFormat == rhs.imageFormat )
21386 && ( imageColorSpace == rhs.imageColorSpace )
21387 && ( imageExtent == rhs.imageExtent )
21388 && ( imageArrayLayers == rhs.imageArrayLayers )
21389 && ( imageUsage == rhs.imageUsage )
21390 && ( imageSharingMode == rhs.imageSharingMode )
21391 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21392 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21393 && ( preTransform == rhs.preTransform )
21394 && ( compositeAlpha == rhs.compositeAlpha )
21395 && ( presentMode == rhs.presentMode )
21396 && ( clipped == rhs.clipped )
21397 && ( oldSwapchain == rhs.oldSwapchain );
21398 }
21399
21400 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21401 {
21402 return !operator==( rhs );
21403 }
21404
21405 private:
21406 StructureType sType;
21407
21408 public:
21409 const void* pNext;
21410 SwapchainCreateFlagsKHR flags;
21411 SurfaceKHR surface;
21412 uint32_t minImageCount;
21413 Format imageFormat;
21414 ColorSpaceKHR imageColorSpace;
21415 Extent2D imageExtent;
21416 uint32_t imageArrayLayers;
21417 ImageUsageFlags imageUsage;
21418 SharingMode imageSharingMode;
21419 uint32_t queueFamilyIndexCount;
21420 const uint32_t* pQueueFamilyIndices;
21421 SurfaceTransformFlagBitsKHR preTransform;
21422 CompositeAlphaFlagBitsKHR compositeAlpha;
21423 PresentModeKHR presentMode;
21424 Bool32 clipped;
21425 SwapchainKHR oldSwapchain;
21426 };
21427 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21428
21429 enum class ViewportCoordinateSwizzleNV
21430 {
21431 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21432 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21433 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21434 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21435 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21436 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21437 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21438 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21439 };
21440
21441 struct ViewportSwizzleNV
21442 {
21443 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21444 : x( x_ )
21445 , y( y_ )
21446 , z( z_ )
21447 , w( w_ )
21448 {
21449 }
21450
21451 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21452 {
21453 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21454 }
21455
21456 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21457 {
21458 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21459 return *this;
21460 }
21461
21462 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21463 {
21464 x = x_;
21465 return *this;
21466 }
21467
21468 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21469 {
21470 y = y_;
21471 return *this;
21472 }
21473
21474 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21475 {
21476 z = z_;
21477 return *this;
21478 }
21479
21480 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21481 {
21482 w = w_;
21483 return *this;
21484 }
21485
21486 operator const VkViewportSwizzleNV&() const
21487 {
21488 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21489 }
21490
21491 bool operator==( ViewportSwizzleNV const& rhs ) const
21492 {
21493 return ( x == rhs.x )
21494 && ( y == rhs.y )
21495 && ( z == rhs.z )
21496 && ( w == rhs.w );
21497 }
21498
21499 bool operator!=( ViewportSwizzleNV const& rhs ) const
21500 {
21501 return !operator==( rhs );
21502 }
21503
21504 ViewportCoordinateSwizzleNV x;
21505 ViewportCoordinateSwizzleNV y;
21506 ViewportCoordinateSwizzleNV z;
21507 ViewportCoordinateSwizzleNV w;
21508 };
21509 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21510
21511 struct PipelineViewportSwizzleStateCreateInfoNV
21512 {
21513 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21514 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21515 , pNext( nullptr )
21516 , flags( flags_ )
21517 , viewportCount( viewportCount_ )
21518 , pViewportSwizzles( pViewportSwizzles_ )
21519 {
21520 }
21521
21522 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21523 {
21524 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21525 }
21526
21527 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21528 {
21529 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21530 return *this;
21531 }
21532
21533 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21534 {
21535 pNext = pNext_;
21536 return *this;
21537 }
21538
21539 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21540 {
21541 flags = flags_;
21542 return *this;
21543 }
21544
21545 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21546 {
21547 viewportCount = viewportCount_;
21548 return *this;
21549 }
21550
21551 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21552 {
21553 pViewportSwizzles = pViewportSwizzles_;
21554 return *this;
21555 }
21556
21557 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21558 {
21559 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21560 }
21561
21562 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21563 {
21564 return ( sType == rhs.sType )
21565 && ( pNext == rhs.pNext )
21566 && ( flags == rhs.flags )
21567 && ( viewportCount == rhs.viewportCount )
21568 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21569 }
21570
21571 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21572 {
21573 return !operator==( rhs );
21574 }
21575
21576 private:
21577 StructureType sType;
21578
21579 public:
21580 const void* pNext;
21581 PipelineViewportSwizzleStateCreateFlagsNV flags;
21582 uint32_t viewportCount;
21583 const ViewportSwizzleNV* pViewportSwizzles;
21584 };
21585 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21586
21587 enum class DiscardRectangleModeEXT
21588 {
21589 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21590 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21591 };
21592
21593 struct PipelineDiscardRectangleStateCreateInfoEXT
21594 {
21595 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21596 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21597 , pNext( nullptr )
21598 , flags( flags_ )
21599 , discardRectangleMode( discardRectangleMode_ )
21600 , discardRectangleCount( discardRectangleCount_ )
21601 , pDiscardRectangles( pDiscardRectangles_ )
21602 {
21603 }
21604
21605 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21606 {
21607 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21608 }
21609
21610 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21611 {
21612 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21613 return *this;
21614 }
21615
21616 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21617 {
21618 pNext = pNext_;
21619 return *this;
21620 }
21621
21622 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21623 {
21624 flags = flags_;
21625 return *this;
21626 }
21627
21628 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21629 {
21630 discardRectangleMode = discardRectangleMode_;
21631 return *this;
21632 }
21633
21634 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21635 {
21636 discardRectangleCount = discardRectangleCount_;
21637 return *this;
21638 }
21639
21640 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21641 {
21642 pDiscardRectangles = pDiscardRectangles_;
21643 return *this;
21644 }
21645
21646 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21647 {
21648 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21649 }
21650
21651 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21652 {
21653 return ( sType == rhs.sType )
21654 && ( pNext == rhs.pNext )
21655 && ( flags == rhs.flags )
21656 && ( discardRectangleMode == rhs.discardRectangleMode )
21657 && ( discardRectangleCount == rhs.discardRectangleCount )
21658 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21659 }
21660
21661 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21662 {
21663 return !operator==( rhs );
21664 }
21665
21666 private:
21667 StructureType sType;
21668
21669 public:
21670 const void* pNext;
21671 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21672 DiscardRectangleModeEXT discardRectangleMode;
21673 uint32_t discardRectangleCount;
21674 const Rect2D* pDiscardRectangles;
21675 };
21676 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21677
21678 enum class SubpassDescriptionFlagBits
21679 {
21680 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21681 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21682 };
21683
21684 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21685
21686 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21687 {
21688 return SubpassDescriptionFlags( bit0 ) | bit1;
21689 }
21690
21691 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21692 {
21693 return ~( SubpassDescriptionFlags( bits ) );
21694 }
21695
21696 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21697 {
21698 enum
21699 {
21700 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21701 };
21702 };
21703
21704 struct SubpassDescription
21705 {
21706 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 )
21707 : flags( flags_ )
21708 , pipelineBindPoint( pipelineBindPoint_ )
21709 , inputAttachmentCount( inputAttachmentCount_ )
21710 , pInputAttachments( pInputAttachments_ )
21711 , colorAttachmentCount( colorAttachmentCount_ )
21712 , pColorAttachments( pColorAttachments_ )
21713 , pResolveAttachments( pResolveAttachments_ )
21714 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21715 , preserveAttachmentCount( preserveAttachmentCount_ )
21716 , pPreserveAttachments( pPreserveAttachments_ )
21717 {
21718 }
21719
21720 SubpassDescription( VkSubpassDescription const & rhs )
21721 {
21722 memcpy( this, &rhs, sizeof(SubpassDescription) );
21723 }
21724
21725 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21726 {
21727 memcpy( this, &rhs, sizeof(SubpassDescription) );
21728 return *this;
21729 }
21730
21731 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21732 {
21733 flags = flags_;
21734 return *this;
21735 }
21736
21737 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21738 {
21739 pipelineBindPoint = pipelineBindPoint_;
21740 return *this;
21741 }
21742
21743 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21744 {
21745 inputAttachmentCount = inputAttachmentCount_;
21746 return *this;
21747 }
21748
21749 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21750 {
21751 pInputAttachments = pInputAttachments_;
21752 return *this;
21753 }
21754
21755 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21756 {
21757 colorAttachmentCount = colorAttachmentCount_;
21758 return *this;
21759 }
21760
21761 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21762 {
21763 pColorAttachments = pColorAttachments_;
21764 return *this;
21765 }
21766
21767 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21768 {
21769 pResolveAttachments = pResolveAttachments_;
21770 return *this;
21771 }
21772
21773 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21774 {
21775 pDepthStencilAttachment = pDepthStencilAttachment_;
21776 return *this;
21777 }
21778
21779 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21780 {
21781 preserveAttachmentCount = preserveAttachmentCount_;
21782 return *this;
21783 }
21784
21785 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21786 {
21787 pPreserveAttachments = pPreserveAttachments_;
21788 return *this;
21789 }
21790
21791 operator const VkSubpassDescription&() const
21792 {
21793 return *reinterpret_cast<const VkSubpassDescription*>(this);
21794 }
21795
21796 bool operator==( SubpassDescription const& rhs ) const
21797 {
21798 return ( flags == rhs.flags )
21799 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21800 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21801 && ( pInputAttachments == rhs.pInputAttachments )
21802 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21803 && ( pColorAttachments == rhs.pColorAttachments )
21804 && ( pResolveAttachments == rhs.pResolveAttachments )
21805 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21806 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21807 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21808 }
21809
21810 bool operator!=( SubpassDescription const& rhs ) const
21811 {
21812 return !operator==( rhs );
21813 }
21814
21815 SubpassDescriptionFlags flags;
21816 PipelineBindPoint pipelineBindPoint;
21817 uint32_t inputAttachmentCount;
21818 const AttachmentReference* pInputAttachments;
21819 uint32_t colorAttachmentCount;
21820 const AttachmentReference* pColorAttachments;
21821 const AttachmentReference* pResolveAttachments;
21822 const AttachmentReference* pDepthStencilAttachment;
21823 uint32_t preserveAttachmentCount;
21824 const uint32_t* pPreserveAttachments;
21825 };
21826 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21827
21828 struct RenderPassCreateInfo
21829 {
21830 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 )
21831 : sType( StructureType::eRenderPassCreateInfo )
21832 , pNext( nullptr )
21833 , flags( flags_ )
21834 , attachmentCount( attachmentCount_ )
21835 , pAttachments( pAttachments_ )
21836 , subpassCount( subpassCount_ )
21837 , pSubpasses( pSubpasses_ )
21838 , dependencyCount( dependencyCount_ )
21839 , pDependencies( pDependencies_ )
21840 {
21841 }
21842
21843 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21844 {
21845 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21846 }
21847
21848 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21849 {
21850 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21851 return *this;
21852 }
21853
21854 RenderPassCreateInfo& setPNext( const void* pNext_ )
21855 {
21856 pNext = pNext_;
21857 return *this;
21858 }
21859
21860 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21861 {
21862 flags = flags_;
21863 return *this;
21864 }
21865
21866 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21867 {
21868 attachmentCount = attachmentCount_;
21869 return *this;
21870 }
21871
21872 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21873 {
21874 pAttachments = pAttachments_;
21875 return *this;
21876 }
21877
21878 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21879 {
21880 subpassCount = subpassCount_;
21881 return *this;
21882 }
21883
21884 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21885 {
21886 pSubpasses = pSubpasses_;
21887 return *this;
21888 }
21889
21890 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21891 {
21892 dependencyCount = dependencyCount_;
21893 return *this;
21894 }
21895
21896 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21897 {
21898 pDependencies = pDependencies_;
21899 return *this;
21900 }
21901
21902 operator const VkRenderPassCreateInfo&() const
21903 {
21904 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21905 }
21906
21907 bool operator==( RenderPassCreateInfo const& rhs ) const
21908 {
21909 return ( sType == rhs.sType )
21910 && ( pNext == rhs.pNext )
21911 && ( flags == rhs.flags )
21912 && ( attachmentCount == rhs.attachmentCount )
21913 && ( pAttachments == rhs.pAttachments )
21914 && ( subpassCount == rhs.subpassCount )
21915 && ( pSubpasses == rhs.pSubpasses )
21916 && ( dependencyCount == rhs.dependencyCount )
21917 && ( pDependencies == rhs.pDependencies );
21918 }
21919
21920 bool operator!=( RenderPassCreateInfo const& rhs ) const
21921 {
21922 return !operator==( rhs );
21923 }
21924
21925 private:
21926 StructureType sType;
21927
21928 public:
21929 const void* pNext;
21930 RenderPassCreateFlags flags;
21931 uint32_t attachmentCount;
21932 const AttachmentDescription* pAttachments;
21933 uint32_t subpassCount;
21934 const SubpassDescription* pSubpasses;
21935 uint32_t dependencyCount;
21936 const SubpassDependency* pDependencies;
21937 };
21938 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21939
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021940 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21941#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21942 template <typename Allocator = std::allocator<LayerProperties>>
21943 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21945
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021946 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21947 {
21948 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21949 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021950#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021951 template <typename Allocator>
21952 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021953 {
21954 std::vector<LayerProperties,Allocator> properties;
21955 uint32_t propertyCount;
21956 Result result;
21957 do
21958 {
21959 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21960 if ( ( result == Result::eSuccess ) && propertyCount )
21961 {
21962 properties.resize( propertyCount );
21963 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21964 }
21965 } while ( result == Result::eIncomplete );
21966 assert( propertyCount <= properties.size() );
21967 properties.resize( propertyCount );
21968 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21969 }
21970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21971
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021972
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021973 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21974#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21975 template <typename Allocator = std::allocator<ExtensionProperties>>
21976 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021979 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21980 {
21981 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21982 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021984 template <typename Allocator>
21985 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021986 {
21987 std::vector<ExtensionProperties,Allocator> properties;
21988 uint32_t propertyCount;
21989 Result result;
21990 do
21991 {
21992 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21993 if ( ( result == Result::eSuccess ) && propertyCount )
21994 {
21995 properties.resize( propertyCount );
21996 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21997 }
21998 } while ( result == Result::eIncomplete );
21999 assert( propertyCount <= properties.size() );
22000 properties.resize( propertyCount );
22001 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
22002 }
22003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22004
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022005
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022006 // forward declarations
22007 struct CmdProcessCommandsInfoNVX;
22008
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022009 class CommandBuffer
22010 {
22011 public:
22012 CommandBuffer()
22013 : m_commandBuffer(VK_NULL_HANDLE)
22014 {}
22015
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022016 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022017 : m_commandBuffer(VK_NULL_HANDLE)
22018 {}
22019
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022020 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022021 : m_commandBuffer(commandBuffer)
22022 {}
22023
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022024#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022025 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
22026 {
22027 m_commandBuffer = commandBuffer;
22028 return *this;
22029 }
22030#endif
22031
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022032 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022033 {
22034 m_commandBuffer = VK_NULL_HANDLE;
22035 return *this;
22036 }
22037
Lenny Komowebf33162016-08-26 14:10:08 -060022038 bool operator==(CommandBuffer const &rhs) const
22039 {
22040 return m_commandBuffer == rhs.m_commandBuffer;
22041 }
22042
22043 bool operator!=(CommandBuffer const &rhs) const
22044 {
22045 return m_commandBuffer != rhs.m_commandBuffer;
22046 }
22047
22048 bool operator<(CommandBuffer const &rhs) const
22049 {
22050 return m_commandBuffer < rhs.m_commandBuffer;
22051 }
22052
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022053 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022055 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22057
22058#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022059 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022060#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022061 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22063
22064#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022065 Result reset( CommandBufferResetFlags flags ) const;
22066#else
22067 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22069
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022070 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022071
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022072 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022074 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22076
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022077 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022079 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22081
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022082 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022083
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022084 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
22085
22086 void setBlendConstants( const float blendConstants[4] ) const;
22087
22088 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
22089
22090 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
22091
22092 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
22093
22094 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
22095
22096 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 -060022097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022098 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 -060022099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022101 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022103 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022105 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22107
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022108 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022110 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
22111
22112 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22113
22114 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22115
Mark Young0f183a82017-02-28 09:58:04 -070022116 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022117
22118 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
22119
22120 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022122 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22124
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022125 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022127 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22129
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022130 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 -060022131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022132 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22134
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022135 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022137 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22139
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022140 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022142 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22144
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022145 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22147 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022148 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22150
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022151 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022153 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022155 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22157
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022158 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022160 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22162
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022163 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022165 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22167
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022168 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022170 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022173 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022175 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
22176
22177 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 -060022178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022179 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 -060022180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22181
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022182 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 -060022183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022184 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 -060022185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022187 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022188
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022189 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022190
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022191 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022192
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022193 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022194
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022195 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 -060022196
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022197 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022198#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22199 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022200 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022203 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022205 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022208 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022209
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022210 void endRenderPass() const;
22211
22212 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022214 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22216
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022217 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022218#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022219 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22221
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022222 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022224 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022226 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22228
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022229 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022230
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022231 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
22232
22233 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022235 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22237
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022238 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022240 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22242
Mark Young0f183a82017-02-28 09:58:04 -070022243 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
22244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22245 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
22246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22247
22248 void setDeviceMaskKHX( uint32_t deviceMask ) const;
22249
22250 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
22251
22252 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
22253
22254 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
22255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22256 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
22257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22258
22259 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
22260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22261 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
22262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22263
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022264 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022265 {
22266 return m_commandBuffer;
22267 }
22268
22269 explicit operator bool() const
22270 {
22271 return m_commandBuffer != VK_NULL_HANDLE;
22272 }
22273
22274 bool operator!() const
22275 {
22276 return m_commandBuffer == VK_NULL_HANDLE;
22277 }
22278
22279 private:
22280 VkCommandBuffer m_commandBuffer;
22281 };
22282 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
22283
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022284 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
22285 {
22286 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
22287 }
22288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22289 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
22290 {
22291 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
22292 return createResultValue( result, "vk::CommandBuffer::begin" );
22293 }
22294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22295
22296#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22297 VULKAN_HPP_INLINE Result CommandBuffer::end() const
22298 {
22299 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22300 }
22301#else
22302 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
22303 {
22304 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22305 return createResultValue( result, "vk::CommandBuffer::end" );
22306 }
22307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22308
22309#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22310 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
22311 {
22312 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22313 }
22314#else
22315 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
22316 {
22317 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22318 return createResultValue( result, "vk::CommandBuffer::reset" );
22319 }
22320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22321
22322 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
22323 {
22324 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
22325 }
22326
22327 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
22328 {
22329 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
22330 }
22331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22332 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
22333 {
22334 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
22335 }
22336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22337
22338 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
22339 {
22340 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
22341 }
22342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22343 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
22344 {
22345 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
22346 }
22347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22348
22349 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
22350 {
22351 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
22352 }
22353
22354 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
22355 {
22356 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
22357 }
22358
22359 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
22360 {
22361 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
22362 }
22363
22364 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
22365 {
22366 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22367 }
22368
22369 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22370 {
22371 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22372 }
22373
22374 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22375 {
22376 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22377 }
22378
22379 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22380 {
22381 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22382 }
22383
22384 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
22385 {
22386 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22387 }
22388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22389 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22390 {
22391 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22392 }
22393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22394
22395 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22396 {
22397 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22398 }
22399
22400 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22401 {
22402 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22403 }
22404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22405 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22406 {
22407#ifdef VULKAN_HPP_NO_EXCEPTIONS
22408 assert( buffers.size() == offsets.size() );
22409#else
22410 if ( buffers.size() != offsets.size() )
22411 {
22412 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22413 }
22414#endif // VULKAN_HPP_NO_EXCEPTIONS
22415 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22416 }
22417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22418
22419 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22420 {
22421 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22422 }
22423
22424 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22425 {
22426 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22427 }
22428
22429 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22430 {
22431 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22432 }
22433
22434 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22435 {
22436 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22437 }
22438
Mark Young0f183a82017-02-28 09:58:04 -070022439 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022440 {
Mark Young0f183a82017-02-28 09:58:04 -070022441 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022442 }
22443
22444 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22445 {
22446 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22447 }
22448
22449 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22450 {
22451 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22452 }
22453#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22454 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22455 {
22456 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22457 }
22458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22459
22460 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22461 {
22462 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 ) );
22463 }
22464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22465 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22466 {
22467 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() ) );
22468 }
22469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22470
22471 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22472 {
22473 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 ) );
22474 }
22475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22476 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22477 {
22478 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 ) );
22479 }
22480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22481
22482 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22483 {
22484 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22485 }
22486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22487 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22488 {
22489 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22490 }
22491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22492
22493 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22494 {
22495 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22496 }
22497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22498 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22499 {
22500 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22501 }
22502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22503
22504 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22505 {
22506 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22507 }
22508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22509 template <typename T>
22510 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22511 {
22512 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22513 }
22514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22515
22516 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22517 {
22518 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22519 }
22520
22521 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22522 {
22523 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22524 }
22525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22526 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22527 {
22528 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22529 }
22530#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22531
22532 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22533 {
22534 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22535 }
22536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22537 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22538 {
22539 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22540 }
22541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22542
22543 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22544 {
22545 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22546 }
22547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22548 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22549 {
22550 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22551 }
22552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22553
22554 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22555 {
22556 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 ) );
22557 }
22558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22559 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22560 {
22561 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() ) );
22562 }
22563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22564
22565 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22566 {
22567 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22568 }
22569
22570 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22571 {
22572 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22573 }
22574
22575 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
22576 {
22577 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 ) );
22578 }
22579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22580 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
22581 {
22582 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() ) );
22583 }
22584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22585
22586 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
22587 {
22588 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 ) );
22589 }
22590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22591 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
22592 {
22593 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() ) );
22594 }
22595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22596
22597 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22598 {
22599 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22600 }
22601
22602 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22603 {
22604 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22605 }
22606
22607 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22608 {
22609 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22610 }
22611
22612 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22613 {
22614 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22615 }
22616
22617 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22618 {
22619 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22620 }
22621
22622 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22623 {
22624 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22625 }
22626#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22627 template <typename T>
22628 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22629 {
22630 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22631 }
22632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22633
22634 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22635 {
22636 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22637 }
22638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22639 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22640 {
22641 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22642 }
22643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22644
22645 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22646 {
22647 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22648 }
22649
22650 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22651 {
22652 vkCmdEndRenderPass( m_commandBuffer );
22653 }
22654
22655 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22656 {
22657 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22658 }
22659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22660 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22661 {
22662 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22663 }
22664#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22665
22666 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22667 {
22668 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22669 }
22670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22671 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22672 {
22673 DebugMarkerMarkerInfoEXT markerInfo;
22674 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22675 return markerInfo;
22676 }
22677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22678
22679 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22680 {
22681 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22682 }
22683
22684 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22685 {
22686 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22687 }
22688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22689 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22690 {
22691 DebugMarkerMarkerInfoEXT markerInfo;
22692 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22693 return markerInfo;
22694 }
22695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22696
22697 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22698 {
22699 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22700 }
22701
22702 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22703 {
22704 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22705 }
22706
22707 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22708 {
22709 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22710 }
22711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22712 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22713 {
22714 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22715 }
22716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22717
22718 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22719 {
22720 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22721 }
22722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22723 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22724 {
22725 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22726 }
22727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022728
22729 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22730 {
22731 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22732 }
22733#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22734 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22735 {
22736 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22737 }
22738#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22739
22740 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22741 {
22742 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22743 }
22744
22745 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
22746 {
22747 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22748 }
22749
22750 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22751 {
22752 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22753 }
22754
22755 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22756 {
22757 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22758 }
22759#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22760 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22761 {
22762 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22763 }
22764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22765
22766 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22767 {
22768 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22769 }
22770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22771 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22772 {
22773 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22774 }
22775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022776
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022777 struct SubmitInfo
22778 {
22779 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 )
22780 : sType( StructureType::eSubmitInfo )
22781 , pNext( nullptr )
22782 , waitSemaphoreCount( waitSemaphoreCount_ )
22783 , pWaitSemaphores( pWaitSemaphores_ )
22784 , pWaitDstStageMask( pWaitDstStageMask_ )
22785 , commandBufferCount( commandBufferCount_ )
22786 , pCommandBuffers( pCommandBuffers_ )
22787 , signalSemaphoreCount( signalSemaphoreCount_ )
22788 , pSignalSemaphores( pSignalSemaphores_ )
22789 {
22790 }
22791
22792 SubmitInfo( VkSubmitInfo const & rhs )
22793 {
22794 memcpy( this, &rhs, sizeof(SubmitInfo) );
22795 }
22796
22797 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22798 {
22799 memcpy( this, &rhs, sizeof(SubmitInfo) );
22800 return *this;
22801 }
22802
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022803 SubmitInfo& setPNext( const void* pNext_ )
22804 {
22805 pNext = pNext_;
22806 return *this;
22807 }
22808
22809 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22810 {
22811 waitSemaphoreCount = waitSemaphoreCount_;
22812 return *this;
22813 }
22814
22815 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22816 {
22817 pWaitSemaphores = pWaitSemaphores_;
22818 return *this;
22819 }
22820
22821 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22822 {
22823 pWaitDstStageMask = pWaitDstStageMask_;
22824 return *this;
22825 }
22826
22827 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22828 {
22829 commandBufferCount = commandBufferCount_;
22830 return *this;
22831 }
22832
22833 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22834 {
22835 pCommandBuffers = pCommandBuffers_;
22836 return *this;
22837 }
22838
22839 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22840 {
22841 signalSemaphoreCount = signalSemaphoreCount_;
22842 return *this;
22843 }
22844
22845 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22846 {
22847 pSignalSemaphores = pSignalSemaphores_;
22848 return *this;
22849 }
22850
22851 operator const VkSubmitInfo&() const
22852 {
22853 return *reinterpret_cast<const VkSubmitInfo*>(this);
22854 }
22855
22856 bool operator==( SubmitInfo const& rhs ) const
22857 {
22858 return ( sType == rhs.sType )
22859 && ( pNext == rhs.pNext )
22860 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22861 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22862 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22863 && ( commandBufferCount == rhs.commandBufferCount )
22864 && ( pCommandBuffers == rhs.pCommandBuffers )
22865 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22866 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22867 }
22868
22869 bool operator!=( SubmitInfo const& rhs ) const
22870 {
22871 return !operator==( rhs );
22872 }
22873
22874 private:
22875 StructureType sType;
22876
22877 public:
22878 const void* pNext;
22879 uint32_t waitSemaphoreCount;
22880 const Semaphore* pWaitSemaphores;
22881 const PipelineStageFlags* pWaitDstStageMask;
22882 uint32_t commandBufferCount;
22883 const CommandBuffer* pCommandBuffers;
22884 uint32_t signalSemaphoreCount;
22885 const Semaphore* pSignalSemaphores;
22886 };
22887 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22888
22889 class Queue
22890 {
22891 public:
22892 Queue()
22893 : m_queue(VK_NULL_HANDLE)
22894 {}
22895
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022896 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022897 : m_queue(VK_NULL_HANDLE)
22898 {}
22899
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022900 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022901 : m_queue(queue)
22902 {}
22903
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022904#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022905 Queue& operator=(VkQueue queue)
22906 {
22907 m_queue = queue;
22908 return *this;
22909 }
22910#endif
22911
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022912 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022913 {
22914 m_queue = VK_NULL_HANDLE;
22915 return *this;
22916 }
22917
Lenny Komowebf33162016-08-26 14:10:08 -060022918 bool operator==(Queue const &rhs) const
22919 {
22920 return m_queue == rhs.m_queue;
22921 }
22922
22923 bool operator!=(Queue const &rhs) const
22924 {
22925 return m_queue != rhs.m_queue;
22926 }
22927
22928 bool operator<(Queue const &rhs) const
22929 {
22930 return m_queue < rhs.m_queue;
22931 }
22932
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022933 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022934#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022935 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22937
22938#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022939 Result waitIdle() const;
22940#else
22941 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22943
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022944 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022945#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022946 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22948
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022949 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022950#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022951 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22953
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022954 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022955 {
22956 return m_queue;
22957 }
22958
22959 explicit operator bool() const
22960 {
22961 return m_queue != VK_NULL_HANDLE;
22962 }
22963
22964 bool operator!() const
22965 {
22966 return m_queue == VK_NULL_HANDLE;
22967 }
22968
22969 private:
22970 VkQueue m_queue;
22971 };
22972 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022974 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22975 {
22976 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22977 }
22978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22979 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22980 {
22981 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22982 return createResultValue( result, "vk::Queue::submit" );
22983 }
22984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22985
22986#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22987 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22988 {
22989 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22990 }
22991#else
22992 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22993 {
22994 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22995 return createResultValue( result, "vk::Queue::waitIdle" );
22996 }
22997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22998
22999 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
23000 {
23001 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
23002 }
23003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23004 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
23005 {
23006 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
23007 return createResultValue( result, "vk::Queue::bindSparse" );
23008 }
23009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23010
23011 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
23012 {
23013 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
23014 }
23015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23016 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
23017 {
23018 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
23019 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
23020 }
23021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023022
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023023#ifndef VULKAN_HPP_NO_SMART_HANDLE
23024 class BufferDeleter;
23025 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
23026 class BufferViewDeleter;
23027 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
23028 class CommandBufferDeleter;
23029 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
23030 class CommandPoolDeleter;
23031 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
23032 class DescriptorPoolDeleter;
23033 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
23034 class DescriptorSetDeleter;
23035 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
23036 class DescriptorSetLayoutDeleter;
23037 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070023038 class DescriptorUpdateTemplateKHRDeleter;
23039 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023040 class DeviceMemoryDeleter;
23041 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
23042 class EventDeleter;
23043 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
23044 class FenceDeleter;
23045 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
23046 class FramebufferDeleter;
23047 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
23048 class ImageDeleter;
23049 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
23050 class ImageViewDeleter;
23051 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
23052 class IndirectCommandsLayoutNVXDeleter;
23053 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
23054 class ObjectTableNVXDeleter;
23055 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
23056 class PipelineDeleter;
23057 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
23058 class PipelineCacheDeleter;
23059 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
23060 class PipelineLayoutDeleter;
23061 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
23062 class QueryPoolDeleter;
23063 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
23064 class RenderPassDeleter;
23065 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
23066 class SamplerDeleter;
23067 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
23068 class SemaphoreDeleter;
23069 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
23070 class ShaderModuleDeleter;
23071 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
23072 class SwapchainKHRDeleter;
23073 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
23074#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23075
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023076 class Device
23077 {
23078 public:
23079 Device()
23080 : m_device(VK_NULL_HANDLE)
23081 {}
23082
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023083 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023084 : m_device(VK_NULL_HANDLE)
23085 {}
23086
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023087 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023088 : m_device(device)
23089 {}
23090
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023091#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023092 Device& operator=(VkDevice device)
23093 {
23094 m_device = device;
23095 return *this;
23096 }
23097#endif
23098
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023099 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023100 {
23101 m_device = VK_NULL_HANDLE;
23102 return *this;
23103 }
23104
Lenny Komowebf33162016-08-26 14:10:08 -060023105 bool operator==(Device const &rhs) const
23106 {
23107 return m_device == rhs.m_device;
23108 }
23109
23110 bool operator!=(Device const &rhs) const
23111 {
23112 return m_device != rhs.m_device;
23113 }
23114
23115 bool operator<(Device const &rhs) const
23116 {
23117 return m_device < rhs.m_device;
23118 }
23119
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023120 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023122 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23124
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023125 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023127 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23129
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023130 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023132 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23134
23135#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023136 Result waitIdle() const;
23137#else
23138 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23140
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023141 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023143 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23144#ifndef VULKAN_HPP_NO_SMART_HANDLE
23145 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23146#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023149 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023151 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23153
23154 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
23155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23156 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
23157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23158
23159 void unmapMemory( DeviceMemory memory ) const;
23160
23161 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23163 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23165
23166 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23168 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23170
23171 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
23172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23173 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
23174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23175
23176 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
23177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23178 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023179#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23180
23181#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023182 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23183#else
23184 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023187 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023189 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23191
23192#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023193 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
23194#else
23195 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23197
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023198 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023200 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
23201 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023204 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023206 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23207#ifndef VULKAN_HPP_NO_SMART_HANDLE
23208 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23209#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23211
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023212 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023214 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23216
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023217 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023218#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023219 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23221
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023222 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023224 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023226 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
23227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23228
23229 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
23230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23231 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23232#ifndef VULKAN_HPP_NO_SMART_HANDLE
23233 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23234#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23236
23237 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
23238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23239 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23240#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23241
23242 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
23243#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23244 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23245#ifndef VULKAN_HPP_NO_SMART_HANDLE
23246 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23247#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23249
23250 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
23251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23252 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23254
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023255 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023256
23257#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023258 Result setEvent( Event event ) const;
23259#else
23260 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23262
23263#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023264 Result resetEvent( Event event ) const;
23265#else
23266 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23268
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023269 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023270#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023271 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23272#ifndef VULKAN_HPP_NO_SMART_HANDLE
23273 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23274#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23276
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023277 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023279 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) 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 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 -060023283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23284 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023285 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 -060023286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23287
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023288 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023290 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23291#ifndef VULKAN_HPP_NO_SMART_HANDLE
23292 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23293#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23295
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023296 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023298 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23300
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023301 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023303 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23304#ifndef VULKAN_HPP_NO_SMART_HANDLE
23305 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23306#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23308
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023309 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023310#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023311 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23313
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023314 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023316 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23317#ifndef VULKAN_HPP_NO_SMART_HANDLE
23318 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23319#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23321
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023322 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023324 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23326
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023327 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023328#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023329 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23331
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023332 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023334 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23335#ifndef VULKAN_HPP_NO_SMART_HANDLE
23336 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23337#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23339
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023340 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023342 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23344
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023345 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023346#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023347 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23348#ifndef VULKAN_HPP_NO_SMART_HANDLE
23349 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23350#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23352
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023353 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023355 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023356#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23357
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023358 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023359#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023360 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23361#ifndef VULKAN_HPP_NO_SMART_HANDLE
23362 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23363#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23365
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023366 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023368 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23370
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023371 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023373 template <typename Allocator = std::allocator<uint8_t>>
23374 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23376
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023377 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023378#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023379 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23381
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023382 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023384 template <typename Allocator = std::allocator<Pipeline>>
23385 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23386 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23387#ifndef VULKAN_HPP_NO_SMART_HANDLE
23388 template <typename Allocator = std::allocator<Pipeline>>
23389 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23390 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23391#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023392#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23393
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023394 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023396 template <typename Allocator = std::allocator<Pipeline>>
23397 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23398 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23399#ifndef VULKAN_HPP_NO_SMART_HANDLE
23400 template <typename Allocator = std::allocator<Pipeline>>
23401 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23402 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23403#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23405
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023406 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023408 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23410
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023411 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023413 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23414#ifndef VULKAN_HPP_NO_SMART_HANDLE
23415 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23416#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23418
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023419 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023421 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23423
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023424 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023426 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23427#ifndef VULKAN_HPP_NO_SMART_HANDLE
23428 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23429#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23431
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023432 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023434 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23436
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023437 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023439 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23440#ifndef VULKAN_HPP_NO_SMART_HANDLE
23441 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23442#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23444
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023445 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023447 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23449
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023450 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023451#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023452 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23453#ifndef VULKAN_HPP_NO_SMART_HANDLE
23454 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23455#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23457
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023458 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023460 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23462
23463#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023464 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23465#else
23466 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23468
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023469 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023471 template <typename Allocator = std::allocator<DescriptorSet>>
23472 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23473#ifndef VULKAN_HPP_NO_SMART_HANDLE
23474 template <typename Allocator = std::allocator<DescriptorSet>>
23475 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23476#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23478
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023479 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023480#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023481 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23483
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023484 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023486 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23488
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023489 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023490#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023491 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23492#ifndef VULKAN_HPP_NO_SMART_HANDLE
23493 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23494#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23496
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023497 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023499 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23501
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023502 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023504 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23505#ifndef VULKAN_HPP_NO_SMART_HANDLE
23506 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23507#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23509
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023510 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023512 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23514
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023515 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023517 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23519
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023520 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023521#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023522 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23523#ifndef VULKAN_HPP_NO_SMART_HANDLE
23524 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23525#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23527
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023528 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023530 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023531#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23532
23533#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023534 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23535#else
23536 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23538
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023539 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023540#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023541 template <typename Allocator = std::allocator<CommandBuffer>>
23542 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23543#ifndef VULKAN_HPP_NO_SMART_HANDLE
23544 template <typename Allocator = std::allocator<CommandBuffer>>
23545 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23546#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23548
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023549 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023551 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23553
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023554 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023556 template <typename Allocator = std::allocator<SwapchainKHR>>
23557 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23558 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23559#ifndef VULKAN_HPP_NO_SMART_HANDLE
23560 template <typename Allocator = std::allocator<SwapchainKHR>>
23561 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23562 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23563#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23565
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023566 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023568 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23569#ifndef VULKAN_HPP_NO_SMART_HANDLE
23570 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23571#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23573
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023574 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023576 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23578
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023579 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023580#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023581 template <typename Allocator = std::allocator<Image>>
23582 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23584
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023585 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023587 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023588#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23589
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023590 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023591#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023592 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23594
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023595 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023597 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23599
Lenny Komow6501c122016-08-31 15:03:49 -060023600#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023601 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23603 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023605#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23606
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023607 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023609 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23610#ifndef VULKAN_HPP_NO_SMART_HANDLE
23611 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23612#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23614
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023615 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023616#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023617 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23619
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023620 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023622 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23623#ifndef VULKAN_HPP_NO_SMART_HANDLE
23624 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23625#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23627
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023628 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023630 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23632
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023633 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023635 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023636#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23637
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023638 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023639#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023640 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023641#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23642
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023643#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023644 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023645#else
23646 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23647#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023648
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023649#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023650 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23652 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023654#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023655
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023656#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023657 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23658#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23659 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023661#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023662
23663 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23664#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23665 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23667
23668 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23670 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23672
23673#ifdef VK_USE_PLATFORM_WIN32_KHX
23674 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23676 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23678#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23679
23680#ifdef VK_USE_PLATFORM_WIN32_KHX
23681 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23683 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23685#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23686
23687 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23689 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23691
23692 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23694 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23696
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023697 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023699 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23701
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023702 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023704 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23706
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023707 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023709 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23711
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023712 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023713#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023714 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023715#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23716
Mark Young0f183a82017-02-28 09:58:04 -070023717 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23719 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23720#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23721
23722 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23724 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23726
23727 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23729 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23731
23732 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23733#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23734 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23736
23737 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23739 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23741
23742 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23744 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23746
23747 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23749 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23750#ifndef VULKAN_HPP_NO_SMART_HANDLE
23751 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23752#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23753#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23754
23755 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23757 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23759
23760 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23761
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023762 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23764 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23766
Mark Lobodzinski54385432017-05-15 10:27:52 -060023767 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
23768
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023769 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23771 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23773
23774 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23776 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23777 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23779
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023780 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023781 {
23782 return m_device;
23783 }
23784
23785 explicit operator bool() const
23786 {
23787 return m_device != VK_NULL_HANDLE;
23788 }
23789
23790 bool operator!() const
23791 {
23792 return m_device == VK_NULL_HANDLE;
23793 }
23794
23795 private:
23796 VkDevice m_device;
23797 };
23798 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23799
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023800#ifndef VULKAN_HPP_NO_SMART_HANDLE
23801 class BufferDeleter
23802 {
23803 public:
23804 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23805 : m_device( device )
23806 , m_allocator( allocator )
23807 {}
23808
23809 void operator()( Buffer buffer )
23810 {
23811 m_device.destroyBuffer( buffer, m_allocator );
23812 }
23813
23814 private:
23815 Device m_device;
23816 Optional<const AllocationCallbacks> m_allocator;
23817 };
23818
23819 class BufferViewDeleter
23820 {
23821 public:
23822 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23823 : m_device( device )
23824 , m_allocator( allocator )
23825 {}
23826
23827 void operator()( BufferView bufferView )
23828 {
23829 m_device.destroyBufferView( bufferView, m_allocator );
23830 }
23831
23832 private:
23833 Device m_device;
23834 Optional<const AllocationCallbacks> m_allocator;
23835 };
23836
23837 class CommandBufferDeleter
23838 {
23839 public:
23840 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23841 : m_device( device )
23842 , m_commandPool( commandPool )
23843 {}
23844
23845 void operator()( CommandBuffer commandBuffer )
23846 {
23847 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23848 }
23849
23850 private:
23851 Device m_device;
23852 CommandPool m_commandPool;
23853 };
23854
23855 class CommandPoolDeleter
23856 {
23857 public:
23858 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23859 : m_device( device )
23860 , m_allocator( allocator )
23861 {}
23862
23863 void operator()( CommandPool commandPool )
23864 {
23865 m_device.destroyCommandPool( commandPool, m_allocator );
23866 }
23867
23868 private:
23869 Device m_device;
23870 Optional<const AllocationCallbacks> m_allocator;
23871 };
23872
23873 class DescriptorPoolDeleter
23874 {
23875 public:
23876 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23877 : m_device( device )
23878 , m_allocator( allocator )
23879 {}
23880
23881 void operator()( DescriptorPool descriptorPool )
23882 {
23883 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23884 }
23885
23886 private:
23887 Device m_device;
23888 Optional<const AllocationCallbacks> m_allocator;
23889 };
23890
23891 class DescriptorSetDeleter
23892 {
23893 public:
23894 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23895 : m_device( device )
23896 , m_descriptorPool( descriptorPool )
23897 {}
23898
23899 void operator()( DescriptorSet descriptorSet )
23900 {
23901 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23902 }
23903
23904 private:
23905 Device m_device;
23906 DescriptorPool m_descriptorPool;
23907 };
23908
23909 class DescriptorSetLayoutDeleter
23910 {
23911 public:
23912 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23913 : m_device( device )
23914 , m_allocator( allocator )
23915 {}
23916
23917 void operator()( DescriptorSetLayout descriptorSetLayout )
23918 {
23919 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23920 }
23921
23922 private:
23923 Device m_device;
23924 Optional<const AllocationCallbacks> m_allocator;
23925 };
23926
Mark Young0f183a82017-02-28 09:58:04 -070023927 class DescriptorUpdateTemplateKHRDeleter
23928 {
23929 public:
23930 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23931 : m_device( device )
23932 , m_allocator( allocator )
23933 {}
23934
23935 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23936 {
23937 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23938 }
23939
23940 private:
23941 Device m_device;
23942 Optional<const AllocationCallbacks> m_allocator;
23943 };
23944
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023945 class DeviceMemoryDeleter
23946 {
23947 public:
23948 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23949 : m_device( device )
23950 , m_allocator( allocator )
23951 {}
23952
23953 void operator()( DeviceMemory deviceMemory )
23954 {
23955 m_device.freeMemory( deviceMemory, m_allocator );
23956 }
23957
23958 private:
23959 Device m_device;
23960 Optional<const AllocationCallbacks> m_allocator;
23961 };
23962
23963 class EventDeleter
23964 {
23965 public:
23966 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23967 : m_device( device )
23968 , m_allocator( allocator )
23969 {}
23970
23971 void operator()( Event event )
23972 {
23973 m_device.destroyEvent( event, m_allocator );
23974 }
23975
23976 private:
23977 Device m_device;
23978 Optional<const AllocationCallbacks> m_allocator;
23979 };
23980
23981 class FenceDeleter
23982 {
23983 public:
23984 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23985 : m_device( device )
23986 , m_allocator( allocator )
23987 {}
23988
23989 void operator()( Fence fence )
23990 {
23991 m_device.destroyFence( fence, m_allocator );
23992 }
23993
23994 private:
23995 Device m_device;
23996 Optional<const AllocationCallbacks> m_allocator;
23997 };
23998
23999 class FramebufferDeleter
24000 {
24001 public:
24002 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24003 : m_device( device )
24004 , m_allocator( allocator )
24005 {}
24006
24007 void operator()( Framebuffer framebuffer )
24008 {
24009 m_device.destroyFramebuffer( framebuffer, m_allocator );
24010 }
24011
24012 private:
24013 Device m_device;
24014 Optional<const AllocationCallbacks> m_allocator;
24015 };
24016
24017 class ImageDeleter
24018 {
24019 public:
24020 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24021 : m_device( device )
24022 , m_allocator( allocator )
24023 {}
24024
24025 void operator()( Image image )
24026 {
24027 m_device.destroyImage( image, m_allocator );
24028 }
24029
24030 private:
24031 Device m_device;
24032 Optional<const AllocationCallbacks> m_allocator;
24033 };
24034
24035 class ImageViewDeleter
24036 {
24037 public:
24038 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24039 : m_device( device )
24040 , m_allocator( allocator )
24041 {}
24042
24043 void operator()( ImageView imageView )
24044 {
24045 m_device.destroyImageView( imageView, m_allocator );
24046 }
24047
24048 private:
24049 Device m_device;
24050 Optional<const AllocationCallbacks> m_allocator;
24051 };
24052
24053 class IndirectCommandsLayoutNVXDeleter
24054 {
24055 public:
24056 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24057 : m_device( device )
24058 , m_allocator( allocator )
24059 {}
24060
24061 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
24062 {
24063 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
24064 }
24065
24066 private:
24067 Device m_device;
24068 Optional<const AllocationCallbacks> m_allocator;
24069 };
24070
24071 class ObjectTableNVXDeleter
24072 {
24073 public:
24074 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24075 : m_device( device )
24076 , m_allocator( allocator )
24077 {}
24078
24079 void operator()( ObjectTableNVX objectTableNVX )
24080 {
24081 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
24082 }
24083
24084 private:
24085 Device m_device;
24086 Optional<const AllocationCallbacks> m_allocator;
24087 };
24088
24089 class PipelineDeleter
24090 {
24091 public:
24092 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24093 : m_device( device )
24094 , m_allocator( allocator )
24095 {}
24096
24097 void operator()( Pipeline pipeline )
24098 {
24099 m_device.destroyPipeline( pipeline, m_allocator );
24100 }
24101
24102 private:
24103 Device m_device;
24104 Optional<const AllocationCallbacks> m_allocator;
24105 };
24106
24107 class PipelineCacheDeleter
24108 {
24109 public:
24110 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24111 : m_device( device )
24112 , m_allocator( allocator )
24113 {}
24114
24115 void operator()( PipelineCache pipelineCache )
24116 {
24117 m_device.destroyPipelineCache( pipelineCache, m_allocator );
24118 }
24119
24120 private:
24121 Device m_device;
24122 Optional<const AllocationCallbacks> m_allocator;
24123 };
24124
24125 class PipelineLayoutDeleter
24126 {
24127 public:
24128 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24129 : m_device( device )
24130 , m_allocator( allocator )
24131 {}
24132
24133 void operator()( PipelineLayout pipelineLayout )
24134 {
24135 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
24136 }
24137
24138 private:
24139 Device m_device;
24140 Optional<const AllocationCallbacks> m_allocator;
24141 };
24142
24143 class QueryPoolDeleter
24144 {
24145 public:
24146 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24147 : m_device( device )
24148 , m_allocator( allocator )
24149 {}
24150
24151 void operator()( QueryPool queryPool )
24152 {
24153 m_device.destroyQueryPool( queryPool, m_allocator );
24154 }
24155
24156 private:
24157 Device m_device;
24158 Optional<const AllocationCallbacks> m_allocator;
24159 };
24160
24161 class RenderPassDeleter
24162 {
24163 public:
24164 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24165 : m_device( device )
24166 , m_allocator( allocator )
24167 {}
24168
24169 void operator()( RenderPass renderPass )
24170 {
24171 m_device.destroyRenderPass( renderPass, m_allocator );
24172 }
24173
24174 private:
24175 Device m_device;
24176 Optional<const AllocationCallbacks> m_allocator;
24177 };
24178
24179 class SamplerDeleter
24180 {
24181 public:
24182 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24183 : m_device( device )
24184 , m_allocator( allocator )
24185 {}
24186
24187 void operator()( Sampler sampler )
24188 {
24189 m_device.destroySampler( sampler, m_allocator );
24190 }
24191
24192 private:
24193 Device m_device;
24194 Optional<const AllocationCallbacks> m_allocator;
24195 };
24196
24197 class SemaphoreDeleter
24198 {
24199 public:
24200 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24201 : m_device( device )
24202 , m_allocator( allocator )
24203 {}
24204
24205 void operator()( Semaphore semaphore )
24206 {
24207 m_device.destroySemaphore( semaphore, m_allocator );
24208 }
24209
24210 private:
24211 Device m_device;
24212 Optional<const AllocationCallbacks> m_allocator;
24213 };
24214
24215 class ShaderModuleDeleter
24216 {
24217 public:
24218 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24219 : m_device( device )
24220 , m_allocator( allocator )
24221 {}
24222
24223 void operator()( ShaderModule shaderModule )
24224 {
24225 m_device.destroyShaderModule( shaderModule, m_allocator );
24226 }
24227
24228 private:
24229 Device m_device;
24230 Optional<const AllocationCallbacks> m_allocator;
24231 };
24232
24233 class SwapchainKHRDeleter
24234 {
24235 public:
24236 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24237 : m_device( device )
24238 , m_allocator( allocator )
24239 {}
24240
24241 void operator()( SwapchainKHR swapchainKHR )
24242 {
24243 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
24244 }
24245
24246 private:
24247 Device m_device;
24248 Optional<const AllocationCallbacks> m_allocator;
24249 };
24250#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24251
24252 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
24253 {
24254 return vkGetDeviceProcAddr( m_device, pName );
24255 }
24256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24257 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
24258 {
24259 return vkGetDeviceProcAddr( m_device, name.c_str() );
24260 }
24261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24262
24263 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
24264 {
24265 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24266 }
24267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24268 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
24269 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024270 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024271 }
24272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24273
24274 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
24275 {
24276 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
24277 }
24278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24279 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
24280 {
24281 Queue queue;
24282 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
24283 return queue;
24284 }
24285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24286
24287#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24288 VULKAN_HPP_INLINE Result Device::waitIdle() const
24289 {
24290 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24291 }
24292#else
24293 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
24294 {
24295 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24296 return createResultValue( result, "vk::Device::waitIdle" );
24297 }
24298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24299
24300 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
24301 {
24302 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
24303 }
24304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24305 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24306 {
24307 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024308 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 -070024309 return createResultValue( result, memory, "vk::Device::allocateMemory" );
24310 }
24311#ifndef VULKAN_HPP_NO_SMART_HANDLE
24312 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24313 {
24314 DeviceMemoryDeleter deleter( *this, allocator );
24315 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
24316 }
24317#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24319
24320 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
24321 {
24322 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24323 }
24324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24325 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
24326 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024327 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024328 }
24329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24330
24331 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
24332 {
24333 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
24334 }
24335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24336 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
24337 {
24338 void* pData;
24339 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
24340 return createResultValue( result, pData, "vk::Device::mapMemory" );
24341 }
24342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24343
24344 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
24345 {
24346 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
24347 }
24348
24349 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24350 {
24351 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24352 }
24353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24354 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24355 {
24356 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24357 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
24358 }
24359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24360
24361 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24362 {
24363 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24364 }
24365#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24366 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24367 {
24368 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24369 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24370 }
24371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24372
24373 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24374 {
24375 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24376 }
24377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24378 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24379 {
24380 DeviceSize committedMemoryInBytes;
24381 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24382 return committedMemoryInBytes;
24383 }
24384#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24385
24386 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24387 {
24388 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24389 }
24390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24391 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24392 {
24393 MemoryRequirements memoryRequirements;
24394 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24395 return memoryRequirements;
24396 }
24397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24398
24399#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24400 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24401 {
24402 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24403 }
24404#else
24405 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24406 {
24407 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24408 return createResultValue( result, "vk::Device::bindBufferMemory" );
24409 }
24410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24411
24412 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24413 {
24414 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24415 }
24416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24417 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24418 {
24419 MemoryRequirements memoryRequirements;
24420 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24421 return memoryRequirements;
24422 }
24423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24424
24425#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24426 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24427 {
24428 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24429 }
24430#else
24431 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24432 {
24433 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24434 return createResultValue( result, "vk::Device::bindImageMemory" );
24435 }
24436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24437
24438 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24439 {
24440 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24441 }
24442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24443 template <typename Allocator>
24444 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24445 {
24446 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24447 uint32_t sparseMemoryRequirementCount;
24448 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24449 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24450 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24451 return sparseMemoryRequirements;
24452 }
24453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24454
24455 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24456 {
24457 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24458 }
24459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24460 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24461 {
24462 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024463 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 -070024464 return createResultValue( result, fence, "vk::Device::createFence" );
24465 }
24466#ifndef VULKAN_HPP_NO_SMART_HANDLE
24467 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24468 {
24469 FenceDeleter deleter( *this, allocator );
24470 return UniqueFence( createFence( createInfo, allocator ), deleter );
24471 }
24472#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24474
24475 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24476 {
24477 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24478 }
24479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24480 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24481 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024482 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024483 }
24484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24485
24486 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24487 {
24488 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24489 }
24490#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24491 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24492 {
24493 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24494 return createResultValue( result, "vk::Device::resetFences" );
24495 }
24496#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24497
24498#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24499 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24500 {
24501 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24502 }
24503#else
24504 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24505 {
24506 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24507 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24508 }
24509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24510
24511 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24512 {
24513 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24514 }
24515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24516 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24517 {
24518 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24519 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24520 }
24521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24522
24523 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24524 {
24525 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24526 }
24527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24528 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24529 {
24530 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024531 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 -070024532 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24533 }
24534#ifndef VULKAN_HPP_NO_SMART_HANDLE
24535 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24536 {
24537 SemaphoreDeleter deleter( *this, allocator );
24538 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24539 }
24540#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24542
24543 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24544 {
24545 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24546 }
24547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24548 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24549 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024550 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024551 }
24552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24553
24554 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24555 {
24556 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24557 }
24558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24559 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24560 {
24561 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024562 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 -070024563 return createResultValue( result, event, "vk::Device::createEvent" );
24564 }
24565#ifndef VULKAN_HPP_NO_SMART_HANDLE
24566 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24567 {
24568 EventDeleter deleter( *this, allocator );
24569 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24570 }
24571#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24573
24574 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24575 {
24576 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24577 }
24578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24579 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24580 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024581 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024582 }
24583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24584
24585#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24586 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24587 {
24588 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24589 }
24590#else
24591 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24592 {
24593 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24594 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24595 }
24596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24597
24598#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24599 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24600 {
24601 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24602 }
24603#else
24604 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24605 {
24606 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24607 return createResultValue( result, "vk::Device::setEvent" );
24608 }
24609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24610
24611#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24612 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24613 {
24614 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24615 }
24616#else
24617 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24618 {
24619 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24620 return createResultValue( result, "vk::Device::resetEvent" );
24621 }
24622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24623
24624 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24625 {
24626 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24627 }
24628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24629 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24630 {
24631 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024632 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 -070024633 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24634 }
24635#ifndef VULKAN_HPP_NO_SMART_HANDLE
24636 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24637 {
24638 QueryPoolDeleter deleter( *this, allocator );
24639 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24640 }
24641#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24642#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24643
24644 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24645 {
24646 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24647 }
24648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24649 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24650 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024651 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024652 }
24653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24654
24655 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24656 {
24657 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24658 }
24659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24660 template <typename T>
24661 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24662 {
24663 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 ) ) );
24664 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24665 }
24666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24667
24668 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24669 {
24670 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24671 }
24672#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24673 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24674 {
24675 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024676 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 -070024677 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24678 }
24679#ifndef VULKAN_HPP_NO_SMART_HANDLE
24680 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24681 {
24682 BufferDeleter deleter( *this, allocator );
24683 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24684 }
24685#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24687
24688 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24689 {
24690 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24691 }
24692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24693 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24694 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024695 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024696 }
24697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24698
24699 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24700 {
24701 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24702 }
24703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24704 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24705 {
24706 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024707 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 -070024708 return createResultValue( result, view, "vk::Device::createBufferView" );
24709 }
24710#ifndef VULKAN_HPP_NO_SMART_HANDLE
24711 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24712 {
24713 BufferViewDeleter deleter( *this, allocator );
24714 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24715 }
24716#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24718
24719 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24720 {
24721 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24722 }
24723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24724 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24725 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024726 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024727 }
24728#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24729
24730 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24731 {
24732 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24733 }
24734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24735 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24736 {
24737 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024738 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 -070024739 return createResultValue( result, image, "vk::Device::createImage" );
24740 }
24741#ifndef VULKAN_HPP_NO_SMART_HANDLE
24742 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24743 {
24744 ImageDeleter deleter( *this, allocator );
24745 return UniqueImage( createImage( createInfo, allocator ), deleter );
24746 }
24747#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24749
24750 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24751 {
24752 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24753 }
24754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24755 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24756 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024757 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024758 }
24759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24760
24761 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24762 {
24763 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24764 }
24765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24766 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24767 {
24768 SubresourceLayout layout;
24769 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24770 return layout;
24771 }
24772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24773
24774 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24775 {
24776 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24777 }
24778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24779 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24780 {
24781 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024782 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 -070024783 return createResultValue( result, view, "vk::Device::createImageView" );
24784 }
24785#ifndef VULKAN_HPP_NO_SMART_HANDLE
24786 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24787 {
24788 ImageViewDeleter deleter( *this, allocator );
24789 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24790 }
24791#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24793
24794 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24795 {
24796 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24797 }
24798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24799 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24800 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024801 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024802 }
24803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24804
24805 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24806 {
24807 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24808 }
24809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24810 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24811 {
24812 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024813 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 -070024814 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24815 }
24816#ifndef VULKAN_HPP_NO_SMART_HANDLE
24817 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24818 {
24819 ShaderModuleDeleter deleter( *this, allocator );
24820 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24821 }
24822#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24824
24825 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24826 {
24827 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24828 }
24829#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24830 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24831 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024832 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024833 }
24834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24835
24836 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24837 {
24838 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24839 }
24840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24841 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24842 {
24843 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024844 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 -070024845 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24846 }
24847#ifndef VULKAN_HPP_NO_SMART_HANDLE
24848 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24849 {
24850 PipelineCacheDeleter deleter( *this, allocator );
24851 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24852 }
24853#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24855
24856 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24857 {
24858 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24859 }
24860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24861 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24862 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024863 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024864 }
24865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24866
24867 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24868 {
24869 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24870 }
24871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24872 template <typename Allocator>
24873 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24874 {
24875 std::vector<uint8_t,Allocator> data;
24876 size_t dataSize;
24877 Result result;
24878 do
24879 {
24880 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24881 if ( ( result == Result::eSuccess ) && dataSize )
24882 {
24883 data.resize( dataSize );
24884 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24885 }
24886 } while ( result == Result::eIncomplete );
24887 assert( dataSize <= data.size() );
24888 data.resize( dataSize );
24889 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24890 }
24891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24892
24893 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24894 {
24895 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24896 }
24897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24898 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24899 {
24900 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24901 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24902 }
24903#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24904
24905 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24906 {
24907 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 ) ) );
24908 }
24909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24910 template <typename Allocator>
24911 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24912 {
24913 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024914 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 -070024915 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24916 }
24917 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24918 {
24919 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024920 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 -070024921 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24922 }
24923#ifndef VULKAN_HPP_NO_SMART_HANDLE
24924 template <typename Allocator>
24925 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24926 {
24927 PipelineDeleter deleter( *this, allocator );
24928 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24929 std::vector<UniquePipeline> uniquePipelines;
24930 uniquePipelines.reserve( pipelines.size() );
24931 for ( auto pipeline : pipelines )
24932 {
24933 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24934 }
24935 return uniquePipelines;
24936 }
24937 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24938 {
24939 PipelineDeleter deleter( *this, allocator );
24940 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24941 }
24942#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24944
24945 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24946 {
24947 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 ) ) );
24948 }
24949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24950 template <typename Allocator>
24951 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24952 {
24953 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024954 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 -070024955 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24956 }
24957 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24958 {
24959 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024960 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 -070024961 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24962 }
24963#ifndef VULKAN_HPP_NO_SMART_HANDLE
24964 template <typename Allocator>
24965 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24966 {
24967 PipelineDeleter deleter( *this, allocator );
24968 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24969 std::vector<UniquePipeline> uniquePipelines;
24970 uniquePipelines.reserve( pipelines.size() );
24971 for ( auto pipeline : pipelines )
24972 {
24973 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24974 }
24975 return uniquePipelines;
24976 }
24977 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24978 {
24979 PipelineDeleter deleter( *this, allocator );
24980 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24981 }
24982#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24984
24985 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24986 {
24987 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24988 }
24989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24990 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24991 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024992 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024993 }
24994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24995
24996 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24997 {
24998 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24999 }
25000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25001 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25002 {
25003 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025004 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 -070025005 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
25006 }
25007#ifndef VULKAN_HPP_NO_SMART_HANDLE
25008 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25009 {
25010 PipelineLayoutDeleter deleter( *this, allocator );
25011 return UniquePipelineLayout( createPipelineLayout( 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::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
25017 {
25018 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25019 }
25020#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25021 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
25022 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025023 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), 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::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
25028 {
25029 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
25030 }
25031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25032 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25033 {
25034 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025035 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 -070025036 return createResultValue( result, sampler, "vk::Device::createSampler" );
25037 }
25038#ifndef VULKAN_HPP_NO_SMART_HANDLE
25039 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25040 {
25041 SamplerDeleter deleter( *this, allocator );
25042 return UniqueSampler( createSampler( 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::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
25048 {
25049 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25050 }
25051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25052 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
25053 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025054 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), 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 Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
25059 {
25060 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
25061 }
25062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25063 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25064 {
25065 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025066 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 -070025067 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
25068 }
25069#ifndef VULKAN_HPP_NO_SMART_HANDLE
25070 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25071 {
25072 DescriptorSetLayoutDeleter deleter( *this, allocator );
25073 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
25074 }
25075#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25077
25078 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
25079 {
25080 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25081 }
25082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25083 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
25084 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025085 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025086 }
25087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25088
25089 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
25090 {
25091 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
25092 }
25093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25094 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25095 {
25096 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025097 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 -070025098 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
25099 }
25100#ifndef VULKAN_HPP_NO_SMART_HANDLE
25101 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25102 {
25103 DescriptorPoolDeleter deleter( *this, allocator );
25104 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
25105 }
25106#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25108
25109 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
25110 {
25111 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25112 }
25113#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25114 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
25115 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025116 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025117 }
25118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25119
25120#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25121 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25122 {
25123 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25124 }
25125#else
25126 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25127 {
25128 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25129 return createResultValue( result, "vk::Device::resetDescriptorPool" );
25130 }
25131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25132
25133 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
25134 {
25135 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
25136 }
25137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25138 template <typename Allocator>
25139 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
25140 {
25141 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
25142 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
25143 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
25144 }
25145#ifndef VULKAN_HPP_NO_SMART_HANDLE
25146 template <typename Allocator>
25147 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
25148 {
25149 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
25150 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
25151 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
25152 uniqueDescriptorSets.reserve( descriptorSets.size() );
25153 for ( auto descriptorSet : descriptorSets )
25154 {
25155 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
25156 }
25157 return uniqueDescriptorSets;
25158 }
25159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25161
25162 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
25163 {
25164 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
25165 }
25166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25167 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
25168 {
25169 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
25170 return createResultValue( result, "vk::Device::freeDescriptorSets" );
25171 }
25172#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25173
25174 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
25175 {
25176 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
25177 }
25178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25179 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
25180 {
25181 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
25182 }
25183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25184
25185 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
25186 {
25187 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
25188 }
25189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25190 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25191 {
25192 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025193 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 -070025194 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
25195 }
25196#ifndef VULKAN_HPP_NO_SMART_HANDLE
25197 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25198 {
25199 FramebufferDeleter deleter( *this, allocator );
25200 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
25201 }
25202#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25203#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25204
25205 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
25206 {
25207 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25208 }
25209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25210 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
25211 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025212 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025213 }
25214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25215
25216 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
25217 {
25218 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
25219 }
25220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25221 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25222 {
25223 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025224 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 -070025225 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
25226 }
25227#ifndef VULKAN_HPP_NO_SMART_HANDLE
25228 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25229 {
25230 RenderPassDeleter deleter( *this, allocator );
25231 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
25232 }
25233#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25235
25236 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
25237 {
25238 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25239 }
25240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25241 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
25242 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025243 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025244 }
25245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25246
25247 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
25248 {
25249 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
25250 }
25251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25252 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
25253 {
25254 Extent2D granularity;
25255 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
25256 return granularity;
25257 }
25258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25259
25260 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
25261 {
25262 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
25263 }
25264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25265 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25266 {
25267 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025268 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 -070025269 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
25270 }
25271#ifndef VULKAN_HPP_NO_SMART_HANDLE
25272 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25273 {
25274 CommandPoolDeleter deleter( *this, allocator );
25275 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
25276 }
25277#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25279
25280 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
25281 {
25282 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25283 }
25284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25285 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
25286 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025287 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025288 }
25289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25290
25291#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25292 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25293 {
25294 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25295 }
25296#else
25297 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25298 {
25299 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25300 return createResultValue( result, "vk::Device::resetCommandPool" );
25301 }
25302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25303
25304 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
25305 {
25306 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
25307 }
25308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25309 template <typename Allocator>
25310 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
25311 {
25312 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
25313 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
25314 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
25315 }
25316#ifndef VULKAN_HPP_NO_SMART_HANDLE
25317 template <typename Allocator>
25318 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
25319 {
25320 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
25321 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
25322 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
25323 uniqueCommandBuffers.reserve( commandBuffers.size() );
25324 for ( auto commandBuffer : commandBuffers )
25325 {
25326 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
25327 }
25328 return uniqueCommandBuffers;
25329 }
25330#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25332
25333 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25334 {
25335 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25336 }
25337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25338 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
25339 {
25340 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25341 }
25342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25343
25344 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
25345 {
25346 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
25347 }
25348#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25349 template <typename Allocator>
25350 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25351 {
25352 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025353 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 -070025354 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
25355 }
25356 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25357 {
25358 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025359 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 -070025360 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
25361 }
25362#ifndef VULKAN_HPP_NO_SMART_HANDLE
25363 template <typename Allocator>
25364 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25365 {
25366 SwapchainKHRDeleter deleter( *this, allocator );
25367 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25368 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25369 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25370 for ( auto swapchainKHR : swapchainKHRs )
25371 {
25372 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25373 }
25374 return uniqueSwapchainKHRs;
25375 }
25376 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25377 {
25378 SwapchainKHRDeleter deleter( *this, allocator );
25379 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25380 }
25381#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25383
25384 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25385 {
25386 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25387 }
25388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25389 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25390 {
25391 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025392 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 -070025393 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25394 }
25395#ifndef VULKAN_HPP_NO_SMART_HANDLE
25396 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25397 {
25398 SwapchainKHRDeleter deleter( *this, allocator );
25399 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25400 }
25401#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25403
25404 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25405 {
25406 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25407 }
25408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25409 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25410 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025411 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025412 }
25413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25414
25415 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25416 {
25417 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25418 }
25419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25420 template <typename Allocator>
25421 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25422 {
25423 std::vector<Image,Allocator> swapchainImages;
25424 uint32_t swapchainImageCount;
25425 Result result;
25426 do
25427 {
25428 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25429 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25430 {
25431 swapchainImages.resize( swapchainImageCount );
25432 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25433 }
25434 } while ( result == Result::eIncomplete );
25435 assert( swapchainImageCount <= swapchainImages.size() );
25436 swapchainImages.resize( swapchainImageCount );
25437 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25438 }
25439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25440
25441 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25442 {
25443 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25444 }
25445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25446 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25447 {
25448 uint32_t imageIndex;
25449 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25450 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25451 }
25452#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25453
25454 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25455 {
25456 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25457 }
25458#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25459 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25460 {
25461 DebugMarkerObjectNameInfoEXT nameInfo;
25462 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25463 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25464 }
25465#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25466
25467 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25468 {
25469 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25470 }
25471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25472 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25473 {
25474 DebugMarkerObjectTagInfoEXT tagInfo;
25475 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25476 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25477 }
25478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25479
25480#ifdef VK_USE_PLATFORM_WIN32_KHR
25481 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25482 {
25483 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25484 }
25485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25486 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25487 {
25488 HANDLE handle;
25489 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25490 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25491 }
25492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25493#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25494
25495 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25496 {
25497 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25498 }
25499#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25500 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25501 {
25502 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025503 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 -070025504 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25505 }
25506#ifndef VULKAN_HPP_NO_SMART_HANDLE
25507 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25508 {
25509 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25510 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25511 }
25512#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25514
25515 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25516 {
25517 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25518 }
25519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25520 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25521 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025522 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025523 }
25524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25525
25526 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25527 {
25528 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25529 }
25530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25531 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25532 {
25533 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025534 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 -070025535 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25536 }
25537#ifndef VULKAN_HPP_NO_SMART_HANDLE
25538 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25539 {
25540 ObjectTableNVXDeleter deleter( *this, allocator );
25541 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25542 }
25543#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25545
25546 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25547 {
25548 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25549 }
25550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25551 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25552 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025553 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025554 }
25555#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25556
25557 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25558 {
25559 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25560 }
25561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25562 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25563 {
25564#ifdef VULKAN_HPP_NO_EXCEPTIONS
25565 assert( pObjectTableEntries.size() == objectIndices.size() );
25566#else
25567 if ( pObjectTableEntries.size() != objectIndices.size() )
25568 {
25569 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25570 }
25571#endif // VULKAN_HPP_NO_EXCEPTIONS
25572 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25573 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25574 }
25575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25576
25577 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25578 {
25579 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25580 }
25581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25582 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25583 {
25584#ifdef VULKAN_HPP_NO_EXCEPTIONS
25585 assert( objectEntryTypes.size() == objectIndices.size() );
25586#else
25587 if ( objectEntryTypes.size() != objectIndices.size() )
25588 {
25589 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25590 }
25591#endif // VULKAN_HPP_NO_EXCEPTIONS
25592 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25593 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25594 }
25595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25596
25597 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25598 {
25599 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25600 }
25601
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025602#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025603 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25604 {
25605 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25606 }
25607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25608 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25609 {
25610 HANDLE handle;
25611 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25612 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25613 }
25614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025615#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025616
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025617#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025618 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25619 {
25620 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25621 }
25622#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25623 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25624 {
25625 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25626 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25627 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25628 }
25629#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025630#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025631
25632 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25633 {
25634 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25635 }
25636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25637 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25638 {
25639 int fd;
25640 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25641 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25642 }
25643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25644
25645 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25646 {
25647 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25648 }
25649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25650 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25651 {
25652 MemoryFdPropertiesKHX memoryFdProperties;
25653 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25654 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25655 }
25656#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25657
25658#ifdef VK_USE_PLATFORM_WIN32_KHX
25659 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25660 {
25661 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25662 }
25663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25664 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25665 {
25666 HANDLE handle;
25667 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25668 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25669 }
25670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25671#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25672
25673#ifdef VK_USE_PLATFORM_WIN32_KHX
25674 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25675 {
25676 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25677 }
25678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25679 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25680 {
25681 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25682 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25683 }
25684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25685#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25686
25687 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25688 {
25689 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25690 }
25691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25692 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25693 {
25694 int fd;
25695 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25696 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25697 }
25698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25699
25700 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25701 {
25702 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25703 }
25704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25705 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25706 {
25707 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25708 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25709 }
25710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25711
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025712 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25713 {
25714 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25715 }
25716#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25717 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25718 {
25719 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25720 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25721 }
25722#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25723
25724 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25725 {
25726 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25727 }
25728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25729 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25730 {
25731 Fence fence;
25732 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25733 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25734 }
25735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25736
25737 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25738 {
25739 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 ) ) );
25740 }
25741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25742 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25743 {
25744 Fence fence;
25745 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 ) ) );
25746 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25747 }
25748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25749
25750 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25751 {
25752 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25753 }
25754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25755 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25756 {
25757 uint64_t counterValue;
25758 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25759 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25760 }
25761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025762
25763 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25764 {
25765 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25766 }
25767#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25768 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25769 {
25770 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25771 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25772 return peerMemoryFeatures;
25773 }
25774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25775
25776 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25777 {
25778 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25779 }
25780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25781 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25782 {
25783 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25784 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25785 }
25786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25787
25788 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25789 {
25790 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25791 }
25792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25793 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25794 {
25795 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25796 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25797 }
25798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25799
25800 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25801 {
25802 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25803 }
25804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25805 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25806 {
25807 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25808 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25809 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25810 }
25811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25812
25813 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25814 {
25815 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25816 }
25817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25818 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25819 {
25820 DeviceGroupPresentModeFlagsKHX modes;
25821 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25822 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25823 }
25824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25825
25826 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25827 {
25828 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25829 }
25830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25831 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25832 {
25833 uint32_t imageIndex;
25834 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25835 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25836 }
25837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25838
25839 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25840 {
25841 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25842 }
25843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25844 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25845 {
25846 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025847 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 -070025848 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25849 }
25850#ifndef VULKAN_HPP_NO_SMART_HANDLE
25851 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25852 {
25853 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25854 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25855 }
25856#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25857#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25858
25859 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25860 {
25861 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25862 }
25863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25864 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25865 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025866 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025867 }
25868#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25869
25870 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25871 {
25872 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25873 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025874
25875 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25876 {
25877 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25878 }
25879#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25880 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25881 {
25882#ifdef VULKAN_HPP_NO_EXCEPTIONS
25883 assert( swapchains.size() == metadata.size() );
25884#else
25885 if ( swapchains.size() != metadata.size() )
25886 {
25887 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25888 }
25889#endif // VULKAN_HPP_NO_EXCEPTIONS
25890 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25891 }
25892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25893
Mark Lobodzinski54385432017-05-15 10:27:52 -060025894#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25895 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
25896 {
25897 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
25898 }
25899#else
25900 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
25901 {
25902 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
25903 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
25904 }
25905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25906
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025907 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25908 {
25909 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25910 }
25911#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25912 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25913 {
25914 RefreshCycleDurationGOOGLE displayTimingProperties;
25915 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25916 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25917 }
25918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25919
25920 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25921 {
25922 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25923 }
25924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25925 template <typename Allocator>
25926 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25927 {
25928 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25929 uint32_t presentationTimingCount;
25930 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25931 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25932 {
25933 presentationTimings.resize( presentationTimingCount );
25934 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25935 }
25936 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25937 }
25938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25939
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025940#ifndef VULKAN_HPP_NO_SMART_HANDLE
25941 class DeviceDeleter;
25942 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25943#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25944
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025945 class PhysicalDevice
25946 {
25947 public:
25948 PhysicalDevice()
25949 : m_physicalDevice(VK_NULL_HANDLE)
25950 {}
25951
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025952 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025953 : m_physicalDevice(VK_NULL_HANDLE)
25954 {}
25955
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025956 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025957 : m_physicalDevice(physicalDevice)
25958 {}
25959
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025960#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025961 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25962 {
25963 m_physicalDevice = physicalDevice;
25964 return *this;
25965 }
25966#endif
25967
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025968 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025969 {
25970 m_physicalDevice = VK_NULL_HANDLE;
25971 return *this;
25972 }
25973
Lenny Komowebf33162016-08-26 14:10:08 -060025974 bool operator==(PhysicalDevice const &rhs) const
25975 {
25976 return m_physicalDevice == rhs.m_physicalDevice;
25977 }
25978
25979 bool operator!=(PhysicalDevice const &rhs) const
25980 {
25981 return m_physicalDevice != rhs.m_physicalDevice;
25982 }
25983
25984 bool operator<(PhysicalDevice const &rhs) const
25985 {
25986 return m_physicalDevice < rhs.m_physicalDevice;
25987 }
25988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025989 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025991 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25993
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025994 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025995#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025996 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25997 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25999
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026000 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026002 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026005 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026007 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026012 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26014
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026015 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026017 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26019
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026020 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026022 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26023#ifndef VULKAN_HPP_NO_SMART_HANDLE
26024 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26025#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026028 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026030 template <typename Allocator = std::allocator<LayerProperties>>
26031 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26033
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026034 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026036 template <typename Allocator = std::allocator<ExtensionProperties>>
26037 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026040 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 -060026041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026042 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
26043 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026044#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26045
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026046 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026047#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026048 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
26049 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26051
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026052 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026054 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
26055 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026058 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026060 template <typename Allocator = std::allocator<DisplayKHR>>
26061 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026064 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026066 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
26067 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26069
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026070 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026072 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26074
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026075 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026077 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26079
26080#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026081 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
26082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26083 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
26084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026085#endif /*VK_USE_PLATFORM_MIR_KHR*/
26086
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026087 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026088#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026089 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26091
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026092 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026094 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026097 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026099 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
26100 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026103 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026105 template <typename Allocator = std::allocator<PresentModeKHR>>
26106 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26108
26109#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026110 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
26111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26112 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
26113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026114#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26115
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026116#ifdef VK_USE_PLATFORM_WIN32_KHR
26117 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
26118#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26119
26120#ifdef VK_USE_PLATFORM_XLIB_KHR
26121 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026123 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
26124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26125#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26126
26127#ifdef VK_USE_PLATFORM_XCB_KHR
26128 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
26129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26130 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
26131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26132#endif /*VK_USE_PLATFORM_XCB_KHR*/
26133
26134 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
26135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26136 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
26137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26138
26139 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
26140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26141 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
26142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26143
26144 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
26145#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26146 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
26147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26148
26149 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
26150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26151 PhysicalDeviceProperties2KHR getProperties2KHR() const;
26152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26153
26154 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
26155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26156 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
26157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26158
26159 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
26160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26161 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
26162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26163
26164 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
26165#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26166 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
26167 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
26168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26169
26170 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
26171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26172 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
26173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26174
26175 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
26176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26177 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
26178 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026179#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26180
Mark Young0f183a82017-02-28 09:58:04 -070026181 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
26182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26183 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
26184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26185
26186 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
26187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26188 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
26189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26190
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026191#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026192 Result releaseDisplayEXT( DisplayKHR display ) const;
26193#else
26194 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26196
26197#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026198 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026200 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026202#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026204#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26205 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070026206#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026207 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070026208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026209#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070026210
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026211 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070026212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026213 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070026214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26215
Mark Young0f183a82017-02-28 09:58:04 -070026216 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
26217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26218 template <typename Allocator = std::allocator<Rect2D>>
26219 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
26220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26221
Mark Lobodzinski54385432017-05-15 10:27:52 -060026222 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
26223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26224 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
26225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26226
26227 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
26228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26229 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
26230 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
26231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26232
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026233 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026234 {
26235 return m_physicalDevice;
26236 }
26237
26238 explicit operator bool() const
26239 {
26240 return m_physicalDevice != VK_NULL_HANDLE;
26241 }
26242
26243 bool operator!() const
26244 {
26245 return m_physicalDevice == VK_NULL_HANDLE;
26246 }
26247
26248 private:
26249 VkPhysicalDevice m_physicalDevice;
26250 };
26251 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
26252
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026253#ifndef VULKAN_HPP_NO_SMART_HANDLE
26254 class DeviceDeleter
26255 {
26256 public:
26257 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
26258 : m_allocator( allocator )
26259 {}
26260
26261 void operator()( Device device )
26262 {
26263 device.destroy( m_allocator );
26264 }
26265
26266 private:
26267 Optional<const AllocationCallbacks> m_allocator;
26268 };
26269#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26270
26271 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
26272 {
26273 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
26274 }
26275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26276 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
26277 {
26278 PhysicalDeviceProperties properties;
26279 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
26280 return properties;
26281 }
26282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26283
26284 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
26285 {
26286 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
26287 }
26288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26289 template <typename Allocator>
26290 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
26291 {
26292 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
26293 uint32_t queueFamilyPropertyCount;
26294 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26295 queueFamilyProperties.resize( queueFamilyPropertyCount );
26296 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
26297 return queueFamilyProperties;
26298 }
26299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26300
26301 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
26302 {
26303 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
26304 }
26305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26306 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
26307 {
26308 PhysicalDeviceMemoryProperties memoryProperties;
26309 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
26310 return memoryProperties;
26311 }
26312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26313
26314 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
26315 {
26316 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
26317 }
26318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26319 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
26320 {
26321 PhysicalDeviceFeatures features;
26322 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
26323 return features;
26324 }
26325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26326
26327 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
26328 {
26329 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
26330 }
26331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26332 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
26333 {
26334 FormatProperties formatProperties;
26335 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
26336 return formatProperties;
26337 }
26338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26339
26340 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
26341 {
26342 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 ) ) );
26343 }
26344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26345 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
26346 {
26347 ImageFormatProperties imageFormatProperties;
26348 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 ) ) );
26349 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
26350 }
26351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26352
26353 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
26354 {
26355 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
26356 }
26357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26358 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26359 {
26360 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026361 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 -070026362 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
26363 }
26364#ifndef VULKAN_HPP_NO_SMART_HANDLE
26365 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26366 {
26367 DeviceDeleter deleter( allocator );
26368 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
26369 }
26370#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26372
26373 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
26374 {
26375 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
26376 }
26377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26378 template <typename Allocator>
26379 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
26380 {
26381 std::vector<LayerProperties,Allocator> properties;
26382 uint32_t propertyCount;
26383 Result result;
26384 do
26385 {
26386 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
26387 if ( ( result == Result::eSuccess ) && propertyCount )
26388 {
26389 properties.resize( propertyCount );
26390 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
26391 }
26392 } while ( result == Result::eIncomplete );
26393 assert( propertyCount <= properties.size() );
26394 properties.resize( propertyCount );
26395 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26396 }
26397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26398
26399 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26400 {
26401 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26402 }
26403#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26404 template <typename Allocator>
26405 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26406 {
26407 std::vector<ExtensionProperties,Allocator> properties;
26408 uint32_t propertyCount;
26409 Result result;
26410 do
26411 {
26412 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26413 if ( ( result == Result::eSuccess ) && propertyCount )
26414 {
26415 properties.resize( propertyCount );
26416 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26417 }
26418 } while ( result == Result::eIncomplete );
26419 assert( propertyCount <= properties.size() );
26420 properties.resize( propertyCount );
26421 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26422 }
26423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26424
26425 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26426 {
26427 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 ) );
26428 }
26429#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26430 template <typename Allocator>
26431 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26432 {
26433 std::vector<SparseImageFormatProperties,Allocator> properties;
26434 uint32_t propertyCount;
26435 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 );
26436 properties.resize( propertyCount );
26437 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() ) );
26438 return properties;
26439 }
26440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26441
26442 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26443 {
26444 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26445 }
26446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26447 template <typename Allocator>
26448 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26449 {
26450 std::vector<DisplayPropertiesKHR,Allocator> properties;
26451 uint32_t propertyCount;
26452 Result result;
26453 do
26454 {
26455 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26456 if ( ( result == Result::eSuccess ) && propertyCount )
26457 {
26458 properties.resize( propertyCount );
26459 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26460 }
26461 } while ( result == Result::eIncomplete );
26462 assert( propertyCount <= properties.size() );
26463 properties.resize( propertyCount );
26464 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26465 }
26466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26467
26468 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26469 {
26470 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26471 }
26472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26473 template <typename Allocator>
26474 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26475 {
26476 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26477 uint32_t propertyCount;
26478 Result result;
26479 do
26480 {
26481 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26482 if ( ( result == Result::eSuccess ) && propertyCount )
26483 {
26484 properties.resize( propertyCount );
26485 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26486 }
26487 } while ( result == Result::eIncomplete );
26488 assert( propertyCount <= properties.size() );
26489 properties.resize( propertyCount );
26490 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26491 }
26492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26493
26494 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26495 {
26496 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26497 }
26498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26499 template <typename Allocator>
26500 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26501 {
26502 std::vector<DisplayKHR,Allocator> displays;
26503 uint32_t displayCount;
26504 Result result;
26505 do
26506 {
26507 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26508 if ( ( result == Result::eSuccess ) && displayCount )
26509 {
26510 displays.resize( displayCount );
26511 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26512 }
26513 } while ( result == Result::eIncomplete );
26514 assert( displayCount <= displays.size() );
26515 displays.resize( displayCount );
26516 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26517 }
26518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26519
26520 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26521 {
26522 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26523 }
26524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26525 template <typename Allocator>
26526 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26527 {
26528 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26529 uint32_t propertyCount;
26530 Result result;
26531 do
26532 {
26533 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26534 if ( ( result == Result::eSuccess ) && propertyCount )
26535 {
26536 properties.resize( propertyCount );
26537 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26538 }
26539 } while ( result == Result::eIncomplete );
26540 assert( propertyCount <= properties.size() );
26541 properties.resize( propertyCount );
26542 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26543 }
26544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26545
26546 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26547 {
26548 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 ) ) );
26549 }
26550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26551 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26552 {
26553 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026554 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 -070026555 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26556 }
26557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26558
26559 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26560 {
26561 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26562 }
26563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26564 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26565 {
26566 DisplayPlaneCapabilitiesKHR capabilities;
26567 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26568 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26569 }
26570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26571
26572#ifdef VK_USE_PLATFORM_MIR_KHR
26573 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26574 {
26575 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26576 }
26577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26578 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26579 {
26580 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26581 }
26582#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26583#endif /*VK_USE_PLATFORM_MIR_KHR*/
26584
26585 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26586 {
26587 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26588 }
26589#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26590 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26591 {
26592 Bool32 supported;
26593 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26594 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26595 }
26596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26597
26598 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26599 {
26600 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26601 }
26602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26603 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26604 {
26605 SurfaceCapabilitiesKHR surfaceCapabilities;
26606 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26607 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26608 }
26609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26610
26611 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26612 {
26613 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26614 }
26615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26616 template <typename Allocator>
26617 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26618 {
26619 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26620 uint32_t surfaceFormatCount;
26621 Result result;
26622 do
26623 {
26624 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26625 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26626 {
26627 surfaceFormats.resize( surfaceFormatCount );
26628 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26629 }
26630 } while ( result == Result::eIncomplete );
26631 assert( surfaceFormatCount <= surfaceFormats.size() );
26632 surfaceFormats.resize( surfaceFormatCount );
26633 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26634 }
26635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26636
26637 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26638 {
26639 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26640 }
26641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26642 template <typename Allocator>
26643 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26644 {
26645 std::vector<PresentModeKHR,Allocator> presentModes;
26646 uint32_t presentModeCount;
26647 Result result;
26648 do
26649 {
26650 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26651 if ( ( result == Result::eSuccess ) && presentModeCount )
26652 {
26653 presentModes.resize( presentModeCount );
26654 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26655 }
26656 } while ( result == Result::eIncomplete );
26657 assert( presentModeCount <= presentModes.size() );
26658 presentModes.resize( presentModeCount );
26659 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26660 }
26661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26662
26663#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26664 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26665 {
26666 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26667 }
26668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26669 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26670 {
26671 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26672 }
26673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26674#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26675
26676#ifdef VK_USE_PLATFORM_WIN32_KHR
26677 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26678 {
26679 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26680 }
26681#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26682
26683#ifdef VK_USE_PLATFORM_XLIB_KHR
26684 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26685 {
26686 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26687 }
26688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26689 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26690 {
26691 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26692 }
26693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26694#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26695
26696#ifdef VK_USE_PLATFORM_XCB_KHR
26697 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26698 {
26699 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26700 }
26701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26702 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26703 {
26704 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26705 }
26706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26707#endif /*VK_USE_PLATFORM_XCB_KHR*/
26708
26709 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26710 {
26711 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 ) ) );
26712 }
26713#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26714 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26715 {
26716 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26717 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 ) ) );
26718 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26719 }
26720#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26721
26722 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26723 {
26724 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26725 }
26726#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26727 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26728 {
26729 DeviceGeneratedCommandsLimitsNVX limits;
26730 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26731 return limits;
26732 }
26733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26734
26735 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26736 {
26737 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26738 }
26739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26740 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26741 {
26742 PhysicalDeviceFeatures2KHR features;
26743 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26744 return features;
26745 }
26746#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26747
26748 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26749 {
26750 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26751 }
26752#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26753 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26754 {
26755 PhysicalDeviceProperties2KHR properties;
26756 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26757 return properties;
26758 }
26759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26760
26761 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26762 {
26763 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26764 }
26765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26766 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26767 {
26768 FormatProperties2KHR formatProperties;
26769 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26770 return formatProperties;
26771 }
26772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26773
26774 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26775 {
26776 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26777 }
26778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26779 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26780 {
26781 ImageFormatProperties2KHR imageFormatProperties;
26782 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26783 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26784 }
26785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26786
26787 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26788 {
26789 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26790 }
26791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26792 template <typename Allocator>
26793 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26794 {
26795 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26796 uint32_t queueFamilyPropertyCount;
26797 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26798 queueFamilyProperties.resize( queueFamilyPropertyCount );
26799 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26800 return queueFamilyProperties;
26801 }
26802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26803
26804 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26805 {
26806 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26807 }
26808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26809 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26810 {
26811 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26812 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26813 return memoryProperties;
26814 }
26815#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26816
26817 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26818 {
26819 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26820 }
26821#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26822 template <typename Allocator>
26823 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26824 {
26825 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26826 uint32_t propertyCount;
26827 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26828 properties.resize( propertyCount );
26829 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26830 return properties;
26831 }
26832#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26833
Mark Young0f183a82017-02-28 09:58:04 -070026834 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26835 {
26836 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26837 }
26838#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26839 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26840 {
26841 ExternalBufferPropertiesKHX externalBufferProperties;
26842 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26843 return externalBufferProperties;
26844 }
26845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26846
26847 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26848 {
26849 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26850 }
26851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26852 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26853 {
26854 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26855 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26856 return externalSemaphoreProperties;
26857 }
26858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26859
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026860#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26861 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26862 {
26863 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26864 }
26865#else
26866 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26867 {
26868 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26869 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26870 }
26871#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26872
26873#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26874 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26875 {
26876 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26877 }
26878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26879 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26880 {
26881 Display dpy;
26882 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26883 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26884 }
26885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26886#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26887
26888#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26889 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26890 {
26891 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26892 }
26893#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26894 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26895 {
26896 DisplayKHR display;
26897 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26898 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26899 }
26900#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26901#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26902
26903 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26904 {
26905 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26906 }
26907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26908 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26909 {
26910 SurfaceCapabilities2EXT surfaceCapabilities;
26911 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26912 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26913 }
26914#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026915
26916 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26917 {
26918 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26919 }
26920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26921 template <typename Allocator>
26922 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26923 {
26924 std::vector<Rect2D,Allocator> rects;
26925 uint32_t rectCount;
26926 Result result;
26927 do
26928 {
26929 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26930 if ( ( result == Result::eSuccess ) && rectCount )
26931 {
26932 rects.resize( rectCount );
26933 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26934 }
26935 } while ( result == Result::eIncomplete );
26936 assert( rectCount <= rects.size() );
26937 rects.resize( rectCount );
26938 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26939 }
26940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026941
Mark Lobodzinski54385432017-05-15 10:27:52 -060026942 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
26943 {
26944 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
26945 }
26946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26947#if 0 // LunarG 1.0.48 header update workaround
26948 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
26949 {
26950 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
26951 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
26952 }
26953#endif
26954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26955
26956 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
26957 {
26958 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
26959 }
26960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26961 template <typename Allocator>
26962 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
26963 {
26964 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
26965 uint32_t surfaceFormatCount;
26966 Result result;
26967 do
26968 {
26969 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
26970 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26971 {
26972 surfaceFormats.resize( surfaceFormatCount );
26973 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
26974 }
26975 } while ( result == Result::eIncomplete );
26976 assert( surfaceFormatCount <= surfaceFormats.size() );
26977 surfaceFormats.resize( surfaceFormatCount );
26978 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
26979 }
26980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26981
Mark Young0f183a82017-02-28 09:58:04 -070026982 struct CmdProcessCommandsInfoNVX
26983 {
26984 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 )
26985 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26986 , pNext( nullptr )
26987 , objectTable( objectTable_ )
26988 , indirectCommandsLayout( indirectCommandsLayout_ )
26989 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26990 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26991 , maxSequencesCount( maxSequencesCount_ )
26992 , targetCommandBuffer( targetCommandBuffer_ )
26993 , sequencesCountBuffer( sequencesCountBuffer_ )
26994 , sequencesCountOffset( sequencesCountOffset_ )
26995 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26996 , sequencesIndexOffset( sequencesIndexOffset_ )
26997 {
26998 }
26999
27000 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
27001 {
27002 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
27003 }
27004
27005 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
27006 {
27007 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
27008 return *this;
27009 }
27010
27011 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
27012 {
27013 pNext = pNext_;
27014 return *this;
27015 }
27016
27017 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
27018 {
27019 objectTable = objectTable_;
27020 return *this;
27021 }
27022
27023 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
27024 {
27025 indirectCommandsLayout = indirectCommandsLayout_;
27026 return *this;
27027 }
27028
27029 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
27030 {
27031 indirectCommandsTokenCount = indirectCommandsTokenCount_;
27032 return *this;
27033 }
27034
27035 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
27036 {
27037 pIndirectCommandsTokens = pIndirectCommandsTokens_;
27038 return *this;
27039 }
27040
27041 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
27042 {
27043 maxSequencesCount = maxSequencesCount_;
27044 return *this;
27045 }
27046
27047 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
27048 {
27049 targetCommandBuffer = targetCommandBuffer_;
27050 return *this;
27051 }
27052
27053 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
27054 {
27055 sequencesCountBuffer = sequencesCountBuffer_;
27056 return *this;
27057 }
27058
27059 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
27060 {
27061 sequencesCountOffset = sequencesCountOffset_;
27062 return *this;
27063 }
27064
27065 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
27066 {
27067 sequencesIndexBuffer = sequencesIndexBuffer_;
27068 return *this;
27069 }
27070
27071 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
27072 {
27073 sequencesIndexOffset = sequencesIndexOffset_;
27074 return *this;
27075 }
27076
27077 operator const VkCmdProcessCommandsInfoNVX&() const
27078 {
27079 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
27080 }
27081
27082 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
27083 {
27084 return ( sType == rhs.sType )
27085 && ( pNext == rhs.pNext )
27086 && ( objectTable == rhs.objectTable )
27087 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
27088 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
27089 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
27090 && ( maxSequencesCount == rhs.maxSequencesCount )
27091 && ( targetCommandBuffer == rhs.targetCommandBuffer )
27092 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
27093 && ( sequencesCountOffset == rhs.sequencesCountOffset )
27094 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
27095 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
27096 }
27097
27098 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
27099 {
27100 return !operator==( rhs );
27101 }
27102
27103 private:
27104 StructureType sType;
27105
27106 public:
27107 const void* pNext;
27108 ObjectTableNVX objectTable;
27109 IndirectCommandsLayoutNVX indirectCommandsLayout;
27110 uint32_t indirectCommandsTokenCount;
27111 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
27112 uint32_t maxSequencesCount;
27113 CommandBuffer targetCommandBuffer;
27114 Buffer sequencesCountBuffer;
27115 DeviceSize sequencesCountOffset;
27116 Buffer sequencesIndexBuffer;
27117 DeviceSize sequencesIndexOffset;
27118 };
27119 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
27120
27121 struct PhysicalDeviceGroupPropertiesKHX
27122 {
27123 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
27124 {
27125 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
27126 }
27127
27128 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27129 {
27130 return ( sType == rhs.sType )
27131 && ( pNext == rhs.pNext )
27132 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27133 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
27134 && ( subsetAllocation == rhs.subsetAllocation );
27135 }
27136
27137 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27138 {
27139 return !operator==( rhs );
27140 }
27141
27142 private:
27143 StructureType sType;
27144
27145 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060027146 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027147 uint32_t physicalDeviceCount;
27148 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
27149 Bool32 subsetAllocation;
27150 };
27151 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
27152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027153#ifndef VULKAN_HPP_NO_SMART_HANDLE
27154 class DebugReportCallbackEXTDeleter;
27155 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
27156 class SurfaceKHRDeleter;
27157 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
27158#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27159
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027160 class Instance
27161 {
27162 public:
27163 Instance()
27164 : m_instance(VK_NULL_HANDLE)
27165 {}
27166
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027167 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027168 : m_instance(VK_NULL_HANDLE)
27169 {}
27170
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027171 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027172 : m_instance(instance)
27173 {}
27174
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027175#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027176 Instance& operator=(VkInstance instance)
27177 {
27178 m_instance = instance;
27179 return *this;
27180 }
27181#endif
27182
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027183 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027184 {
27185 m_instance = VK_NULL_HANDLE;
27186 return *this;
27187 }
27188
Lenny Komowebf33162016-08-26 14:10:08 -060027189 bool operator==(Instance const &rhs) const
27190 {
27191 return m_instance == rhs.m_instance;
27192 }
27193
27194 bool operator!=(Instance const &rhs) const
27195 {
27196 return m_instance != rhs.m_instance;
27197 }
27198
27199 bool operator<(Instance const &rhs) const
27200 {
27201 return m_instance < rhs.m_instance;
27202 }
27203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027204 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027206 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27208
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027209 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027211 template <typename Allocator = std::allocator<PhysicalDevice>>
27212 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27214
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027215 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027217 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27219
27220#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027221 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027222#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027223 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27224#ifndef VULKAN_HPP_NO_SMART_HANDLE
27225 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27226#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027228#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027229
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027230 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027232 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27233#ifndef VULKAN_HPP_NO_SMART_HANDLE
27234 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27235#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27237
27238#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027241 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27242#ifndef VULKAN_HPP_NO_SMART_HANDLE
27243 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27244#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027246#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027247
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027248 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027249#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027250 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27252
Mark Young39389872017-01-19 21:10:49 -070027253#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027254 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27256 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27257#ifndef VULKAN_HPP_NO_SMART_HANDLE
27258 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27259#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070027261#endif /*VK_USE_PLATFORM_VI_NN*/
27262
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027263#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027264 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27265#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27266 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27267#ifndef VULKAN_HPP_NO_SMART_HANDLE
27268 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27269#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027271#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27272
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027273#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027274 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27276 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27277#ifndef VULKAN_HPP_NO_SMART_HANDLE
27278 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27279#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027281#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27282
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027283#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027284 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27286 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27287#ifndef VULKAN_HPP_NO_SMART_HANDLE
27288 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27289#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027291#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27292
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027293#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027294 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27296 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27297#ifndef VULKAN_HPP_NO_SMART_HANDLE
27298 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27299#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027301#endif /*VK_USE_PLATFORM_XCB_KHR*/
27302
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027303 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027305 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27306#ifndef VULKAN_HPP_NO_SMART_HANDLE
27307 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27308#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27310
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027311 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027313 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27315
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027316 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 -060027317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027318 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 -060027319#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27320
Mark Young0f183a82017-02-28 09:58:04 -070027321 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
27322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27323 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
27324 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
27325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27326
27327#ifdef VK_USE_PLATFORM_IOS_MVK
27328 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27330 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27331#ifndef VULKAN_HPP_NO_SMART_HANDLE
27332 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27333#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27335#endif /*VK_USE_PLATFORM_IOS_MVK*/
27336
27337#ifdef VK_USE_PLATFORM_MACOS_MVK
27338 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27340 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27341#ifndef VULKAN_HPP_NO_SMART_HANDLE
27342 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27343#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27345#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27346
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027347 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027348 {
27349 return m_instance;
27350 }
27351
27352 explicit operator bool() const
27353 {
27354 return m_instance != VK_NULL_HANDLE;
27355 }
27356
27357 bool operator!() const
27358 {
27359 return m_instance == VK_NULL_HANDLE;
27360 }
27361
27362 private:
27363 VkInstance m_instance;
27364 };
27365 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
27366
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027367#ifndef VULKAN_HPP_NO_SMART_HANDLE
27368 class DebugReportCallbackEXTDeleter
27369 {
27370 public:
27371 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27372 : m_instance( instance )
27373 , m_allocator( allocator )
27374 {}
27375
27376 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
27377 {
27378 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
27379 }
27380
27381 private:
27382 Instance m_instance;
27383 Optional<const AllocationCallbacks> m_allocator;
27384 };
27385
27386 class SurfaceKHRDeleter
27387 {
27388 public:
27389 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27390 : m_instance( instance )
27391 , m_allocator( allocator )
27392 {}
27393
27394 void operator()( SurfaceKHR surfaceKHR )
27395 {
27396 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
27397 }
27398
27399 private:
27400 Instance m_instance;
27401 Optional<const AllocationCallbacks> m_allocator;
27402 };
27403#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27404
27405 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
27406 {
27407 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27408 }
27409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27410 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
27411 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027412 vkDestroyInstance( m_instance, 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 Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
27417 {
27418 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
27419 }
27420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27421 template <typename Allocator>
27422 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
27423 {
27424 std::vector<PhysicalDevice,Allocator> physicalDevices;
27425 uint32_t physicalDeviceCount;
27426 Result result;
27427 do
27428 {
27429 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
27430 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
27431 {
27432 physicalDevices.resize( physicalDeviceCount );
27433 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27434 }
27435 } while ( result == Result::eIncomplete );
27436 assert( physicalDeviceCount <= physicalDevices.size() );
27437 physicalDevices.resize( physicalDeviceCount );
27438 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27439 }
27440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27441
27442 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27443 {
27444 return vkGetInstanceProcAddr( m_instance, pName );
27445 }
27446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27447 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27448 {
27449 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27450 }
27451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27452
27453#ifdef VK_USE_PLATFORM_ANDROID_KHR
27454 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27455 {
27456 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27457 }
27458#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27459 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27460 {
27461 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027462 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 -070027463 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27464 }
27465#ifndef VULKAN_HPP_NO_SMART_HANDLE
27466 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27467 {
27468 SurfaceKHRDeleter deleter( *this, allocator );
27469 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27470 }
27471#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27472#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27473#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27474
27475 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27476 {
27477 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27478 }
27479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27480 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27481 {
27482 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027483 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 -070027484 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27485 }
27486#ifndef VULKAN_HPP_NO_SMART_HANDLE
27487 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27488 {
27489 SurfaceKHRDeleter deleter( *this, allocator );
27490 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27491 }
27492#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27494
27495#ifdef VK_USE_PLATFORM_MIR_KHR
27496 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27497 {
27498 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27499 }
27500#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27501 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27502 {
27503 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027504 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 -070027505 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27506 }
27507#ifndef VULKAN_HPP_NO_SMART_HANDLE
27508 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27509 {
27510 SurfaceKHRDeleter deleter( *this, allocator );
27511 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27512 }
27513#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27515#endif /*VK_USE_PLATFORM_MIR_KHR*/
27516
27517 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27518 {
27519 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27520 }
27521#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27522 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27523 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027524 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027525 }
27526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27527
27528#ifdef VK_USE_PLATFORM_VI_NN
27529 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27530 {
27531 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27532 }
27533#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27534 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27535 {
27536 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027537 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 -070027538 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27539 }
27540#ifndef VULKAN_HPP_NO_SMART_HANDLE
27541 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27542 {
27543 SurfaceKHRDeleter deleter( *this, allocator );
27544 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27545 }
27546#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27548#endif /*VK_USE_PLATFORM_VI_NN*/
27549
27550#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27551 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27552 {
27553 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27554 }
27555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27556 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27557 {
27558 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027559 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 -070027560 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27561 }
27562#ifndef VULKAN_HPP_NO_SMART_HANDLE
27563 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27564 {
27565 SurfaceKHRDeleter deleter( *this, allocator );
27566 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27567 }
27568#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27570#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27571
27572#ifdef VK_USE_PLATFORM_WIN32_KHR
27573 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27574 {
27575 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27576 }
27577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27578 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27579 {
27580 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027581 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 -070027582 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27583 }
27584#ifndef VULKAN_HPP_NO_SMART_HANDLE
27585 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27586 {
27587 SurfaceKHRDeleter deleter( *this, allocator );
27588 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27589 }
27590#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27592#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27593
27594#ifdef VK_USE_PLATFORM_XLIB_KHR
27595 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27596 {
27597 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27598 }
27599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27600 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27601 {
27602 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027603 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 -070027604 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27605 }
27606#ifndef VULKAN_HPP_NO_SMART_HANDLE
27607 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27608 {
27609 SurfaceKHRDeleter deleter( *this, allocator );
27610 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27611 }
27612#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27614#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27615
27616#ifdef VK_USE_PLATFORM_XCB_KHR
27617 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27618 {
27619 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27620 }
27621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27622 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27623 {
27624 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027625 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 -070027626 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27627 }
27628#ifndef VULKAN_HPP_NO_SMART_HANDLE
27629 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27630 {
27631 SurfaceKHRDeleter deleter( *this, allocator );
27632 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27633 }
27634#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27636#endif /*VK_USE_PLATFORM_XCB_KHR*/
27637
27638 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27639 {
27640 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27641 }
27642#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27643 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27644 {
27645 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027646 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 -070027647 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27648 }
27649#ifndef VULKAN_HPP_NO_SMART_HANDLE
27650 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27651 {
27652 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27653 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27654 }
27655#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27656#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27657
27658 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27659 {
27660 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27661 }
27662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27663 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27664 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027665 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027666 }
27667#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27668
27669 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
27670 {
27671 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27672 }
27673#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27674 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
27675 {
27676#ifdef VULKAN_HPP_NO_EXCEPTIONS
27677 assert( layerPrefix.size() == message.size() );
27678#else
27679 if ( layerPrefix.size() != message.size() )
27680 {
27681 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27682 }
27683#endif // VULKAN_HPP_NO_EXCEPTIONS
27684 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27685 }
27686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027687
27688 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027689 {
Mark Young0f183a82017-02-28 09:58:04 -070027690 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27691 }
27692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27693 template <typename Allocator>
27694 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27695 {
27696 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27697 uint32_t physicalDeviceGroupCount;
27698 Result result;
27699 do
27700 {
27701 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27702 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27703 {
27704 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27705 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27706 }
27707 } while ( result == Result::eIncomplete );
27708 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27709 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27710 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27711 }
27712#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27713
27714#ifdef VK_USE_PLATFORM_IOS_MVK
27715 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27716 {
27717 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27718 }
27719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27720 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27721 {
27722 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027723 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 -070027724 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27725 }
27726#ifndef VULKAN_HPP_NO_SMART_HANDLE
27727 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27728 {
27729 SurfaceKHRDeleter deleter( *this, allocator );
27730 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27731 }
27732#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27734#endif /*VK_USE_PLATFORM_IOS_MVK*/
27735
27736#ifdef VK_USE_PLATFORM_MACOS_MVK
27737 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27738 {
27739 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27740 }
27741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27742 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27743 {
27744 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027745 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 -070027746 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27747 }
27748#ifndef VULKAN_HPP_NO_SMART_HANDLE
27749 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27750 {
27751 SurfaceKHRDeleter deleter( *this, allocator );
27752 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27753 }
27754#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27756#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027757
Mark Young0f183a82017-02-28 09:58:04 -070027758 struct DeviceGroupDeviceCreateInfoKHX
27759 {
27760 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27761 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027762 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027763 , physicalDeviceCount( physicalDeviceCount_ )
27764 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027765 {
27766 }
27767
Mark Young0f183a82017-02-28 09:58:04 -070027768 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027769 {
Mark Young0f183a82017-02-28 09:58:04 -070027770 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027771 }
27772
Mark Young0f183a82017-02-28 09:58:04 -070027773 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027774 {
Mark Young0f183a82017-02-28 09:58:04 -070027775 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027776 return *this;
27777 }
27778
Mark Young0f183a82017-02-28 09:58:04 -070027779 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027780 {
27781 pNext = pNext_;
27782 return *this;
27783 }
27784
Mark Young0f183a82017-02-28 09:58:04 -070027785 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027786 {
Mark Young0f183a82017-02-28 09:58:04 -070027787 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027788 return *this;
27789 }
27790
Mark Young0f183a82017-02-28 09:58:04 -070027791 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027792 {
Mark Young0f183a82017-02-28 09:58:04 -070027793 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027794 return *this;
27795 }
27796
Mark Young0f183a82017-02-28 09:58:04 -070027797 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027798 {
Mark Young0f183a82017-02-28 09:58:04 -070027799 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027800 }
27801
Mark Young0f183a82017-02-28 09:58:04 -070027802 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027803 {
27804 return ( sType == rhs.sType )
27805 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027806 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27807 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027808 }
27809
Mark Young0f183a82017-02-28 09:58:04 -070027810 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027811 {
27812 return !operator==( rhs );
27813 }
27814
27815 private:
27816 StructureType sType;
27817
27818 public:
27819 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027820 uint32_t physicalDeviceCount;
27821 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027822 };
Mark Young0f183a82017-02-28 09:58:04 -070027823 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027824
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027825#ifndef VULKAN_HPP_NO_SMART_HANDLE
27826 class InstanceDeleter;
27827 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27828#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27829
27830 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27832 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27833#ifndef VULKAN_HPP_NO_SMART_HANDLE
27834 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27835#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27837
27838#ifndef VULKAN_HPP_NO_SMART_HANDLE
27839 class InstanceDeleter
27840 {
27841 public:
27842 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27843 : m_allocator( allocator )
27844 {}
27845
27846 void operator()( Instance instance )
27847 {
27848 instance.destroy( m_allocator );
27849 }
27850
27851 private:
27852 Optional<const AllocationCallbacks> m_allocator;
27853 };
27854#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27855
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027856 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027857 {
27858 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27859 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027861 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027862 {
27863 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027864 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 -060027865 return createResultValue( result, instance, "vk::createInstance" );
27866 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027867#ifndef VULKAN_HPP_NO_SMART_HANDLE
27868 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27869 {
27870 InstanceDeleter deleter( allocator );
27871 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27872 }
27873#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27875
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027876
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027877 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027878 {
27879 return "(void)";
27880 }
27881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027882 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027883 {
27884 return "{}";
27885 }
27886
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027887 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027888 {
27889 return "(void)";
27890 }
27891
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027892 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027893 {
27894 return "{}";
27895 }
27896
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027897 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027898 {
27899 return "(void)";
27900 }
27901
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027902 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027903 {
27904 return "{}";
27905 }
27906
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027907 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027908 {
27909 return "(void)";
27910 }
27911
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027912 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027913 {
27914 return "{}";
27915 }
27916
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027917 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027918 {
27919 return "(void)";
27920 }
27921
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027922 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027923 {
27924 return "{}";
27925 }
27926
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027927 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027928 {
27929 return "(void)";
27930 }
27931
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027932 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027933 {
27934 return "{}";
27935 }
27936
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027937 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027938 {
27939 return "(void)";
27940 }
27941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027942 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027943 {
27944 return "{}";
27945 }
27946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027947 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027948 {
27949 return "(void)";
27950 }
27951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027952 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027953 {
27954 return "{}";
27955 }
27956
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027957 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027958 {
27959 return "(void)";
27960 }
27961
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027962 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027963 {
27964 return "{}";
27965 }
27966
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027967 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027968 {
27969 return "(void)";
27970 }
27971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027972 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027973 {
27974 return "{}";
27975 }
27976
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027977 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027978 {
27979 return "(void)";
27980 }
27981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027982 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027983 {
27984 return "{}";
27985 }
27986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027987 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027988 {
27989 return "(void)";
27990 }
27991
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027992 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027993 {
27994 return "{}";
27995 }
27996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027997 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027998 {
27999 return "(void)";
28000 }
28001
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028002 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028003 {
28004 return "{}";
28005 }
28006
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028007 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028008 {
28009 return "(void)";
28010 }
28011
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028012 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028013 {
28014 return "{}";
28015 }
28016
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028017 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028018 {
28019 return "(void)";
28020 }
28021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028022 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028023 {
28024 return "{}";
28025 }
28026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028027 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028028 {
28029 return "(void)";
28030 }
28031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028032 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028033 {
28034 return "{}";
28035 }
28036
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028037 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028038 {
28039 return "(void)";
28040 }
28041
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028042 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028043 {
28044 return "{}";
28045 }
28046
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028047 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028048 {
28049 return "(void)";
28050 }
28051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028052 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028053 {
28054 return "{}";
28055 }
28056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028057 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028058 {
28059 return "(void)";
28060 }
28061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028062 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028063 {
28064 return "{}";
28065 }
28066
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028067 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028068 {
28069 return "(void)";
28070 }
28071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028072 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028073 {
28074 return "{}";
28075 }
28076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028077 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028078 {
28079 return "(void)";
28080 }
28081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028082 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028083 {
28084 return "{}";
28085 }
28086
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028087 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028088 {
28089 return "(void)";
28090 }
28091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028092 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028093 {
28094 return "{}";
28095 }
28096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028097 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028098 {
28099 return "(void)";
28100 }
28101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028102 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028103 {
28104 return "{}";
28105 }
28106
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028107 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028108 {
28109 return "(void)";
28110 }
28111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028112 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028113 {
28114 return "{}";
28115 }
28116
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028117 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028118 {
28119 return "(void)";
28120 }
28121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028122 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028123 {
28124 return "{}";
28125 }
28126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028127 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028128 {
28129 return "(void)";
28130 }
28131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028132 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028133 {
28134 return "{}";
28135 }
28136
Mark Young0f183a82017-02-28 09:58:04 -070028137 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028138 {
28139 return "(void)";
28140 }
28141
Mark Young0f183a82017-02-28 09:58:04 -070028142 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028143 {
28144 return "{}";
28145 }
28146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028147 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028148 {
28149 return "(void)";
28150 }
28151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028152 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028153 {
28154 return "{}";
28155 }
28156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028157 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028158 {
28159 return "(void)";
28160 }
28161
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028162 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028163 {
28164 return "{}";
28165 }
28166
28167#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028168 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028169 {
28170 return "(void)";
28171 }
28172#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28173
28174#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028175 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028176 {
28177 return "{}";
28178 }
28179#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28180
28181#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028182 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028183 {
28184 return "(void)";
28185 }
28186#endif /*VK_USE_PLATFORM_MIR_KHR*/
28187
28188#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028189 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028190 {
28191 return "{}";
28192 }
28193#endif /*VK_USE_PLATFORM_MIR_KHR*/
28194
Mark Young39389872017-01-19 21:10:49 -070028195#ifdef VK_USE_PLATFORM_VI_NN
28196 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
28197 {
28198 return "(void)";
28199 }
28200#endif /*VK_USE_PLATFORM_VI_NN*/
28201
28202#ifdef VK_USE_PLATFORM_VI_NN
28203 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
28204 {
28205 return "{}";
28206 }
28207#endif /*VK_USE_PLATFORM_VI_NN*/
28208
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028209#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028210 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028211 {
28212 return "(void)";
28213 }
28214#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28215
28216#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028217 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028218 {
28219 return "{}";
28220 }
28221#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28222
28223#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028224 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028225 {
28226 return "(void)";
28227 }
28228#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28229
28230#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028231 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028232 {
28233 return "{}";
28234 }
28235#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28236
28237#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028238 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028239 {
28240 return "(void)";
28241 }
28242#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28243
28244#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028245 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028246 {
28247 return "{}";
28248 }
28249#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28250
28251#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028252 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028253 {
28254 return "(void)";
28255 }
28256#endif /*VK_USE_PLATFORM_XCB_KHR*/
28257
28258#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028259 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028260 {
28261 return "{}";
28262 }
28263#endif /*VK_USE_PLATFORM_XCB_KHR*/
28264
Mark Young0f183a82017-02-28 09:58:04 -070028265#ifdef VK_USE_PLATFORM_IOS_MVK
28266 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
28267 {
28268 return "(void)";
28269 }
28270#endif /*VK_USE_PLATFORM_IOS_MVK*/
28271
28272#ifdef VK_USE_PLATFORM_IOS_MVK
28273 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
28274 {
28275 return "{}";
28276 }
28277#endif /*VK_USE_PLATFORM_IOS_MVK*/
28278
28279#ifdef VK_USE_PLATFORM_MACOS_MVK
28280 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
28281 {
28282 return "(void)";
28283 }
28284#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28285
28286#ifdef VK_USE_PLATFORM_MACOS_MVK
28287 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
28288 {
28289 return "{}";
28290 }
28291#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28292
Mark Young39389872017-01-19 21:10:49 -070028293 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
28294 {
28295 return "(void)";
28296 }
28297
28298 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
28299 {
28300 return "{}";
28301 }
28302
Mark Young0f183a82017-02-28 09:58:04 -070028303 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
28304 {
28305 return "(void)";
28306 }
28307
28308 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
28309 {
28310 return "{}";
28311 }
28312
28313 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
28314 {
28315 return "(void)";
28316 }
28317
28318 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
28319 {
28320 return "{}";
28321 }
28322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028323 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028324 {
28325 switch (value)
28326 {
28327 case ImageLayout::eUndefined: return "Undefined";
28328 case ImageLayout::eGeneral: return "General";
28329 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
28330 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
28331 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
28332 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
28333 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
28334 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
28335 case ImageLayout::ePreinitialized: return "Preinitialized";
28336 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060028337 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028338 default: return "invalid";
28339 }
28340 }
28341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028342 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028343 {
28344 switch (value)
28345 {
28346 case AttachmentLoadOp::eLoad: return "Load";
28347 case AttachmentLoadOp::eClear: return "Clear";
28348 case AttachmentLoadOp::eDontCare: return "DontCare";
28349 default: return "invalid";
28350 }
28351 }
28352
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028353 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028354 {
28355 switch (value)
28356 {
28357 case AttachmentStoreOp::eStore: return "Store";
28358 case AttachmentStoreOp::eDontCare: return "DontCare";
28359 default: return "invalid";
28360 }
28361 }
28362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028363 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028364 {
28365 switch (value)
28366 {
28367 case ImageType::e1D: return "1D";
28368 case ImageType::e2D: return "2D";
28369 case ImageType::e3D: return "3D";
28370 default: return "invalid";
28371 }
28372 }
28373
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028374 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028375 {
28376 switch (value)
28377 {
28378 case ImageTiling::eOptimal: return "Optimal";
28379 case ImageTiling::eLinear: return "Linear";
28380 default: return "invalid";
28381 }
28382 }
28383
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028384 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028385 {
28386 switch (value)
28387 {
28388 case ImageViewType::e1D: return "1D";
28389 case ImageViewType::e2D: return "2D";
28390 case ImageViewType::e3D: return "3D";
28391 case ImageViewType::eCube: return "Cube";
28392 case ImageViewType::e1DArray: return "1DArray";
28393 case ImageViewType::e2DArray: return "2DArray";
28394 case ImageViewType::eCubeArray: return "CubeArray";
28395 default: return "invalid";
28396 }
28397 }
28398
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028399 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028400 {
28401 switch (value)
28402 {
28403 case CommandBufferLevel::ePrimary: return "Primary";
28404 case CommandBufferLevel::eSecondary: return "Secondary";
28405 default: return "invalid";
28406 }
28407 }
28408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028409 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028410 {
28411 switch (value)
28412 {
28413 case ComponentSwizzle::eIdentity: return "Identity";
28414 case ComponentSwizzle::eZero: return "Zero";
28415 case ComponentSwizzle::eOne: return "One";
28416 case ComponentSwizzle::eR: return "R";
28417 case ComponentSwizzle::eG: return "G";
28418 case ComponentSwizzle::eB: return "B";
28419 case ComponentSwizzle::eA: return "A";
28420 default: return "invalid";
28421 }
28422 }
28423
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028424 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028425 {
28426 switch (value)
28427 {
28428 case DescriptorType::eSampler: return "Sampler";
28429 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
28430 case DescriptorType::eSampledImage: return "SampledImage";
28431 case DescriptorType::eStorageImage: return "StorageImage";
28432 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28433 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28434 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28435 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28436 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28437 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28438 case DescriptorType::eInputAttachment: return "InputAttachment";
28439 default: return "invalid";
28440 }
28441 }
28442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028443 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028444 {
28445 switch (value)
28446 {
28447 case QueryType::eOcclusion: return "Occlusion";
28448 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28449 case QueryType::eTimestamp: return "Timestamp";
28450 default: return "invalid";
28451 }
28452 }
28453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028454 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028455 {
28456 switch (value)
28457 {
28458 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28459 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28460 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28461 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28462 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28463 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28464 default: return "invalid";
28465 }
28466 }
28467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028468 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028469 {
28470 switch (value)
28471 {
28472 case PipelineBindPoint::eGraphics: return "Graphics";
28473 case PipelineBindPoint::eCompute: return "Compute";
28474 default: return "invalid";
28475 }
28476 }
28477
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028478 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028479 {
28480 switch (value)
28481 {
28482 case PipelineCacheHeaderVersion::eOne: return "One";
28483 default: return "invalid";
28484 }
28485 }
28486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028487 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028488 {
28489 switch (value)
28490 {
28491 case PrimitiveTopology::ePointList: return "PointList";
28492 case PrimitiveTopology::eLineList: return "LineList";
28493 case PrimitiveTopology::eLineStrip: return "LineStrip";
28494 case PrimitiveTopology::eTriangleList: return "TriangleList";
28495 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28496 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28497 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28498 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28499 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28500 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28501 case PrimitiveTopology::ePatchList: return "PatchList";
28502 default: return "invalid";
28503 }
28504 }
28505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028506 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028507 {
28508 switch (value)
28509 {
28510 case SharingMode::eExclusive: return "Exclusive";
28511 case SharingMode::eConcurrent: return "Concurrent";
28512 default: return "invalid";
28513 }
28514 }
28515
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028516 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028517 {
28518 switch (value)
28519 {
28520 case IndexType::eUint16: return "Uint16";
28521 case IndexType::eUint32: return "Uint32";
28522 default: return "invalid";
28523 }
28524 }
28525
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028526 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028527 {
28528 switch (value)
28529 {
28530 case Filter::eNearest: return "Nearest";
28531 case Filter::eLinear: return "Linear";
28532 case Filter::eCubicIMG: return "CubicIMG";
28533 default: return "invalid";
28534 }
28535 }
28536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028537 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028538 {
28539 switch (value)
28540 {
28541 case SamplerMipmapMode::eNearest: return "Nearest";
28542 case SamplerMipmapMode::eLinear: return "Linear";
28543 default: return "invalid";
28544 }
28545 }
28546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028547 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028548 {
28549 switch (value)
28550 {
28551 case SamplerAddressMode::eRepeat: return "Repeat";
28552 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28553 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28554 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28555 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28556 default: return "invalid";
28557 }
28558 }
28559
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028560 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028561 {
28562 switch (value)
28563 {
28564 case CompareOp::eNever: return "Never";
28565 case CompareOp::eLess: return "Less";
28566 case CompareOp::eEqual: return "Equal";
28567 case CompareOp::eLessOrEqual: return "LessOrEqual";
28568 case CompareOp::eGreater: return "Greater";
28569 case CompareOp::eNotEqual: return "NotEqual";
28570 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28571 case CompareOp::eAlways: return "Always";
28572 default: return "invalid";
28573 }
28574 }
28575
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028576 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028577 {
28578 switch (value)
28579 {
28580 case PolygonMode::eFill: return "Fill";
28581 case PolygonMode::eLine: return "Line";
28582 case PolygonMode::ePoint: return "Point";
28583 default: return "invalid";
28584 }
28585 }
28586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028587 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028588 {
28589 switch (value)
28590 {
28591 case CullModeFlagBits::eNone: return "None";
28592 case CullModeFlagBits::eFront: return "Front";
28593 case CullModeFlagBits::eBack: return "Back";
28594 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28595 default: return "invalid";
28596 }
28597 }
28598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028599 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028600 {
28601 if (!value) return "{}";
28602 std::string result;
28603 if (value & CullModeFlagBits::eNone) result += "None | ";
28604 if (value & CullModeFlagBits::eFront) result += "Front | ";
28605 if (value & CullModeFlagBits::eBack) result += "Back | ";
28606 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28607 return "{" + result.substr(0, result.size() - 3) + "}";
28608 }
28609
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028610 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028611 {
28612 switch (value)
28613 {
28614 case FrontFace::eCounterClockwise: return "CounterClockwise";
28615 case FrontFace::eClockwise: return "Clockwise";
28616 default: return "invalid";
28617 }
28618 }
28619
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028620 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028621 {
28622 switch (value)
28623 {
28624 case BlendFactor::eZero: return "Zero";
28625 case BlendFactor::eOne: return "One";
28626 case BlendFactor::eSrcColor: return "SrcColor";
28627 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28628 case BlendFactor::eDstColor: return "DstColor";
28629 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28630 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28631 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28632 case BlendFactor::eDstAlpha: return "DstAlpha";
28633 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28634 case BlendFactor::eConstantColor: return "ConstantColor";
28635 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28636 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28637 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28638 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28639 case BlendFactor::eSrc1Color: return "Src1Color";
28640 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28641 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28642 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28643 default: return "invalid";
28644 }
28645 }
28646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028647 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028648 {
28649 switch (value)
28650 {
28651 case BlendOp::eAdd: return "Add";
28652 case BlendOp::eSubtract: return "Subtract";
28653 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28654 case BlendOp::eMin: return "Min";
28655 case BlendOp::eMax: return "Max";
28656 default: return "invalid";
28657 }
28658 }
28659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028660 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028661 {
28662 switch (value)
28663 {
28664 case StencilOp::eKeep: return "Keep";
28665 case StencilOp::eZero: return "Zero";
28666 case StencilOp::eReplace: return "Replace";
28667 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28668 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28669 case StencilOp::eInvert: return "Invert";
28670 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28671 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28672 default: return "invalid";
28673 }
28674 }
28675
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028676 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028677 {
28678 switch (value)
28679 {
28680 case LogicOp::eClear: return "Clear";
28681 case LogicOp::eAnd: return "And";
28682 case LogicOp::eAndReverse: return "AndReverse";
28683 case LogicOp::eCopy: return "Copy";
28684 case LogicOp::eAndInverted: return "AndInverted";
28685 case LogicOp::eNoOp: return "NoOp";
28686 case LogicOp::eXor: return "Xor";
28687 case LogicOp::eOr: return "Or";
28688 case LogicOp::eNor: return "Nor";
28689 case LogicOp::eEquivalent: return "Equivalent";
28690 case LogicOp::eInvert: return "Invert";
28691 case LogicOp::eOrReverse: return "OrReverse";
28692 case LogicOp::eCopyInverted: return "CopyInverted";
28693 case LogicOp::eOrInverted: return "OrInverted";
28694 case LogicOp::eNand: return "Nand";
28695 case LogicOp::eSet: return "Set";
28696 default: return "invalid";
28697 }
28698 }
28699
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028700 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028701 {
28702 switch (value)
28703 {
28704 case InternalAllocationType::eExecutable: return "Executable";
28705 default: return "invalid";
28706 }
28707 }
28708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028709 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028710 {
28711 switch (value)
28712 {
28713 case SystemAllocationScope::eCommand: return "Command";
28714 case SystemAllocationScope::eObject: return "Object";
28715 case SystemAllocationScope::eCache: return "Cache";
28716 case SystemAllocationScope::eDevice: return "Device";
28717 case SystemAllocationScope::eInstance: return "Instance";
28718 default: return "invalid";
28719 }
28720 }
28721
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028722 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028723 {
28724 switch (value)
28725 {
28726 case PhysicalDeviceType::eOther: return "Other";
28727 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28728 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28729 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28730 case PhysicalDeviceType::eCpu: return "Cpu";
28731 default: return "invalid";
28732 }
28733 }
28734
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028735 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028736 {
28737 switch (value)
28738 {
28739 case VertexInputRate::eVertex: return "Vertex";
28740 case VertexInputRate::eInstance: return "Instance";
28741 default: return "invalid";
28742 }
28743 }
28744
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028745 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028746 {
28747 switch (value)
28748 {
28749 case Format::eUndefined: return "Undefined";
28750 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28751 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28752 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28753 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28754 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28755 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28756 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28757 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28758 case Format::eR8Unorm: return "R8Unorm";
28759 case Format::eR8Snorm: return "R8Snorm";
28760 case Format::eR8Uscaled: return "R8Uscaled";
28761 case Format::eR8Sscaled: return "R8Sscaled";
28762 case Format::eR8Uint: return "R8Uint";
28763 case Format::eR8Sint: return "R8Sint";
28764 case Format::eR8Srgb: return "R8Srgb";
28765 case Format::eR8G8Unorm: return "R8G8Unorm";
28766 case Format::eR8G8Snorm: return "R8G8Snorm";
28767 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28768 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28769 case Format::eR8G8Uint: return "R8G8Uint";
28770 case Format::eR8G8Sint: return "R8G8Sint";
28771 case Format::eR8G8Srgb: return "R8G8Srgb";
28772 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28773 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28774 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28775 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28776 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28777 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28778 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28779 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28780 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28781 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28782 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28783 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28784 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28785 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28786 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28787 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28788 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28789 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28790 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28791 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28792 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28793 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28794 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28795 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28796 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28797 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28798 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28799 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28800 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28801 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28802 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28803 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28804 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28805 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28806 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28807 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28808 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28809 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28810 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28811 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28812 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28813 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28814 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28815 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28816 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28817 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28818 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28819 case Format::eR16Unorm: return "R16Unorm";
28820 case Format::eR16Snorm: return "R16Snorm";
28821 case Format::eR16Uscaled: return "R16Uscaled";
28822 case Format::eR16Sscaled: return "R16Sscaled";
28823 case Format::eR16Uint: return "R16Uint";
28824 case Format::eR16Sint: return "R16Sint";
28825 case Format::eR16Sfloat: return "R16Sfloat";
28826 case Format::eR16G16Unorm: return "R16G16Unorm";
28827 case Format::eR16G16Snorm: return "R16G16Snorm";
28828 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28829 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28830 case Format::eR16G16Uint: return "R16G16Uint";
28831 case Format::eR16G16Sint: return "R16G16Sint";
28832 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28833 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28834 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28835 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28836 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28837 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28838 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28839 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28840 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28841 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28842 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28843 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28844 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28845 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28846 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28847 case Format::eR32Uint: return "R32Uint";
28848 case Format::eR32Sint: return "R32Sint";
28849 case Format::eR32Sfloat: return "R32Sfloat";
28850 case Format::eR32G32Uint: return "R32G32Uint";
28851 case Format::eR32G32Sint: return "R32G32Sint";
28852 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28853 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28854 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28855 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28856 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28857 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28858 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28859 case Format::eR64Uint: return "R64Uint";
28860 case Format::eR64Sint: return "R64Sint";
28861 case Format::eR64Sfloat: return "R64Sfloat";
28862 case Format::eR64G64Uint: return "R64G64Uint";
28863 case Format::eR64G64Sint: return "R64G64Sint";
28864 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28865 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28866 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28867 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28868 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28869 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28870 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28871 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28872 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28873 case Format::eD16Unorm: return "D16Unorm";
28874 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28875 case Format::eD32Sfloat: return "D32Sfloat";
28876 case Format::eS8Uint: return "S8Uint";
28877 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28878 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28879 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28880 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28881 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28882 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28883 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28884 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28885 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28886 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28887 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28888 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28889 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28890 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28891 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28892 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28893 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28894 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28895 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28896 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28897 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28898 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28899 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28900 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28901 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28902 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28903 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28904 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28905 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28906 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28907 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28908 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28909 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28910 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28911 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28912 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28913 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28914 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28915 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28916 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28917 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28918 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28919 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28920 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28921 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28922 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28923 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28924 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28925 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28926 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28927 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28928 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28929 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28930 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28931 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28932 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28933 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028934 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28935 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28936 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28937 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28938 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28939 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28940 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28941 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028942 default: return "invalid";
28943 }
28944 }
28945
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028946 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028947 {
28948 switch (value)
28949 {
28950 case StructureType::eApplicationInfo: return "ApplicationInfo";
28951 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28952 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28953 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28954 case StructureType::eSubmitInfo: return "SubmitInfo";
28955 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28956 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28957 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28958 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28959 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28960 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28961 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28962 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28963 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28964 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28965 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28966 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28967 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28968 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28969 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28970 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28971 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28972 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28973 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28974 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28975 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28976 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28977 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28978 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28979 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28980 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28981 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28982 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28983 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28984 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28985 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28986 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28987 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28988 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28989 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28990 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28991 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28992 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28993 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28994 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28995 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28996 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28997 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28998 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28999 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
29000 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
29001 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
29002 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
29003 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
29004 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
29005 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
29006 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
29007 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
29008 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
29009 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
29010 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
29011 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
29012 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
29013 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
29014 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
29015 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
29016 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
29017 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070029018 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
29019 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
29020 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060029021 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
29022 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
29023 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
29024 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
29025 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070029026 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
29027 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
29028 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
29029 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
29030 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
29031 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
29032 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
29033 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
29034 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029035 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
29036 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
29037 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
29038 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
29039 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
29040 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
29041 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
29042 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
29043 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
29044 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
29045 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
29046 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
29047 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060029048 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070029049 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070029050 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
29051 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
29052 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
29053 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
29054 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
29055 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
29056 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Young0f183a82017-02-28 09:58:04 -070029057 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
29058 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
29059 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
29060 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
29061 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
29062 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
29063 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
29064 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
29065 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
29066 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
29067 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
29068 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
29069 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
29070 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
29071 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
29072 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
29073 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060029074 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070029075 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029076 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
29077 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
29078 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
29079 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
29080 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
29081 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070029082 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070029083 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
29084 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
29085 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
29086 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
29087 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029088 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070029089 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
29090 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
29091 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
29092 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029093 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060029094 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
29095 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
29096 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
29097 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029098 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
29099 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029100 default: return "invalid";
29101 }
29102 }
29103
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029104 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029105 {
29106 switch (value)
29107 {
29108 case SubpassContents::eInline: return "Inline";
29109 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
29110 default: return "invalid";
29111 }
29112 }
29113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029114 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029115 {
29116 switch (value)
29117 {
29118 case DynamicState::eViewport: return "Viewport";
29119 case DynamicState::eScissor: return "Scissor";
29120 case DynamicState::eLineWidth: return "LineWidth";
29121 case DynamicState::eDepthBias: return "DepthBias";
29122 case DynamicState::eBlendConstants: return "BlendConstants";
29123 case DynamicState::eDepthBounds: return "DepthBounds";
29124 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
29125 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
29126 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070029127 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
29128 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
29129 default: return "invalid";
29130 }
29131 }
29132
29133 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
29134 {
29135 switch (value)
29136 {
29137 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
29138 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029139 default: return "invalid";
29140 }
29141 }
29142
Mark Lobodzinski54385432017-05-15 10:27:52 -060029143 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
29144 {
29145 switch (value)
29146 {
29147 case ObjectType::eUnknown: return "Unknown";
29148 case ObjectType::eInstance: return "Instance";
29149 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
29150 case ObjectType::eDevice: return "Device";
29151 case ObjectType::eQueue: return "Queue";
29152 case ObjectType::eSemaphore: return "Semaphore";
29153 case ObjectType::eCommandBuffer: return "CommandBuffer";
29154 case ObjectType::eFence: return "Fence";
29155 case ObjectType::eDeviceMemory: return "DeviceMemory";
29156 case ObjectType::eBuffer: return "Buffer";
29157 case ObjectType::eImage: return "Image";
29158 case ObjectType::eEvent: return "Event";
29159 case ObjectType::eQueryPool: return "QueryPool";
29160 case ObjectType::eBufferView: return "BufferView";
29161 case ObjectType::eImageView: return "ImageView";
29162 case ObjectType::eShaderModule: return "ShaderModule";
29163 case ObjectType::ePipelineCache: return "PipelineCache";
29164 case ObjectType::ePipelineLayout: return "PipelineLayout";
29165 case ObjectType::eRenderPass: return "RenderPass";
29166 case ObjectType::ePipeline: return "Pipeline";
29167 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
29168 case ObjectType::eSampler: return "Sampler";
29169 case ObjectType::eDescriptorPool: return "DescriptorPool";
29170 case ObjectType::eDescriptorSet: return "DescriptorSet";
29171 case ObjectType::eFramebuffer: return "Framebuffer";
29172 case ObjectType::eCommandPool: return "CommandPool";
29173 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
29174 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
29175 case ObjectType::eDisplayKHR: return "DisplayKHR";
29176 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
29177 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
29178 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
29179 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
29180 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
29181 default: return "invalid";
29182 }
29183 }
29184
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029185 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029186 {
29187 switch (value)
29188 {
29189 case QueueFlagBits::eGraphics: return "Graphics";
29190 case QueueFlagBits::eCompute: return "Compute";
29191 case QueueFlagBits::eTransfer: return "Transfer";
29192 case QueueFlagBits::eSparseBinding: return "SparseBinding";
29193 default: return "invalid";
29194 }
29195 }
29196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029197 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029198 {
29199 if (!value) return "{}";
29200 std::string result;
29201 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
29202 if (value & QueueFlagBits::eCompute) result += "Compute | ";
29203 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
29204 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
29205 return "{" + result.substr(0, result.size() - 3) + "}";
29206 }
29207
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029208 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029209 {
29210 switch (value)
29211 {
29212 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
29213 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
29214 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
29215 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
29216 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
29217 default: return "invalid";
29218 }
29219 }
29220
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029221 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029222 {
29223 if (!value) return "{}";
29224 std::string result;
29225 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
29226 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
29227 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
29228 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
29229 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
29230 return "{" + result.substr(0, result.size() - 3) + "}";
29231 }
29232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029233 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029234 {
29235 switch (value)
29236 {
29237 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070029238 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029239 default: return "invalid";
29240 }
29241 }
29242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029243 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029244 {
29245 if (!value) return "{}";
29246 std::string result;
29247 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070029248 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029249 return "{" + result.substr(0, result.size() - 3) + "}";
29250 }
29251
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029252 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029253 {
29254 switch (value)
29255 {
29256 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
29257 case AccessFlagBits::eIndexRead: return "IndexRead";
29258 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
29259 case AccessFlagBits::eUniformRead: return "UniformRead";
29260 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
29261 case AccessFlagBits::eShaderRead: return "ShaderRead";
29262 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
29263 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
29264 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
29265 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
29266 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
29267 case AccessFlagBits::eTransferRead: return "TransferRead";
29268 case AccessFlagBits::eTransferWrite: return "TransferWrite";
29269 case AccessFlagBits::eHostRead: return "HostRead";
29270 case AccessFlagBits::eHostWrite: return "HostWrite";
29271 case AccessFlagBits::eMemoryRead: return "MemoryRead";
29272 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029273 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
29274 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029275 default: return "invalid";
29276 }
29277 }
29278
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029279 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029280 {
29281 if (!value) return "{}";
29282 std::string result;
29283 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
29284 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
29285 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
29286 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
29287 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
29288 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
29289 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
29290 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
29291 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
29292 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
29293 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
29294 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
29295 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
29296 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
29297 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
29298 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
29299 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029300 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
29301 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029302 return "{" + result.substr(0, result.size() - 3) + "}";
29303 }
29304
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029305 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029306 {
29307 switch (value)
29308 {
29309 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
29310 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
29311 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29312 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29313 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
29314 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
29315 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
29316 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
29317 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
29318 default: return "invalid";
29319 }
29320 }
29321
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029322 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029323 {
29324 if (!value) return "{}";
29325 std::string result;
29326 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29327 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
29328 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29329 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29330 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
29331 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
29332 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
29333 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29334 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
29335 return "{" + result.substr(0, result.size() - 3) + "}";
29336 }
29337
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029338 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029339 {
29340 switch (value)
29341 {
29342 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
29343 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
29344 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
29345 default: return "invalid";
29346 }
29347 }
29348
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029349 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029350 {
29351 if (!value) return "{}";
29352 std::string result;
29353 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29354 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29355 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29356 return "{" + result.substr(0, result.size() - 3) + "}";
29357 }
29358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029359 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029360 {
29361 switch (value)
29362 {
29363 case ShaderStageFlagBits::eVertex: return "Vertex";
29364 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
29365 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
29366 case ShaderStageFlagBits::eGeometry: return "Geometry";
29367 case ShaderStageFlagBits::eFragment: return "Fragment";
29368 case ShaderStageFlagBits::eCompute: return "Compute";
29369 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
29370 case ShaderStageFlagBits::eAll: return "All";
29371 default: return "invalid";
29372 }
29373 }
29374
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029375 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029376 {
29377 if (!value) return "{}";
29378 std::string result;
29379 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
29380 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
29381 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
29382 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
29383 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
29384 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
29385 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29386 if (value & ShaderStageFlagBits::eAll) result += "All | ";
29387 return "{" + result.substr(0, result.size() - 3) + "}";
29388 }
29389
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029390 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029391 {
29392 switch (value)
29393 {
29394 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
29395 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
29396 case ImageUsageFlagBits::eSampled: return "Sampled";
29397 case ImageUsageFlagBits::eStorage: return "Storage";
29398 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
29399 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29400 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
29401 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
29402 default: return "invalid";
29403 }
29404 }
29405
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029406 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029407 {
29408 if (!value) return "{}";
29409 std::string result;
29410 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29411 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
29412 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
29413 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
29414 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
29415 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29416 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
29417 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
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(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029422 {
29423 switch (value)
29424 {
29425 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
29426 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
29427 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
29428 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
29429 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070029430 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070029431 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029432 default: return "invalid";
29433 }
29434 }
29435
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029436 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029437 {
29438 if (!value) return "{}";
29439 std::string result;
29440 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29441 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29442 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29443 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
29444 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070029445 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070029446 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029447 return "{" + result.substr(0, result.size() - 3) + "}";
29448 }
29449
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029450 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029451 {
29452 switch (value)
29453 {
29454 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
29455 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
29456 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070029457 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
29458 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029459 default: return "invalid";
29460 }
29461 }
29462
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029463 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029464 {
29465 if (!value) return "{}";
29466 std::string result;
29467 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
29468 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
29469 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070029470 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
29471 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029472 return "{" + result.substr(0, result.size() - 3) + "}";
29473 }
29474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029475 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029476 {
29477 switch (value)
29478 {
29479 case ColorComponentFlagBits::eR: return "R";
29480 case ColorComponentFlagBits::eG: return "G";
29481 case ColorComponentFlagBits::eB: return "B";
29482 case ColorComponentFlagBits::eA: return "A";
29483 default: return "invalid";
29484 }
29485 }
29486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029487 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029488 {
29489 if (!value) return "{}";
29490 std::string result;
29491 if (value & ColorComponentFlagBits::eR) result += "R | ";
29492 if (value & ColorComponentFlagBits::eG) result += "G | ";
29493 if (value & ColorComponentFlagBits::eB) result += "B | ";
29494 if (value & ColorComponentFlagBits::eA) result += "A | ";
29495 return "{" + result.substr(0, result.size() - 3) + "}";
29496 }
29497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029498 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029499 {
29500 switch (value)
29501 {
29502 case FenceCreateFlagBits::eSignaled: return "Signaled";
29503 default: return "invalid";
29504 }
29505 }
29506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029507 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029508 {
29509 if (!value) return "{}";
29510 std::string result;
29511 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29512 return "{" + result.substr(0, result.size() - 3) + "}";
29513 }
29514
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029515 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029516 {
29517 switch (value)
29518 {
29519 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29520 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29521 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29522 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29523 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29524 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29525 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29526 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29527 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29528 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29529 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29530 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29531 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29532 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029533 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29534 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029535 default: return "invalid";
29536 }
29537 }
29538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029539 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029540 {
29541 if (!value) return "{}";
29542 std::string result;
29543 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29544 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29545 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29546 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29547 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29548 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29549 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29550 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29551 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29552 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29553 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29554 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29555 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29556 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029557 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29558 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029559 return "{" + result.substr(0, result.size() - 3) + "}";
29560 }
29561
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029562 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029563 {
29564 switch (value)
29565 {
29566 case QueryControlFlagBits::ePrecise: return "Precise";
29567 default: return "invalid";
29568 }
29569 }
29570
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029571 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029572 {
29573 if (!value) return "{}";
29574 std::string result;
29575 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29576 return "{" + result.substr(0, result.size() - 3) + "}";
29577 }
29578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029579 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029580 {
29581 switch (value)
29582 {
29583 case QueryResultFlagBits::e64: return "64";
29584 case QueryResultFlagBits::eWait: return "Wait";
29585 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29586 case QueryResultFlagBits::ePartial: return "Partial";
29587 default: return "invalid";
29588 }
29589 }
29590
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029591 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029592 {
29593 if (!value) return "{}";
29594 std::string result;
29595 if (value & QueryResultFlagBits::e64) result += "64 | ";
29596 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29597 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29598 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29599 return "{" + result.substr(0, result.size() - 3) + "}";
29600 }
29601
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029602 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029603 {
29604 switch (value)
29605 {
29606 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29607 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29608 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29609 default: return "invalid";
29610 }
29611 }
29612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029613 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029614 {
29615 if (!value) return "{}";
29616 std::string result;
29617 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29618 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29619 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29620 return "{" + result.substr(0, result.size() - 3) + "}";
29621 }
29622
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029623 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029624 {
29625 switch (value)
29626 {
29627 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29628 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29629 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29630 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29631 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29632 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29633 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29634 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29635 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29636 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29637 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29638 default: return "invalid";
29639 }
29640 }
29641
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029642 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029643 {
29644 if (!value) return "{}";
29645 std::string result;
29646 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29647 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29648 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29649 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29650 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29651 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29652 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29653 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29654 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29655 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29656 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29657 return "{" + result.substr(0, result.size() - 3) + "}";
29658 }
29659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029660 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029661 {
29662 switch (value)
29663 {
29664 case ImageAspectFlagBits::eColor: return "Color";
29665 case ImageAspectFlagBits::eDepth: return "Depth";
29666 case ImageAspectFlagBits::eStencil: return "Stencil";
29667 case ImageAspectFlagBits::eMetadata: return "Metadata";
29668 default: return "invalid";
29669 }
29670 }
29671
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029672 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029673 {
29674 if (!value) return "{}";
29675 std::string result;
29676 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29677 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29678 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29679 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29680 return "{" + result.substr(0, result.size() - 3) + "}";
29681 }
29682
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029683 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029684 {
29685 switch (value)
29686 {
29687 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29688 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29689 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29690 default: return "invalid";
29691 }
29692 }
29693
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029694 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029695 {
29696 if (!value) return "{}";
29697 std::string result;
29698 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29699 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29700 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29701 return "{" + result.substr(0, result.size() - 3) + "}";
29702 }
29703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029704 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029705 {
29706 switch (value)
29707 {
29708 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29709 default: return "invalid";
29710 }
29711 }
29712
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029713 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029714 {
29715 if (!value) return "{}";
29716 std::string result;
29717 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29718 return "{" + result.substr(0, result.size() - 3) + "}";
29719 }
29720
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029721 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029722 {
29723 switch (value)
29724 {
29725 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29726 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29727 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29728 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29729 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29730 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29731 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29732 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29733 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29734 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29735 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29736 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29737 case PipelineStageFlagBits::eTransfer: return "Transfer";
29738 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29739 case PipelineStageFlagBits::eHost: return "Host";
29740 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29741 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029742 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029743 default: return "invalid";
29744 }
29745 }
29746
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029747 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029748 {
29749 if (!value) return "{}";
29750 std::string result;
29751 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29752 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29753 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29754 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29755 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29756 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29757 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29758 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29759 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29760 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29761 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29762 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29763 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29764 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29765 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29766 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29767 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029768 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029769 return "{" + result.substr(0, result.size() - 3) + "}";
29770 }
29771
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029772 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029773 {
29774 switch (value)
29775 {
29776 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29777 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29778 default: return "invalid";
29779 }
29780 }
29781
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029782 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029783 {
29784 if (!value) return "{}";
29785 std::string result;
29786 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29787 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29788 return "{" + result.substr(0, result.size() - 3) + "}";
29789 }
29790
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029791 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029792 {
29793 switch (value)
29794 {
29795 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29796 default: return "invalid";
29797 }
29798 }
29799
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029800 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029801 {
29802 if (!value) return "{}";
29803 std::string result;
29804 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29805 return "{" + result.substr(0, result.size() - 3) + "}";
29806 }
29807
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029808 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029809 {
29810 switch (value)
29811 {
29812 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29813 default: return "invalid";
29814 }
29815 }
29816
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029817 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029818 {
29819 if (!value) return "{}";
29820 std::string result;
29821 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29822 return "{" + result.substr(0, result.size() - 3) + "}";
29823 }
29824
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029825 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029826 {
29827 switch (value)
29828 {
29829 case SampleCountFlagBits::e1: return "1";
29830 case SampleCountFlagBits::e2: return "2";
29831 case SampleCountFlagBits::e4: return "4";
29832 case SampleCountFlagBits::e8: return "8";
29833 case SampleCountFlagBits::e16: return "16";
29834 case SampleCountFlagBits::e32: return "32";
29835 case SampleCountFlagBits::e64: return "64";
29836 default: return "invalid";
29837 }
29838 }
29839
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029840 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029841 {
29842 if (!value) return "{}";
29843 std::string result;
29844 if (value & SampleCountFlagBits::e1) result += "1 | ";
29845 if (value & SampleCountFlagBits::e2) result += "2 | ";
29846 if (value & SampleCountFlagBits::e4) result += "4 | ";
29847 if (value & SampleCountFlagBits::e8) result += "8 | ";
29848 if (value & SampleCountFlagBits::e16) result += "16 | ";
29849 if (value & SampleCountFlagBits::e32) result += "32 | ";
29850 if (value & SampleCountFlagBits::e64) result += "64 | ";
29851 return "{" + result.substr(0, result.size() - 3) + "}";
29852 }
29853
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029854 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029855 {
29856 switch (value)
29857 {
29858 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29859 default: return "invalid";
29860 }
29861 }
29862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029863 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029864 {
29865 if (!value) return "{}";
29866 std::string result;
29867 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29868 return "{" + result.substr(0, result.size() - 3) + "}";
29869 }
29870
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029871 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029872 {
29873 switch (value)
29874 {
29875 case StencilFaceFlagBits::eFront: return "Front";
29876 case StencilFaceFlagBits::eBack: return "Back";
29877 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29878 default: return "invalid";
29879 }
29880 }
29881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029882 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029883 {
29884 if (!value) return "{}";
29885 std::string result;
29886 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29887 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29888 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29889 return "{" + result.substr(0, result.size() - 3) + "}";
29890 }
29891
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029892 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029893 {
29894 switch (value)
29895 {
29896 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29897 default: return "invalid";
29898 }
29899 }
29900
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029901 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029902 {
29903 if (!value) return "{}";
29904 std::string result;
29905 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29906 return "{" + result.substr(0, result.size() - 3) + "}";
29907 }
29908
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029909 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029910 {
29911 switch (value)
29912 {
29913 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029914 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29915 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029916 default: return "invalid";
29917 }
29918 }
29919
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029920 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029921 {
29922 if (!value) return "{}";
29923 std::string result;
29924 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029925 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29926 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029927 return "{" + result.substr(0, result.size() - 3) + "}";
29928 }
29929
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029930 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029931 {
29932 switch (value)
29933 {
29934 case PresentModeKHR::eImmediate: return "Immediate";
29935 case PresentModeKHR::eMailbox: return "Mailbox";
29936 case PresentModeKHR::eFifo: return "Fifo";
29937 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060029938 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
29939 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029940 default: return "invalid";
29941 }
29942 }
29943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029944 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029945 {
29946 switch (value)
29947 {
29948 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029949 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
29950 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
29951 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
29952 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
29953 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
29954 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
29955 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
29956 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
29957 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
29958 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
29959 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
29960 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
29961 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029962 default: return "invalid";
29963 }
29964 }
29965
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029966 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029967 {
29968 switch (value)
29969 {
29970 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29971 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29972 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29973 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29974 default: return "invalid";
29975 }
29976 }
29977
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029978 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029979 {
29980 if (!value) return "{}";
29981 std::string result;
29982 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29983 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29984 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29985 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29986 return "{" + result.substr(0, result.size() - 3) + "}";
29987 }
29988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029989 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029990 {
29991 switch (value)
29992 {
29993 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29994 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29995 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29996 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29997 default: return "invalid";
29998 }
29999 }
30000
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030001 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030002 {
30003 if (!value) return "{}";
30004 std::string result;
30005 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
30006 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
30007 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
30008 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
30009 return "{" + result.substr(0, result.size() - 3) + "}";
30010 }
30011
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030012 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030013 {
30014 switch (value)
30015 {
30016 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
30017 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
30018 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
30019 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
30020 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
30021 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
30022 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
30023 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
30024 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
30025 default: return "invalid";
30026 }
30027 }
30028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030029 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030030 {
30031 if (!value) return "{}";
30032 std::string result;
30033 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
30034 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
30035 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
30036 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
30037 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
30038 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
30039 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
30040 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
30041 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
30042 return "{" + result.substr(0, result.size() - 3) + "}";
30043 }
30044
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030045 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030046 {
30047 switch (value)
30048 {
30049 case DebugReportFlagBitsEXT::eInformation: return "Information";
30050 case DebugReportFlagBitsEXT::eWarning: return "Warning";
30051 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
30052 case DebugReportFlagBitsEXT::eError: return "Error";
30053 case DebugReportFlagBitsEXT::eDebug: return "Debug";
30054 default: return "invalid";
30055 }
30056 }
30057
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030058 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030059 {
30060 if (!value) return "{}";
30061 std::string result;
30062 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
30063 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
30064 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
30065 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
30066 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
30067 return "{" + result.substr(0, result.size() - 3) + "}";
30068 }
30069
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030070 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030071 {
30072 switch (value)
30073 {
30074 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
30075 case DebugReportObjectTypeEXT::eInstance: return "Instance";
30076 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
30077 case DebugReportObjectTypeEXT::eDevice: return "Device";
30078 case DebugReportObjectTypeEXT::eQueue: return "Queue";
30079 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
30080 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
30081 case DebugReportObjectTypeEXT::eFence: return "Fence";
30082 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
30083 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
30084 case DebugReportObjectTypeEXT::eImage: return "Image";
30085 case DebugReportObjectTypeEXT::eEvent: return "Event";
30086 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
30087 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
30088 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
30089 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
30090 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
30091 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
30092 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
30093 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
30094 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
30095 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
30096 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
30097 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
30098 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
30099 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
30100 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
30101 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
30102 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030103 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
30104 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
30105 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
30106 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030107 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030108 default: return "invalid";
30109 }
30110 }
30111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030112 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030113 {
30114 switch (value)
30115 {
30116 case DebugReportErrorEXT::eNone: return "None";
30117 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
30118 default: return "invalid";
30119 }
30120 }
30121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030122 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030123 {
30124 switch (value)
30125 {
30126 case RasterizationOrderAMD::eStrict: return "Strict";
30127 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
30128 default: return "invalid";
30129 }
30130 }
30131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030132 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030133 {
30134 switch (value)
30135 {
30136 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
30137 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30138 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
30139 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
30140 default: return "invalid";
30141 }
30142 }
30143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030144 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030145 {
30146 if (!value) return "{}";
30147 std::string result;
30148 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
30149 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30150 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
30151 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
30152 return "{" + result.substr(0, result.size() - 3) + "}";
30153 }
30154
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030155 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030156 {
30157 switch (value)
30158 {
30159 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
30160 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
30161 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
30162 default: return "invalid";
30163 }
30164 }
30165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030166 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030167 {
30168 if (!value) return "{}";
30169 std::string result;
30170 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
30171 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
30172 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
30173 return "{" + result.substr(0, result.size() - 3) + "}";
30174 }
30175
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030176 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060030177 {
30178 switch (value)
30179 {
30180 case ValidationCheckEXT::eAll: return "All";
30181 default: return "invalid";
30182 }
30183 }
30184
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030185 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
30186 {
30187 switch (value)
30188 {
30189 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
30190 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
30191 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
30192 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
30193 default: return "invalid";
30194 }
30195 }
30196
30197 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
30198 {
30199 if (!value) return "{}";
30200 std::string result;
30201 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
30202 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
30203 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
30204 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
30205 return "{" + result.substr(0, result.size() - 3) + "}";
30206 }
30207
30208 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
30209 {
30210 switch (value)
30211 {
30212 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
30213 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
30214 default: return "invalid";
30215 }
30216 }
30217
30218 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
30219 {
30220 if (!value) return "{}";
30221 std::string result;
30222 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
30223 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
30224 return "{" + result.substr(0, result.size() - 3) + "}";
30225 }
30226
30227 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
30228 {
30229 switch (value)
30230 {
30231 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
30232 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
30233 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
30234 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
30235 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
30236 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
30237 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
30238 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
30239 default: return "invalid";
30240 }
30241 }
30242
30243 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
30244 {
30245 switch (value)
30246 {
30247 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
30248 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
30249 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
30250 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
30251 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
30252 default: return "invalid";
30253 }
30254 }
30255
Mark Young0f183a82017-02-28 09:58:04 -070030256 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
30257 {
30258 switch (value)
30259 {
30260 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
30261 default: return "invalid";
30262 }
30263 }
30264
30265 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
30266 {
30267 if (!value) return "{}";
30268 std::string result;
30269 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
30270 return "{" + result.substr(0, result.size() - 3) + "}";
30271 }
30272
30273 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
30274 {
30275 switch (value)
30276 {
30277 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30278 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30279 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30280 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
30281 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
30282 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
30283 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
30284 default: return "invalid";
30285 }
30286 }
30287
30288 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
30289 {
30290 if (!value) return "{}";
30291 std::string result;
30292 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30293 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30294 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30295 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
30296 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
30297 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
30298 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
30299 return "{" + result.substr(0, result.size() - 3) + "}";
30300 }
30301
30302 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
30303 {
30304 switch (value)
30305 {
30306 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
30307 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
30308 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
30309 default: return "invalid";
30310 }
30311 }
30312
30313 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
30314 {
30315 if (!value) return "{}";
30316 std::string result;
30317 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
30318 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30319 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30320 return "{" + result.substr(0, result.size() - 3) + "}";
30321 }
30322
30323 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
30324 {
30325 switch (value)
30326 {
30327 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30328 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30329 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30330 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
30331 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
30332 default: return "invalid";
30333 }
30334 }
30335
30336 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
30337 {
30338 if (!value) return "{}";
30339 std::string result;
30340 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30341 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30342 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30343 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
30344 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
30345 return "{" + result.substr(0, result.size() - 3) + "}";
30346 }
30347
30348 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
30349 {
30350 switch (value)
30351 {
30352 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
30353 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
30354 default: return "invalid";
30355 }
30356 }
30357
30358 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
30359 {
30360 if (!value) return "{}";
30361 std::string result;
30362 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30363 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30364 return "{" + result.substr(0, result.size() - 3) + "}";
30365 }
30366
Mark Young39389872017-01-19 21:10:49 -070030367 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
30368 {
30369 switch (value)
30370 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060030371 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070030372 default: return "invalid";
30373 }
30374 }
30375
30376 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
30377 {
30378 if (!value) return "{}";
30379 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030380 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070030381 return "{" + result.substr(0, result.size() - 3) + "}";
30382 }
30383
30384 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
30385 {
30386 switch (value)
30387 {
30388 case DisplayPowerStateEXT::eOff: return "Off";
30389 case DisplayPowerStateEXT::eSuspend: return "Suspend";
30390 case DisplayPowerStateEXT::eOn: return "On";
30391 default: return "invalid";
30392 }
30393 }
30394
30395 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
30396 {
30397 switch (value)
30398 {
30399 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
30400 default: return "invalid";
30401 }
30402 }
30403
30404 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
30405 {
30406 switch (value)
30407 {
30408 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
30409 default: return "invalid";
30410 }
30411 }
30412
Mark Young0f183a82017-02-28 09:58:04 -070030413 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
30414 {
30415 switch (value)
30416 {
30417 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
30418 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
30419 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
30420 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
30421 default: return "invalid";
30422 }
30423 }
30424
30425 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
30426 {
30427 if (!value) return "{}";
30428 std::string result;
30429 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
30430 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
30431 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
30432 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
30433 return "{" + result.substr(0, result.size() - 3) + "}";
30434 }
30435
30436 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
30437 {
30438 switch (value)
30439 {
30440 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
30441 default: return "invalid";
30442 }
30443 }
30444
30445 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
30446 {
30447 if (!value) return "{}";
30448 std::string result;
30449 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
30450 return "{" + result.substr(0, result.size() - 3) + "}";
30451 }
30452
30453 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
30454 {
30455 switch (value)
30456 {
30457 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
30458 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
30459 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
30460 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
30461 default: return "invalid";
30462 }
30463 }
30464
30465 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
30466 {
30467 if (!value) return "{}";
30468 std::string result;
30469 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
30470 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
30471 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
30472 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
30473 return "{" + result.substr(0, result.size() - 3) + "}";
30474 }
30475
30476 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
30477 {
30478 switch (value)
30479 {
30480 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
30481 default: return "invalid";
30482 }
30483 }
30484
30485 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
30486 {
30487 if (!value) return "{}";
30488 std::string result;
30489 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
30490 return "{" + result.substr(0, result.size() - 3) + "}";
30491 }
30492
30493 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
30494 {
30495 switch (value)
30496 {
30497 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
30498 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
30499 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
30500 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
30501 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
30502 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
30503 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
30504 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
30505 default: return "invalid";
30506 }
30507 }
30508
30509 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30510 {
30511 switch (value)
30512 {
30513 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30514 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30515 default: return "invalid";
30516 }
30517 }
30518
30519 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30520 {
30521 switch (value)
30522 {
30523 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30524 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30525 default: return "invalid";
30526 }
30527 }
30528
30529 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30530 {
30531 if (!value) return "{}";
30532 std::string result;
30533 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30534 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30535 return "{" + result.substr(0, result.size() - 3) + "}";
30536 }
30537
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030538} // namespace vk
30539
30540#endif