blob: 102ee8c9b57463c529f01a2819ace77e993008f5 [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 Lobodzinskib9b6ad32017-03-27 14:40:17 -060045static_assert( VK_HEADER_VERSION == 45 , "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 Lobodzinski1d218cc2017-03-14 10:12:43 -06004791 struct XYColorEXT
4792 {
4793 XYColorEXT( float x_ = 0, float y_ = 0 )
4794 : x( x_ )
4795 , y( y_ )
4796 {
4797 }
4798
4799 XYColorEXT( VkXYColorEXT const & rhs )
4800 {
4801 memcpy( this, &rhs, sizeof(XYColorEXT) );
4802 }
4803
4804 XYColorEXT& operator=( VkXYColorEXT const & rhs )
4805 {
4806 memcpy( this, &rhs, sizeof(XYColorEXT) );
4807 return *this;
4808 }
4809
4810 XYColorEXT& setX( float x_ )
4811 {
4812 x = x_;
4813 return *this;
4814 }
4815
4816 XYColorEXT& setY( float y_ )
4817 {
4818 y = y_;
4819 return *this;
4820 }
4821
4822 operator const VkXYColorEXT&() const
4823 {
4824 return *reinterpret_cast<const VkXYColorEXT*>(this);
4825 }
4826
4827 bool operator==( XYColorEXT const& rhs ) const
4828 {
4829 return ( x == rhs.x )
4830 && ( y == rhs.y );
4831 }
4832
4833 bool operator!=( XYColorEXT const& rhs ) const
4834 {
4835 return !operator==( rhs );
4836 }
4837
4838 float x;
4839 float y;
4840 };
4841 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
4842
4843 struct RefreshCycleDurationGOOGLE
4844 {
4845 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
4846 : refreshDuration( refreshDuration_ )
4847 {
4848 }
4849
4850 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
4851 {
4852 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4853 }
4854
4855 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
4856 {
4857 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4858 return *this;
4859 }
4860
4861 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
4862 {
4863 refreshDuration = refreshDuration_;
4864 return *this;
4865 }
4866
4867 operator const VkRefreshCycleDurationGOOGLE&() const
4868 {
4869 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
4870 }
4871
4872 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
4873 {
4874 return ( refreshDuration == rhs.refreshDuration );
4875 }
4876
4877 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
4878 {
4879 return !operator==( rhs );
4880 }
4881
4882 uint64_t refreshDuration;
4883 };
4884 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
4885
4886 struct PastPresentationTimingGOOGLE
4887 {
4888 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
4889 : presentID( presentID_ )
4890 , desiredPresentTime( desiredPresentTime_ )
4891 , actualPresentTime( actualPresentTime_ )
4892 , earliestPresentTime( earliestPresentTime_ )
4893 , presentMargin( presentMargin_ )
4894 {
4895 }
4896
4897 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
4898 {
4899 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
4900 }
4901
4902 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
4903 {
4904 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
4905 return *this;
4906 }
4907
4908 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
4909 {
4910 presentID = presentID_;
4911 return *this;
4912 }
4913
4914 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
4915 {
4916 desiredPresentTime = desiredPresentTime_;
4917 return *this;
4918 }
4919
4920 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
4921 {
4922 actualPresentTime = actualPresentTime_;
4923 return *this;
4924 }
4925
4926 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
4927 {
4928 earliestPresentTime = earliestPresentTime_;
4929 return *this;
4930 }
4931
4932 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
4933 {
4934 presentMargin = presentMargin_;
4935 return *this;
4936 }
4937
4938 operator const VkPastPresentationTimingGOOGLE&() const
4939 {
4940 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
4941 }
4942
4943 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
4944 {
4945 return ( presentID == rhs.presentID )
4946 && ( desiredPresentTime == rhs.desiredPresentTime )
4947 && ( actualPresentTime == rhs.actualPresentTime )
4948 && ( earliestPresentTime == rhs.earliestPresentTime )
4949 && ( presentMargin == rhs.presentMargin );
4950 }
4951
4952 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
4953 {
4954 return !operator==( rhs );
4955 }
4956
4957 uint32_t presentID;
4958 uint64_t desiredPresentTime;
4959 uint64_t actualPresentTime;
4960 uint64_t earliestPresentTime;
4961 uint64_t presentMargin;
4962 };
4963 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
4964
4965 struct PresentTimeGOOGLE
4966 {
4967 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
4968 : presentID( presentID_ )
4969 , desiredPresentTime( desiredPresentTime_ )
4970 {
4971 }
4972
4973 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
4974 {
4975 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
4976 }
4977
4978 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
4979 {
4980 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
4981 return *this;
4982 }
4983
4984 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
4985 {
4986 presentID = presentID_;
4987 return *this;
4988 }
4989
4990 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
4991 {
4992 desiredPresentTime = desiredPresentTime_;
4993 return *this;
4994 }
4995
4996 operator const VkPresentTimeGOOGLE&() const
4997 {
4998 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
4999 }
5000
5001 bool operator==( PresentTimeGOOGLE const& rhs ) const
5002 {
5003 return ( presentID == rhs.presentID )
5004 && ( desiredPresentTime == rhs.desiredPresentTime );
5005 }
5006
5007 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5008 {
5009 return !operator==( rhs );
5010 }
5011
5012 uint32_t presentID;
5013 uint64_t desiredPresentTime;
5014 };
5015 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5016
Mark Young0f183a82017-02-28 09:58:04 -07005017 struct ViewportWScalingNV
5018 {
5019 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5020 : xcoeff( xcoeff_ )
5021 , ycoeff( ycoeff_ )
5022 {
5023 }
5024
5025 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5026 {
5027 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5028 }
5029
5030 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5031 {
5032 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5033 return *this;
5034 }
5035
5036 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5037 {
5038 xcoeff = xcoeff_;
5039 return *this;
5040 }
5041
5042 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5043 {
5044 ycoeff = ycoeff_;
5045 return *this;
5046 }
5047
5048 operator const VkViewportWScalingNV&() const
5049 {
5050 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5051 }
5052
5053 bool operator==( ViewportWScalingNV const& rhs ) const
5054 {
5055 return ( xcoeff == rhs.xcoeff )
5056 && ( ycoeff == rhs.ycoeff );
5057 }
5058
5059 bool operator!=( ViewportWScalingNV const& rhs ) const
5060 {
5061 return !operator==( rhs );
5062 }
5063
5064 float xcoeff;
5065 float ycoeff;
5066 };
5067 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 enum class ImageLayout
5070 {
5071 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5072 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5073 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5074 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5075 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5076 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5077 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5078 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5079 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
5080 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
5081 };
5082
5083 struct DescriptorImageInfo
5084 {
5085 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5086 : sampler( sampler_ )
5087 , imageView( imageView_ )
5088 , imageLayout( imageLayout_ )
5089 {
5090 }
5091
5092 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5093 {
5094 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5095 }
5096
5097 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5098 {
5099 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5100 return *this;
5101 }
5102
5103 DescriptorImageInfo& setSampler( Sampler sampler_ )
5104 {
5105 sampler = sampler_;
5106 return *this;
5107 }
5108
5109 DescriptorImageInfo& setImageView( ImageView imageView_ )
5110 {
5111 imageView = imageView_;
5112 return *this;
5113 }
5114
5115 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5116 {
5117 imageLayout = imageLayout_;
5118 return *this;
5119 }
5120
5121 operator const VkDescriptorImageInfo&() const
5122 {
5123 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5124 }
5125
5126 bool operator==( DescriptorImageInfo const& rhs ) const
5127 {
5128 return ( sampler == rhs.sampler )
5129 && ( imageView == rhs.imageView )
5130 && ( imageLayout == rhs.imageLayout );
5131 }
5132
5133 bool operator!=( DescriptorImageInfo const& rhs ) const
5134 {
5135 return !operator==( rhs );
5136 }
5137
5138 Sampler sampler;
5139 ImageView imageView;
5140 ImageLayout imageLayout;
5141 };
5142 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5143
5144 struct AttachmentReference
5145 {
5146 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5147 : attachment( attachment_ )
5148 , layout( layout_ )
5149 {
5150 }
5151
5152 AttachmentReference( VkAttachmentReference const & rhs )
5153 {
5154 memcpy( this, &rhs, sizeof(AttachmentReference) );
5155 }
5156
5157 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5158 {
5159 memcpy( this, &rhs, sizeof(AttachmentReference) );
5160 return *this;
5161 }
5162
5163 AttachmentReference& setAttachment( uint32_t attachment_ )
5164 {
5165 attachment = attachment_;
5166 return *this;
5167 }
5168
5169 AttachmentReference& setLayout( ImageLayout layout_ )
5170 {
5171 layout = layout_;
5172 return *this;
5173 }
5174
5175 operator const VkAttachmentReference&() const
5176 {
5177 return *reinterpret_cast<const VkAttachmentReference*>(this);
5178 }
5179
5180 bool operator==( AttachmentReference const& rhs ) const
5181 {
5182 return ( attachment == rhs.attachment )
5183 && ( layout == rhs.layout );
5184 }
5185
5186 bool operator!=( AttachmentReference const& rhs ) const
5187 {
5188 return !operator==( rhs );
5189 }
5190
5191 uint32_t attachment;
5192 ImageLayout layout;
5193 };
5194 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5195
5196 enum class AttachmentLoadOp
5197 {
5198 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5199 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5200 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5201 };
5202
5203 enum class AttachmentStoreOp
5204 {
5205 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5206 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5207 };
5208
5209 enum class ImageType
5210 {
5211 e1D = VK_IMAGE_TYPE_1D,
5212 e2D = VK_IMAGE_TYPE_2D,
5213 e3D = VK_IMAGE_TYPE_3D
5214 };
5215
5216 enum class ImageTiling
5217 {
5218 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5219 eLinear = VK_IMAGE_TILING_LINEAR
5220 };
5221
5222 enum class ImageViewType
5223 {
5224 e1D = VK_IMAGE_VIEW_TYPE_1D,
5225 e2D = VK_IMAGE_VIEW_TYPE_2D,
5226 e3D = VK_IMAGE_VIEW_TYPE_3D,
5227 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5228 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5229 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5230 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5231 };
5232
5233 enum class CommandBufferLevel
5234 {
5235 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5236 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5237 };
5238
5239 enum class ComponentSwizzle
5240 {
5241 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5242 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5243 eOne = VK_COMPONENT_SWIZZLE_ONE,
5244 eR = VK_COMPONENT_SWIZZLE_R,
5245 eG = VK_COMPONENT_SWIZZLE_G,
5246 eB = VK_COMPONENT_SWIZZLE_B,
5247 eA = VK_COMPONENT_SWIZZLE_A
5248 };
5249
5250 struct ComponentMapping
5251 {
5252 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5253 : r( r_ )
5254 , g( g_ )
5255 , b( b_ )
5256 , a( a_ )
5257 {
5258 }
5259
5260 ComponentMapping( VkComponentMapping const & rhs )
5261 {
5262 memcpy( this, &rhs, sizeof(ComponentMapping) );
5263 }
5264
5265 ComponentMapping& operator=( VkComponentMapping const & rhs )
5266 {
5267 memcpy( this, &rhs, sizeof(ComponentMapping) );
5268 return *this;
5269 }
5270
5271 ComponentMapping& setR( ComponentSwizzle r_ )
5272 {
5273 r = r_;
5274 return *this;
5275 }
5276
5277 ComponentMapping& setG( ComponentSwizzle g_ )
5278 {
5279 g = g_;
5280 return *this;
5281 }
5282
5283 ComponentMapping& setB( ComponentSwizzle b_ )
5284 {
5285 b = b_;
5286 return *this;
5287 }
5288
5289 ComponentMapping& setA( ComponentSwizzle a_ )
5290 {
5291 a = a_;
5292 return *this;
5293 }
5294
5295 operator const VkComponentMapping&() const
5296 {
5297 return *reinterpret_cast<const VkComponentMapping*>(this);
5298 }
5299
5300 bool operator==( ComponentMapping const& rhs ) const
5301 {
5302 return ( r == rhs.r )
5303 && ( g == rhs.g )
5304 && ( b == rhs.b )
5305 && ( a == rhs.a );
5306 }
5307
5308 bool operator!=( ComponentMapping const& rhs ) const
5309 {
5310 return !operator==( rhs );
5311 }
5312
5313 ComponentSwizzle r;
5314 ComponentSwizzle g;
5315 ComponentSwizzle b;
5316 ComponentSwizzle a;
5317 };
5318 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5319
5320 enum class DescriptorType
5321 {
5322 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5323 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5324 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5325 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5326 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5327 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5328 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5329 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5330 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5331 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5332 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5333 };
5334
5335 struct DescriptorPoolSize
5336 {
5337 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5338 : type( type_ )
5339 , descriptorCount( descriptorCount_ )
5340 {
5341 }
5342
5343 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5344 {
5345 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5346 }
5347
5348 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5349 {
5350 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5351 return *this;
5352 }
5353
5354 DescriptorPoolSize& setType( DescriptorType type_ )
5355 {
5356 type = type_;
5357 return *this;
5358 }
5359
5360 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5361 {
5362 descriptorCount = descriptorCount_;
5363 return *this;
5364 }
5365
5366 operator const VkDescriptorPoolSize&() const
5367 {
5368 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5369 }
5370
5371 bool operator==( DescriptorPoolSize const& rhs ) const
5372 {
5373 return ( type == rhs.type )
5374 && ( descriptorCount == rhs.descriptorCount );
5375 }
5376
5377 bool operator!=( DescriptorPoolSize const& rhs ) const
5378 {
5379 return !operator==( rhs );
5380 }
5381
5382 DescriptorType type;
5383 uint32_t descriptorCount;
5384 };
5385 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5386
Mark Young0f183a82017-02-28 09:58:04 -07005387 struct DescriptorUpdateTemplateEntryKHR
5388 {
5389 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 )
5390 : dstBinding( dstBinding_ )
5391 , dstArrayElement( dstArrayElement_ )
5392 , descriptorCount( descriptorCount_ )
5393 , descriptorType( descriptorType_ )
5394 , offset( offset_ )
5395 , stride( stride_ )
5396 {
5397 }
5398
5399 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5400 {
5401 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5402 }
5403
5404 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5405 {
5406 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5407 return *this;
5408 }
5409
5410 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5411 {
5412 dstBinding = dstBinding_;
5413 return *this;
5414 }
5415
5416 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5417 {
5418 dstArrayElement = dstArrayElement_;
5419 return *this;
5420 }
5421
5422 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5423 {
5424 descriptorCount = descriptorCount_;
5425 return *this;
5426 }
5427
5428 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5429 {
5430 descriptorType = descriptorType_;
5431 return *this;
5432 }
5433
5434 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5435 {
5436 offset = offset_;
5437 return *this;
5438 }
5439
5440 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5441 {
5442 stride = stride_;
5443 return *this;
5444 }
5445
5446 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5447 {
5448 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5449 }
5450
5451 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5452 {
5453 return ( dstBinding == rhs.dstBinding )
5454 && ( dstArrayElement == rhs.dstArrayElement )
5455 && ( descriptorCount == rhs.descriptorCount )
5456 && ( descriptorType == rhs.descriptorType )
5457 && ( offset == rhs.offset )
5458 && ( stride == rhs.stride );
5459 }
5460
5461 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5462 {
5463 return !operator==( rhs );
5464 }
5465
5466 uint32_t dstBinding;
5467 uint32_t dstArrayElement;
5468 uint32_t descriptorCount;
5469 DescriptorType descriptorType;
5470 size_t offset;
5471 size_t stride;
5472 };
5473 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5474
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005475 enum class QueryType
5476 {
5477 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5478 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5479 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5480 };
5481
5482 enum class BorderColor
5483 {
5484 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5485 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5486 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5487 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5488 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5489 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5490 };
5491
5492 enum class PipelineBindPoint
5493 {
5494 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5495 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5496 };
5497
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005498 enum class PipelineCacheHeaderVersion
5499 {
5500 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5501 };
5502
5503 enum class PrimitiveTopology
5504 {
5505 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5506 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5507 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5508 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5509 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5510 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5511 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5512 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5513 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5514 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5515 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5516 };
5517
5518 enum class SharingMode
5519 {
5520 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5521 eConcurrent = VK_SHARING_MODE_CONCURRENT
5522 };
5523
5524 enum class IndexType
5525 {
5526 eUint16 = VK_INDEX_TYPE_UINT16,
5527 eUint32 = VK_INDEX_TYPE_UINT32
5528 };
5529
5530 enum class Filter
5531 {
5532 eNearest = VK_FILTER_NEAREST,
5533 eLinear = VK_FILTER_LINEAR,
5534 eCubicIMG = VK_FILTER_CUBIC_IMG
5535 };
5536
5537 enum class SamplerMipmapMode
5538 {
5539 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5540 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5541 };
5542
5543 enum class SamplerAddressMode
5544 {
5545 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5546 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5547 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5548 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5549 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5550 };
5551
5552 enum class CompareOp
5553 {
5554 eNever = VK_COMPARE_OP_NEVER,
5555 eLess = VK_COMPARE_OP_LESS,
5556 eEqual = VK_COMPARE_OP_EQUAL,
5557 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5558 eGreater = VK_COMPARE_OP_GREATER,
5559 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5560 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5561 eAlways = VK_COMPARE_OP_ALWAYS
5562 };
5563
5564 enum class PolygonMode
5565 {
5566 eFill = VK_POLYGON_MODE_FILL,
5567 eLine = VK_POLYGON_MODE_LINE,
5568 ePoint = VK_POLYGON_MODE_POINT
5569 };
5570
5571 enum class CullModeFlagBits
5572 {
5573 eNone = VK_CULL_MODE_NONE,
5574 eFront = VK_CULL_MODE_FRONT_BIT,
5575 eBack = VK_CULL_MODE_BACK_BIT,
5576 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5577 };
5578
5579 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5580
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005581 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005582 {
5583 return CullModeFlags( bit0 ) | bit1;
5584 }
5585
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005586 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5587 {
5588 return ~( CullModeFlags( bits ) );
5589 }
5590
5591 template <> struct FlagTraits<CullModeFlagBits>
5592 {
5593 enum
5594 {
5595 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5596 };
5597 };
5598
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005599 enum class FrontFace
5600 {
5601 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5602 eClockwise = VK_FRONT_FACE_CLOCKWISE
5603 };
5604
5605 enum class BlendFactor
5606 {
5607 eZero = VK_BLEND_FACTOR_ZERO,
5608 eOne = VK_BLEND_FACTOR_ONE,
5609 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5610 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5611 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5612 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5613 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5614 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5615 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5616 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5617 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5618 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5619 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5620 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5621 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5622 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5623 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5624 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5625 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5626 };
5627
5628 enum class BlendOp
5629 {
5630 eAdd = VK_BLEND_OP_ADD,
5631 eSubtract = VK_BLEND_OP_SUBTRACT,
5632 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5633 eMin = VK_BLEND_OP_MIN,
5634 eMax = VK_BLEND_OP_MAX
5635 };
5636
5637 enum class StencilOp
5638 {
5639 eKeep = VK_STENCIL_OP_KEEP,
5640 eZero = VK_STENCIL_OP_ZERO,
5641 eReplace = VK_STENCIL_OP_REPLACE,
5642 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5643 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5644 eInvert = VK_STENCIL_OP_INVERT,
5645 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5646 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5647 };
5648
5649 struct StencilOpState
5650 {
5651 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 )
5652 : failOp( failOp_ )
5653 , passOp( passOp_ )
5654 , depthFailOp( depthFailOp_ )
5655 , compareOp( compareOp_ )
5656 , compareMask( compareMask_ )
5657 , writeMask( writeMask_ )
5658 , reference( reference_ )
5659 {
5660 }
5661
5662 StencilOpState( VkStencilOpState const & rhs )
5663 {
5664 memcpy( this, &rhs, sizeof(StencilOpState) );
5665 }
5666
5667 StencilOpState& operator=( VkStencilOpState const & rhs )
5668 {
5669 memcpy( this, &rhs, sizeof(StencilOpState) );
5670 return *this;
5671 }
5672
5673 StencilOpState& setFailOp( StencilOp failOp_ )
5674 {
5675 failOp = failOp_;
5676 return *this;
5677 }
5678
5679 StencilOpState& setPassOp( StencilOp passOp_ )
5680 {
5681 passOp = passOp_;
5682 return *this;
5683 }
5684
5685 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5686 {
5687 depthFailOp = depthFailOp_;
5688 return *this;
5689 }
5690
5691 StencilOpState& setCompareOp( CompareOp compareOp_ )
5692 {
5693 compareOp = compareOp_;
5694 return *this;
5695 }
5696
5697 StencilOpState& setCompareMask( uint32_t compareMask_ )
5698 {
5699 compareMask = compareMask_;
5700 return *this;
5701 }
5702
5703 StencilOpState& setWriteMask( uint32_t writeMask_ )
5704 {
5705 writeMask = writeMask_;
5706 return *this;
5707 }
5708
5709 StencilOpState& setReference( uint32_t reference_ )
5710 {
5711 reference = reference_;
5712 return *this;
5713 }
5714
5715 operator const VkStencilOpState&() const
5716 {
5717 return *reinterpret_cast<const VkStencilOpState*>(this);
5718 }
5719
5720 bool operator==( StencilOpState const& rhs ) const
5721 {
5722 return ( failOp == rhs.failOp )
5723 && ( passOp == rhs.passOp )
5724 && ( depthFailOp == rhs.depthFailOp )
5725 && ( compareOp == rhs.compareOp )
5726 && ( compareMask == rhs.compareMask )
5727 && ( writeMask == rhs.writeMask )
5728 && ( reference == rhs.reference );
5729 }
5730
5731 bool operator!=( StencilOpState const& rhs ) const
5732 {
5733 return !operator==( rhs );
5734 }
5735
5736 StencilOp failOp;
5737 StencilOp passOp;
5738 StencilOp depthFailOp;
5739 CompareOp compareOp;
5740 uint32_t compareMask;
5741 uint32_t writeMask;
5742 uint32_t reference;
5743 };
5744 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5745
5746 enum class LogicOp
5747 {
5748 eClear = VK_LOGIC_OP_CLEAR,
5749 eAnd = VK_LOGIC_OP_AND,
5750 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5751 eCopy = VK_LOGIC_OP_COPY,
5752 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5753 eNoOp = VK_LOGIC_OP_NO_OP,
5754 eXor = VK_LOGIC_OP_XOR,
5755 eOr = VK_LOGIC_OP_OR,
5756 eNor = VK_LOGIC_OP_NOR,
5757 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5758 eInvert = VK_LOGIC_OP_INVERT,
5759 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5760 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5761 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5762 eNand = VK_LOGIC_OP_NAND,
5763 eSet = VK_LOGIC_OP_SET
5764 };
5765
5766 enum class InternalAllocationType
5767 {
5768 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5769 };
5770
5771 enum class SystemAllocationScope
5772 {
5773 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5774 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5775 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5776 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5777 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5778 };
5779
5780 enum class PhysicalDeviceType
5781 {
5782 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5783 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5784 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5785 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5786 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5787 };
5788
5789 enum class VertexInputRate
5790 {
5791 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5792 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5793 };
5794
5795 struct VertexInputBindingDescription
5796 {
5797 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5798 : binding( binding_ )
5799 , stride( stride_ )
5800 , inputRate( inputRate_ )
5801 {
5802 }
5803
5804 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
5805 {
5806 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5807 }
5808
5809 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
5810 {
5811 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5812 return *this;
5813 }
5814
5815 VertexInputBindingDescription& setBinding( uint32_t binding_ )
5816 {
5817 binding = binding_;
5818 return *this;
5819 }
5820
5821 VertexInputBindingDescription& setStride( uint32_t stride_ )
5822 {
5823 stride = stride_;
5824 return *this;
5825 }
5826
5827 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
5828 {
5829 inputRate = inputRate_;
5830 return *this;
5831 }
5832
5833 operator const VkVertexInputBindingDescription&() const
5834 {
5835 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
5836 }
5837
5838 bool operator==( VertexInputBindingDescription const& rhs ) const
5839 {
5840 return ( binding == rhs.binding )
5841 && ( stride == rhs.stride )
5842 && ( inputRate == rhs.inputRate );
5843 }
5844
5845 bool operator!=( VertexInputBindingDescription const& rhs ) const
5846 {
5847 return !operator==( rhs );
5848 }
5849
5850 uint32_t binding;
5851 uint32_t stride;
5852 VertexInputRate inputRate;
5853 };
5854 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
5855
5856 enum class Format
5857 {
5858 eUndefined = VK_FORMAT_UNDEFINED,
5859 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
5860 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
5861 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
5862 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
5863 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
5864 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
5865 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
5866 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
5867 eR8Unorm = VK_FORMAT_R8_UNORM,
5868 eR8Snorm = VK_FORMAT_R8_SNORM,
5869 eR8Uscaled = VK_FORMAT_R8_USCALED,
5870 eR8Sscaled = VK_FORMAT_R8_SSCALED,
5871 eR8Uint = VK_FORMAT_R8_UINT,
5872 eR8Sint = VK_FORMAT_R8_SINT,
5873 eR8Srgb = VK_FORMAT_R8_SRGB,
5874 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
5875 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
5876 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
5877 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
5878 eR8G8Uint = VK_FORMAT_R8G8_UINT,
5879 eR8G8Sint = VK_FORMAT_R8G8_SINT,
5880 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
5881 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
5882 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
5883 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
5884 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
5885 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
5886 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
5887 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
5888 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
5889 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
5890 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
5891 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
5892 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
5893 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
5894 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
5895 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
5896 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
5897 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
5898 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
5899 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
5900 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
5901 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
5902 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
5903 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
5904 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
5905 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
5906 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
5907 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
5908 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
5909 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
5910 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
5911 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
5912 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
5913 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
5914 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
5915 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
5916 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
5917 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
5918 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
5919 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
5920 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
5921 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
5922 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
5923 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
5924 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
5925 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
5926 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
5927 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
5928 eR16Unorm = VK_FORMAT_R16_UNORM,
5929 eR16Snorm = VK_FORMAT_R16_SNORM,
5930 eR16Uscaled = VK_FORMAT_R16_USCALED,
5931 eR16Sscaled = VK_FORMAT_R16_SSCALED,
5932 eR16Uint = VK_FORMAT_R16_UINT,
5933 eR16Sint = VK_FORMAT_R16_SINT,
5934 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
5935 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
5936 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
5937 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
5938 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
5939 eR16G16Uint = VK_FORMAT_R16G16_UINT,
5940 eR16G16Sint = VK_FORMAT_R16G16_SINT,
5941 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
5942 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
5943 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
5944 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
5945 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
5946 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
5947 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
5948 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
5949 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
5950 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
5951 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
5952 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
5953 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
5954 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
5955 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
5956 eR32Uint = VK_FORMAT_R32_UINT,
5957 eR32Sint = VK_FORMAT_R32_SINT,
5958 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
5959 eR32G32Uint = VK_FORMAT_R32G32_UINT,
5960 eR32G32Sint = VK_FORMAT_R32G32_SINT,
5961 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
5962 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
5963 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
5964 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
5965 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
5966 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
5967 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
5968 eR64Uint = VK_FORMAT_R64_UINT,
5969 eR64Sint = VK_FORMAT_R64_SINT,
5970 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
5971 eR64G64Uint = VK_FORMAT_R64G64_UINT,
5972 eR64G64Sint = VK_FORMAT_R64G64_SINT,
5973 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
5974 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
5975 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
5976 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
5977 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
5978 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
5979 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
5980 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
5981 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
5982 eD16Unorm = VK_FORMAT_D16_UNORM,
5983 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
5984 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
5985 eS8Uint = VK_FORMAT_S8_UINT,
5986 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
5987 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
5988 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
5989 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
5990 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
5991 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
5992 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
5993 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
5994 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
5995 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
5996 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
5997 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
5998 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
5999 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6000 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6001 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6002 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6003 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6004 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6005 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6006 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6007 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6008 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6009 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6010 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6011 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6012 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6013 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6014 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6015 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6016 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6017 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6018 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6019 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6020 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6021 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6022 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6023 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6024 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6025 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6026 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6027 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6028 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6029 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6030 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6031 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6032 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6033 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6034 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6035 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6036 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6037 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6038 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6039 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6040 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6041 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006042 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6043 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6044 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6045 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6046 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6047 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6048 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6049 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6050 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006051 };
6052
6053 struct VertexInputAttributeDescription
6054 {
6055 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6056 : location( location_ )
6057 , binding( binding_ )
6058 , format( format_ )
6059 , offset( offset_ )
6060 {
6061 }
6062
6063 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6064 {
6065 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6066 }
6067
6068 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6069 {
6070 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6071 return *this;
6072 }
6073
6074 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6075 {
6076 location = location_;
6077 return *this;
6078 }
6079
6080 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6081 {
6082 binding = binding_;
6083 return *this;
6084 }
6085
6086 VertexInputAttributeDescription& setFormat( Format format_ )
6087 {
6088 format = format_;
6089 return *this;
6090 }
6091
6092 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6093 {
6094 offset = offset_;
6095 return *this;
6096 }
6097
6098 operator const VkVertexInputAttributeDescription&() const
6099 {
6100 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6101 }
6102
6103 bool operator==( VertexInputAttributeDescription const& rhs ) const
6104 {
6105 return ( location == rhs.location )
6106 && ( binding == rhs.binding )
6107 && ( format == rhs.format )
6108 && ( offset == rhs.offset );
6109 }
6110
6111 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6112 {
6113 return !operator==( rhs );
6114 }
6115
6116 uint32_t location;
6117 uint32_t binding;
6118 Format format;
6119 uint32_t offset;
6120 };
6121 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6122
6123 enum class StructureType
6124 {
6125 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6126 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6127 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6128 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6129 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6130 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6131 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6132 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6133 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6134 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6135 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6136 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6137 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6138 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6139 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6140 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6141 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6142 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6143 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6144 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6145 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6146 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6147 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6148 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6149 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6150 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6151 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6152 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6153 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6154 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6155 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6156 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6157 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6158 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6159 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6160 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6161 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6162 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6163 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6164 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6165 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6166 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6167 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6168 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6169 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6170 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6171 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6172 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6173 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6174 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6175 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6176 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6177 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6178 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6179 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6180 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6181 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6182 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6183 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6184 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6185 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6186 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6187 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6188 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6189 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6190 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6191 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006192 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Young0f183a82017-02-28 09:58:04 -07006193 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6194 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6195 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006196 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6197 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6198 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6199 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006200 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006201 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6202 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6203 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6204 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6205 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6206 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6207 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6208 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6209 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006210 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6211 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6212 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6213 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6214 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6215 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6216 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6217 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6218 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6219 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6220 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6221 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6222 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006223 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006224 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006225 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6226 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6227 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6228 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6229 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6230 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6231 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -06006232 ePhysicalDeviceProperties2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX,
6233 eImageFormatProperties2KHX = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX,
6234 ePhysicalDeviceImageFormatInfo2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006235 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6236 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6237 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6238 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6239 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6240 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6241 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6242 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6243 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6244 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6245 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6246 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6247 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6248 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6249 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6250 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6251 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
6252 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006253 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6254 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6255 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6256 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6257 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006258 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006259 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006260 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6261 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6262 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6263 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006264 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006265 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006266 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6267 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6268 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6269 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006270 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006271 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6272 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006273 };
6274
6275 struct ApplicationInfo
6276 {
6277 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6278 : sType( StructureType::eApplicationInfo )
6279 , pNext( nullptr )
6280 , pApplicationName( pApplicationName_ )
6281 , applicationVersion( applicationVersion_ )
6282 , pEngineName( pEngineName_ )
6283 , engineVersion( engineVersion_ )
6284 , apiVersion( apiVersion_ )
6285 {
6286 }
6287
6288 ApplicationInfo( VkApplicationInfo const & rhs )
6289 {
6290 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6291 }
6292
6293 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6294 {
6295 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6296 return *this;
6297 }
6298
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006299 ApplicationInfo& setPNext( const void* pNext_ )
6300 {
6301 pNext = pNext_;
6302 return *this;
6303 }
6304
6305 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6306 {
6307 pApplicationName = pApplicationName_;
6308 return *this;
6309 }
6310
6311 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6312 {
6313 applicationVersion = applicationVersion_;
6314 return *this;
6315 }
6316
6317 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6318 {
6319 pEngineName = pEngineName_;
6320 return *this;
6321 }
6322
6323 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6324 {
6325 engineVersion = engineVersion_;
6326 return *this;
6327 }
6328
6329 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6330 {
6331 apiVersion = apiVersion_;
6332 return *this;
6333 }
6334
6335 operator const VkApplicationInfo&() const
6336 {
6337 return *reinterpret_cast<const VkApplicationInfo*>(this);
6338 }
6339
6340 bool operator==( ApplicationInfo const& rhs ) const
6341 {
6342 return ( sType == rhs.sType )
6343 && ( pNext == rhs.pNext )
6344 && ( pApplicationName == rhs.pApplicationName )
6345 && ( applicationVersion == rhs.applicationVersion )
6346 && ( pEngineName == rhs.pEngineName )
6347 && ( engineVersion == rhs.engineVersion )
6348 && ( apiVersion == rhs.apiVersion );
6349 }
6350
6351 bool operator!=( ApplicationInfo const& rhs ) const
6352 {
6353 return !operator==( rhs );
6354 }
6355
6356 private:
6357 StructureType sType;
6358
6359 public:
6360 const void* pNext;
6361 const char* pApplicationName;
6362 uint32_t applicationVersion;
6363 const char* pEngineName;
6364 uint32_t engineVersion;
6365 uint32_t apiVersion;
6366 };
6367 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6368
6369 struct DeviceQueueCreateInfo
6370 {
6371 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6372 : sType( StructureType::eDeviceQueueCreateInfo )
6373 , pNext( nullptr )
6374 , flags( flags_ )
6375 , queueFamilyIndex( queueFamilyIndex_ )
6376 , queueCount( queueCount_ )
6377 , pQueuePriorities( pQueuePriorities_ )
6378 {
6379 }
6380
6381 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6382 {
6383 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6384 }
6385
6386 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6387 {
6388 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6389 return *this;
6390 }
6391
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006392 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6393 {
6394 pNext = pNext_;
6395 return *this;
6396 }
6397
6398 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6399 {
6400 flags = flags_;
6401 return *this;
6402 }
6403
6404 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6405 {
6406 queueFamilyIndex = queueFamilyIndex_;
6407 return *this;
6408 }
6409
6410 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6411 {
6412 queueCount = queueCount_;
6413 return *this;
6414 }
6415
6416 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6417 {
6418 pQueuePriorities = pQueuePriorities_;
6419 return *this;
6420 }
6421
6422 operator const VkDeviceQueueCreateInfo&() const
6423 {
6424 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6425 }
6426
6427 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6428 {
6429 return ( sType == rhs.sType )
6430 && ( pNext == rhs.pNext )
6431 && ( flags == rhs.flags )
6432 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6433 && ( queueCount == rhs.queueCount )
6434 && ( pQueuePriorities == rhs.pQueuePriorities );
6435 }
6436
6437 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6438 {
6439 return !operator==( rhs );
6440 }
6441
6442 private:
6443 StructureType sType;
6444
6445 public:
6446 const void* pNext;
6447 DeviceQueueCreateFlags flags;
6448 uint32_t queueFamilyIndex;
6449 uint32_t queueCount;
6450 const float* pQueuePriorities;
6451 };
6452 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6453
6454 struct DeviceCreateInfo
6455 {
6456 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 )
6457 : sType( StructureType::eDeviceCreateInfo )
6458 , pNext( nullptr )
6459 , flags( flags_ )
6460 , queueCreateInfoCount( queueCreateInfoCount_ )
6461 , pQueueCreateInfos( pQueueCreateInfos_ )
6462 , enabledLayerCount( enabledLayerCount_ )
6463 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6464 , enabledExtensionCount( enabledExtensionCount_ )
6465 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6466 , pEnabledFeatures( pEnabledFeatures_ )
6467 {
6468 }
6469
6470 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6471 {
6472 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6473 }
6474
6475 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6476 {
6477 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6478 return *this;
6479 }
6480
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006481 DeviceCreateInfo& setPNext( const void* pNext_ )
6482 {
6483 pNext = pNext_;
6484 return *this;
6485 }
6486
6487 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6488 {
6489 flags = flags_;
6490 return *this;
6491 }
6492
6493 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6494 {
6495 queueCreateInfoCount = queueCreateInfoCount_;
6496 return *this;
6497 }
6498
6499 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6500 {
6501 pQueueCreateInfos = pQueueCreateInfos_;
6502 return *this;
6503 }
6504
6505 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6506 {
6507 enabledLayerCount = enabledLayerCount_;
6508 return *this;
6509 }
6510
6511 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6512 {
6513 ppEnabledLayerNames = ppEnabledLayerNames_;
6514 return *this;
6515 }
6516
6517 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6518 {
6519 enabledExtensionCount = enabledExtensionCount_;
6520 return *this;
6521 }
6522
6523 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6524 {
6525 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6526 return *this;
6527 }
6528
6529 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6530 {
6531 pEnabledFeatures = pEnabledFeatures_;
6532 return *this;
6533 }
6534
6535 operator const VkDeviceCreateInfo&() const
6536 {
6537 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6538 }
6539
6540 bool operator==( DeviceCreateInfo const& rhs ) const
6541 {
6542 return ( sType == rhs.sType )
6543 && ( pNext == rhs.pNext )
6544 && ( flags == rhs.flags )
6545 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6546 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6547 && ( enabledLayerCount == rhs.enabledLayerCount )
6548 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6549 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6550 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6551 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6552 }
6553
6554 bool operator!=( DeviceCreateInfo const& rhs ) const
6555 {
6556 return !operator==( rhs );
6557 }
6558
6559 private:
6560 StructureType sType;
6561
6562 public:
6563 const void* pNext;
6564 DeviceCreateFlags flags;
6565 uint32_t queueCreateInfoCount;
6566 const DeviceQueueCreateInfo* pQueueCreateInfos;
6567 uint32_t enabledLayerCount;
6568 const char* const* ppEnabledLayerNames;
6569 uint32_t enabledExtensionCount;
6570 const char* const* ppEnabledExtensionNames;
6571 const PhysicalDeviceFeatures* pEnabledFeatures;
6572 };
6573 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6574
6575 struct InstanceCreateInfo
6576 {
6577 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 )
6578 : sType( StructureType::eInstanceCreateInfo )
6579 , pNext( nullptr )
6580 , flags( flags_ )
6581 , pApplicationInfo( pApplicationInfo_ )
6582 , enabledLayerCount( enabledLayerCount_ )
6583 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6584 , enabledExtensionCount( enabledExtensionCount_ )
6585 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6586 {
6587 }
6588
6589 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6590 {
6591 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6592 }
6593
6594 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6595 {
6596 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6597 return *this;
6598 }
6599
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006600 InstanceCreateInfo& setPNext( const void* pNext_ )
6601 {
6602 pNext = pNext_;
6603 return *this;
6604 }
6605
6606 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6607 {
6608 flags = flags_;
6609 return *this;
6610 }
6611
6612 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6613 {
6614 pApplicationInfo = pApplicationInfo_;
6615 return *this;
6616 }
6617
6618 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6619 {
6620 enabledLayerCount = enabledLayerCount_;
6621 return *this;
6622 }
6623
6624 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6625 {
6626 ppEnabledLayerNames = ppEnabledLayerNames_;
6627 return *this;
6628 }
6629
6630 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6631 {
6632 enabledExtensionCount = enabledExtensionCount_;
6633 return *this;
6634 }
6635
6636 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6637 {
6638 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6639 return *this;
6640 }
6641
6642 operator const VkInstanceCreateInfo&() const
6643 {
6644 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6645 }
6646
6647 bool operator==( InstanceCreateInfo const& rhs ) const
6648 {
6649 return ( sType == rhs.sType )
6650 && ( pNext == rhs.pNext )
6651 && ( flags == rhs.flags )
6652 && ( pApplicationInfo == rhs.pApplicationInfo )
6653 && ( enabledLayerCount == rhs.enabledLayerCount )
6654 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6655 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6656 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6657 }
6658
6659 bool operator!=( InstanceCreateInfo const& rhs ) const
6660 {
6661 return !operator==( rhs );
6662 }
6663
6664 private:
6665 StructureType sType;
6666
6667 public:
6668 const void* pNext;
6669 InstanceCreateFlags flags;
6670 const ApplicationInfo* pApplicationInfo;
6671 uint32_t enabledLayerCount;
6672 const char* const* ppEnabledLayerNames;
6673 uint32_t enabledExtensionCount;
6674 const char* const* ppEnabledExtensionNames;
6675 };
6676 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6677
6678 struct MemoryAllocateInfo
6679 {
6680 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6681 : sType( StructureType::eMemoryAllocateInfo )
6682 , pNext( nullptr )
6683 , allocationSize( allocationSize_ )
6684 , memoryTypeIndex( memoryTypeIndex_ )
6685 {
6686 }
6687
6688 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6689 {
6690 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6691 }
6692
6693 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6694 {
6695 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6696 return *this;
6697 }
6698
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006699 MemoryAllocateInfo& setPNext( const void* pNext_ )
6700 {
6701 pNext = pNext_;
6702 return *this;
6703 }
6704
6705 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6706 {
6707 allocationSize = allocationSize_;
6708 return *this;
6709 }
6710
6711 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6712 {
6713 memoryTypeIndex = memoryTypeIndex_;
6714 return *this;
6715 }
6716
6717 operator const VkMemoryAllocateInfo&() const
6718 {
6719 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6720 }
6721
6722 bool operator==( MemoryAllocateInfo const& rhs ) const
6723 {
6724 return ( sType == rhs.sType )
6725 && ( pNext == rhs.pNext )
6726 && ( allocationSize == rhs.allocationSize )
6727 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6728 }
6729
6730 bool operator!=( MemoryAllocateInfo const& rhs ) const
6731 {
6732 return !operator==( rhs );
6733 }
6734
6735 private:
6736 StructureType sType;
6737
6738 public:
6739 const void* pNext;
6740 DeviceSize allocationSize;
6741 uint32_t memoryTypeIndex;
6742 };
6743 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6744
6745 struct MappedMemoryRange
6746 {
6747 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6748 : sType( StructureType::eMappedMemoryRange )
6749 , pNext( nullptr )
6750 , memory( memory_ )
6751 , offset( offset_ )
6752 , size( size_ )
6753 {
6754 }
6755
6756 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6757 {
6758 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6759 }
6760
6761 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6762 {
6763 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6764 return *this;
6765 }
6766
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006767 MappedMemoryRange& setPNext( const void* pNext_ )
6768 {
6769 pNext = pNext_;
6770 return *this;
6771 }
6772
6773 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6774 {
6775 memory = memory_;
6776 return *this;
6777 }
6778
6779 MappedMemoryRange& setOffset( DeviceSize offset_ )
6780 {
6781 offset = offset_;
6782 return *this;
6783 }
6784
6785 MappedMemoryRange& setSize( DeviceSize size_ )
6786 {
6787 size = size_;
6788 return *this;
6789 }
6790
6791 operator const VkMappedMemoryRange&() const
6792 {
6793 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6794 }
6795
6796 bool operator==( MappedMemoryRange const& rhs ) const
6797 {
6798 return ( sType == rhs.sType )
6799 && ( pNext == rhs.pNext )
6800 && ( memory == rhs.memory )
6801 && ( offset == rhs.offset )
6802 && ( size == rhs.size );
6803 }
6804
6805 bool operator!=( MappedMemoryRange const& rhs ) const
6806 {
6807 return !operator==( rhs );
6808 }
6809
6810 private:
6811 StructureType sType;
6812
6813 public:
6814 const void* pNext;
6815 DeviceMemory memory;
6816 DeviceSize offset;
6817 DeviceSize size;
6818 };
6819 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6820
6821 struct WriteDescriptorSet
6822 {
6823 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 )
6824 : sType( StructureType::eWriteDescriptorSet )
6825 , pNext( nullptr )
6826 , dstSet( dstSet_ )
6827 , dstBinding( dstBinding_ )
6828 , dstArrayElement( dstArrayElement_ )
6829 , descriptorCount( descriptorCount_ )
6830 , descriptorType( descriptorType_ )
6831 , pImageInfo( pImageInfo_ )
6832 , pBufferInfo( pBufferInfo_ )
6833 , pTexelBufferView( pTexelBufferView_ )
6834 {
6835 }
6836
6837 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6838 {
6839 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6840 }
6841
6842 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6843 {
6844 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6845 return *this;
6846 }
6847
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006848 WriteDescriptorSet& setPNext( const void* pNext_ )
6849 {
6850 pNext = pNext_;
6851 return *this;
6852 }
6853
6854 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6855 {
6856 dstSet = dstSet_;
6857 return *this;
6858 }
6859
6860 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6861 {
6862 dstBinding = dstBinding_;
6863 return *this;
6864 }
6865
6866 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6867 {
6868 dstArrayElement = dstArrayElement_;
6869 return *this;
6870 }
6871
6872 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6873 {
6874 descriptorCount = descriptorCount_;
6875 return *this;
6876 }
6877
6878 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6879 {
6880 descriptorType = descriptorType_;
6881 return *this;
6882 }
6883
6884 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
6885 {
6886 pImageInfo = pImageInfo_;
6887 return *this;
6888 }
6889
6890 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
6891 {
6892 pBufferInfo = pBufferInfo_;
6893 return *this;
6894 }
6895
6896 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
6897 {
6898 pTexelBufferView = pTexelBufferView_;
6899 return *this;
6900 }
6901
6902 operator const VkWriteDescriptorSet&() const
6903 {
6904 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
6905 }
6906
6907 bool operator==( WriteDescriptorSet const& rhs ) const
6908 {
6909 return ( sType == rhs.sType )
6910 && ( pNext == rhs.pNext )
6911 && ( dstSet == rhs.dstSet )
6912 && ( dstBinding == rhs.dstBinding )
6913 && ( dstArrayElement == rhs.dstArrayElement )
6914 && ( descriptorCount == rhs.descriptorCount )
6915 && ( descriptorType == rhs.descriptorType )
6916 && ( pImageInfo == rhs.pImageInfo )
6917 && ( pBufferInfo == rhs.pBufferInfo )
6918 && ( pTexelBufferView == rhs.pTexelBufferView );
6919 }
6920
6921 bool operator!=( WriteDescriptorSet const& rhs ) const
6922 {
6923 return !operator==( rhs );
6924 }
6925
6926 private:
6927 StructureType sType;
6928
6929 public:
6930 const void* pNext;
6931 DescriptorSet dstSet;
6932 uint32_t dstBinding;
6933 uint32_t dstArrayElement;
6934 uint32_t descriptorCount;
6935 DescriptorType descriptorType;
6936 const DescriptorImageInfo* pImageInfo;
6937 const DescriptorBufferInfo* pBufferInfo;
6938 const BufferView* pTexelBufferView;
6939 };
6940 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
6941
6942 struct CopyDescriptorSet
6943 {
6944 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 )
6945 : sType( StructureType::eCopyDescriptorSet )
6946 , pNext( nullptr )
6947 , srcSet( srcSet_ )
6948 , srcBinding( srcBinding_ )
6949 , srcArrayElement( srcArrayElement_ )
6950 , dstSet( dstSet_ )
6951 , dstBinding( dstBinding_ )
6952 , dstArrayElement( dstArrayElement_ )
6953 , descriptorCount( descriptorCount_ )
6954 {
6955 }
6956
6957 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
6958 {
6959 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6960 }
6961
6962 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
6963 {
6964 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6965 return *this;
6966 }
6967
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006968 CopyDescriptorSet& setPNext( const void* pNext_ )
6969 {
6970 pNext = pNext_;
6971 return *this;
6972 }
6973
6974 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
6975 {
6976 srcSet = srcSet_;
6977 return *this;
6978 }
6979
6980 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
6981 {
6982 srcBinding = srcBinding_;
6983 return *this;
6984 }
6985
6986 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
6987 {
6988 srcArrayElement = srcArrayElement_;
6989 return *this;
6990 }
6991
6992 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6993 {
6994 dstSet = dstSet_;
6995 return *this;
6996 }
6997
6998 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6999 {
7000 dstBinding = dstBinding_;
7001 return *this;
7002 }
7003
7004 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7005 {
7006 dstArrayElement = dstArrayElement_;
7007 return *this;
7008 }
7009
7010 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7011 {
7012 descriptorCount = descriptorCount_;
7013 return *this;
7014 }
7015
7016 operator const VkCopyDescriptorSet&() const
7017 {
7018 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7019 }
7020
7021 bool operator==( CopyDescriptorSet const& rhs ) const
7022 {
7023 return ( sType == rhs.sType )
7024 && ( pNext == rhs.pNext )
7025 && ( srcSet == rhs.srcSet )
7026 && ( srcBinding == rhs.srcBinding )
7027 && ( srcArrayElement == rhs.srcArrayElement )
7028 && ( dstSet == rhs.dstSet )
7029 && ( dstBinding == rhs.dstBinding )
7030 && ( dstArrayElement == rhs.dstArrayElement )
7031 && ( descriptorCount == rhs.descriptorCount );
7032 }
7033
7034 bool operator!=( CopyDescriptorSet const& rhs ) const
7035 {
7036 return !operator==( rhs );
7037 }
7038
7039 private:
7040 StructureType sType;
7041
7042 public:
7043 const void* pNext;
7044 DescriptorSet srcSet;
7045 uint32_t srcBinding;
7046 uint32_t srcArrayElement;
7047 DescriptorSet dstSet;
7048 uint32_t dstBinding;
7049 uint32_t dstArrayElement;
7050 uint32_t descriptorCount;
7051 };
7052 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7053
7054 struct BufferViewCreateInfo
7055 {
7056 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7057 : sType( StructureType::eBufferViewCreateInfo )
7058 , pNext( nullptr )
7059 , flags( flags_ )
7060 , buffer( buffer_ )
7061 , format( format_ )
7062 , offset( offset_ )
7063 , range( range_ )
7064 {
7065 }
7066
7067 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7068 {
7069 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7070 }
7071
7072 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7073 {
7074 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7075 return *this;
7076 }
7077
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007078 BufferViewCreateInfo& setPNext( const void* pNext_ )
7079 {
7080 pNext = pNext_;
7081 return *this;
7082 }
7083
7084 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7085 {
7086 flags = flags_;
7087 return *this;
7088 }
7089
7090 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7091 {
7092 buffer = buffer_;
7093 return *this;
7094 }
7095
7096 BufferViewCreateInfo& setFormat( Format format_ )
7097 {
7098 format = format_;
7099 return *this;
7100 }
7101
7102 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7103 {
7104 offset = offset_;
7105 return *this;
7106 }
7107
7108 BufferViewCreateInfo& setRange( DeviceSize range_ )
7109 {
7110 range = range_;
7111 return *this;
7112 }
7113
7114 operator const VkBufferViewCreateInfo&() const
7115 {
7116 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7117 }
7118
7119 bool operator==( BufferViewCreateInfo const& rhs ) const
7120 {
7121 return ( sType == rhs.sType )
7122 && ( pNext == rhs.pNext )
7123 && ( flags == rhs.flags )
7124 && ( buffer == rhs.buffer )
7125 && ( format == rhs.format )
7126 && ( offset == rhs.offset )
7127 && ( range == rhs.range );
7128 }
7129
7130 bool operator!=( BufferViewCreateInfo const& rhs ) const
7131 {
7132 return !operator==( rhs );
7133 }
7134
7135 private:
7136 StructureType sType;
7137
7138 public:
7139 const void* pNext;
7140 BufferViewCreateFlags flags;
7141 Buffer buffer;
7142 Format format;
7143 DeviceSize offset;
7144 DeviceSize range;
7145 };
7146 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7147
7148 struct ShaderModuleCreateInfo
7149 {
7150 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7151 : sType( StructureType::eShaderModuleCreateInfo )
7152 , pNext( nullptr )
7153 , flags( flags_ )
7154 , codeSize( codeSize_ )
7155 , pCode( pCode_ )
7156 {
7157 }
7158
7159 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7160 {
7161 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7162 }
7163
7164 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7165 {
7166 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7167 return *this;
7168 }
7169
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007170 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7171 {
7172 pNext = pNext_;
7173 return *this;
7174 }
7175
7176 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7177 {
7178 flags = flags_;
7179 return *this;
7180 }
7181
7182 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7183 {
7184 codeSize = codeSize_;
7185 return *this;
7186 }
7187
7188 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7189 {
7190 pCode = pCode_;
7191 return *this;
7192 }
7193
7194 operator const VkShaderModuleCreateInfo&() const
7195 {
7196 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7197 }
7198
7199 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7200 {
7201 return ( sType == rhs.sType )
7202 && ( pNext == rhs.pNext )
7203 && ( flags == rhs.flags )
7204 && ( codeSize == rhs.codeSize )
7205 && ( pCode == rhs.pCode );
7206 }
7207
7208 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7209 {
7210 return !operator==( rhs );
7211 }
7212
7213 private:
7214 StructureType sType;
7215
7216 public:
7217 const void* pNext;
7218 ShaderModuleCreateFlags flags;
7219 size_t codeSize;
7220 const uint32_t* pCode;
7221 };
7222 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7223
7224 struct DescriptorSetAllocateInfo
7225 {
7226 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7227 : sType( StructureType::eDescriptorSetAllocateInfo )
7228 , pNext( nullptr )
7229 , descriptorPool( descriptorPool_ )
7230 , descriptorSetCount( descriptorSetCount_ )
7231 , pSetLayouts( pSetLayouts_ )
7232 {
7233 }
7234
7235 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7236 {
7237 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7238 }
7239
7240 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7241 {
7242 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7243 return *this;
7244 }
7245
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007246 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7247 {
7248 pNext = pNext_;
7249 return *this;
7250 }
7251
7252 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7253 {
7254 descriptorPool = descriptorPool_;
7255 return *this;
7256 }
7257
7258 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7259 {
7260 descriptorSetCount = descriptorSetCount_;
7261 return *this;
7262 }
7263
7264 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7265 {
7266 pSetLayouts = pSetLayouts_;
7267 return *this;
7268 }
7269
7270 operator const VkDescriptorSetAllocateInfo&() const
7271 {
7272 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7273 }
7274
7275 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7276 {
7277 return ( sType == rhs.sType )
7278 && ( pNext == rhs.pNext )
7279 && ( descriptorPool == rhs.descriptorPool )
7280 && ( descriptorSetCount == rhs.descriptorSetCount )
7281 && ( pSetLayouts == rhs.pSetLayouts );
7282 }
7283
7284 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7285 {
7286 return !operator==( rhs );
7287 }
7288
7289 private:
7290 StructureType sType;
7291
7292 public:
7293 const void* pNext;
7294 DescriptorPool descriptorPool;
7295 uint32_t descriptorSetCount;
7296 const DescriptorSetLayout* pSetLayouts;
7297 };
7298 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7299
7300 struct PipelineVertexInputStateCreateInfo
7301 {
7302 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7303 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7304 , pNext( nullptr )
7305 , flags( flags_ )
7306 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7307 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7308 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7309 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7310 {
7311 }
7312
7313 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7314 {
7315 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7316 }
7317
7318 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7319 {
7320 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7321 return *this;
7322 }
7323
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007324 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7325 {
7326 pNext = pNext_;
7327 return *this;
7328 }
7329
7330 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7331 {
7332 flags = flags_;
7333 return *this;
7334 }
7335
7336 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7337 {
7338 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7339 return *this;
7340 }
7341
7342 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7343 {
7344 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7345 return *this;
7346 }
7347
7348 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7349 {
7350 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7351 return *this;
7352 }
7353
7354 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7355 {
7356 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7357 return *this;
7358 }
7359
7360 operator const VkPipelineVertexInputStateCreateInfo&() const
7361 {
7362 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7363 }
7364
7365 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7366 {
7367 return ( sType == rhs.sType )
7368 && ( pNext == rhs.pNext )
7369 && ( flags == rhs.flags )
7370 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7371 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7372 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7373 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7374 }
7375
7376 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7377 {
7378 return !operator==( rhs );
7379 }
7380
7381 private:
7382 StructureType sType;
7383
7384 public:
7385 const void* pNext;
7386 PipelineVertexInputStateCreateFlags flags;
7387 uint32_t vertexBindingDescriptionCount;
7388 const VertexInputBindingDescription* pVertexBindingDescriptions;
7389 uint32_t vertexAttributeDescriptionCount;
7390 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7391 };
7392 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7393
7394 struct PipelineInputAssemblyStateCreateInfo
7395 {
7396 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7397 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7398 , pNext( nullptr )
7399 , flags( flags_ )
7400 , topology( topology_ )
7401 , primitiveRestartEnable( primitiveRestartEnable_ )
7402 {
7403 }
7404
7405 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7406 {
7407 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7408 }
7409
7410 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7411 {
7412 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7413 return *this;
7414 }
7415
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007416 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7417 {
7418 pNext = pNext_;
7419 return *this;
7420 }
7421
7422 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7423 {
7424 flags = flags_;
7425 return *this;
7426 }
7427
7428 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7429 {
7430 topology = topology_;
7431 return *this;
7432 }
7433
7434 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7435 {
7436 primitiveRestartEnable = primitiveRestartEnable_;
7437 return *this;
7438 }
7439
7440 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7441 {
7442 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7443 }
7444
7445 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7446 {
7447 return ( sType == rhs.sType )
7448 && ( pNext == rhs.pNext )
7449 && ( flags == rhs.flags )
7450 && ( topology == rhs.topology )
7451 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7452 }
7453
7454 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7455 {
7456 return !operator==( rhs );
7457 }
7458
7459 private:
7460 StructureType sType;
7461
7462 public:
7463 const void* pNext;
7464 PipelineInputAssemblyStateCreateFlags flags;
7465 PrimitiveTopology topology;
7466 Bool32 primitiveRestartEnable;
7467 };
7468 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7469
7470 struct PipelineTessellationStateCreateInfo
7471 {
7472 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7473 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7474 , pNext( nullptr )
7475 , flags( flags_ )
7476 , patchControlPoints( patchControlPoints_ )
7477 {
7478 }
7479
7480 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7481 {
7482 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7483 }
7484
7485 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7486 {
7487 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7488 return *this;
7489 }
7490
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007491 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7492 {
7493 pNext = pNext_;
7494 return *this;
7495 }
7496
7497 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7498 {
7499 flags = flags_;
7500 return *this;
7501 }
7502
7503 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7504 {
7505 patchControlPoints = patchControlPoints_;
7506 return *this;
7507 }
7508
7509 operator const VkPipelineTessellationStateCreateInfo&() const
7510 {
7511 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7512 }
7513
7514 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7515 {
7516 return ( sType == rhs.sType )
7517 && ( pNext == rhs.pNext )
7518 && ( flags == rhs.flags )
7519 && ( patchControlPoints == rhs.patchControlPoints );
7520 }
7521
7522 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7523 {
7524 return !operator==( rhs );
7525 }
7526
7527 private:
7528 StructureType sType;
7529
7530 public:
7531 const void* pNext;
7532 PipelineTessellationStateCreateFlags flags;
7533 uint32_t patchControlPoints;
7534 };
7535 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7536
7537 struct PipelineViewportStateCreateInfo
7538 {
7539 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7540 : sType( StructureType::ePipelineViewportStateCreateInfo )
7541 , pNext( nullptr )
7542 , flags( flags_ )
7543 , viewportCount( viewportCount_ )
7544 , pViewports( pViewports_ )
7545 , scissorCount( scissorCount_ )
7546 , pScissors( pScissors_ )
7547 {
7548 }
7549
7550 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7551 {
7552 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7553 }
7554
7555 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7556 {
7557 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7558 return *this;
7559 }
7560
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007561 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7562 {
7563 pNext = pNext_;
7564 return *this;
7565 }
7566
7567 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7568 {
7569 flags = flags_;
7570 return *this;
7571 }
7572
7573 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7574 {
7575 viewportCount = viewportCount_;
7576 return *this;
7577 }
7578
7579 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7580 {
7581 pViewports = pViewports_;
7582 return *this;
7583 }
7584
7585 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7586 {
7587 scissorCount = scissorCount_;
7588 return *this;
7589 }
7590
7591 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7592 {
7593 pScissors = pScissors_;
7594 return *this;
7595 }
7596
7597 operator const VkPipelineViewportStateCreateInfo&() const
7598 {
7599 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7600 }
7601
7602 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7603 {
7604 return ( sType == rhs.sType )
7605 && ( pNext == rhs.pNext )
7606 && ( flags == rhs.flags )
7607 && ( viewportCount == rhs.viewportCount )
7608 && ( pViewports == rhs.pViewports )
7609 && ( scissorCount == rhs.scissorCount )
7610 && ( pScissors == rhs.pScissors );
7611 }
7612
7613 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7614 {
7615 return !operator==( rhs );
7616 }
7617
7618 private:
7619 StructureType sType;
7620
7621 public:
7622 const void* pNext;
7623 PipelineViewportStateCreateFlags flags;
7624 uint32_t viewportCount;
7625 const Viewport* pViewports;
7626 uint32_t scissorCount;
7627 const Rect2D* pScissors;
7628 };
7629 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7630
7631 struct PipelineRasterizationStateCreateInfo
7632 {
7633 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 )
7634 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7635 , pNext( nullptr )
7636 , flags( flags_ )
7637 , depthClampEnable( depthClampEnable_ )
7638 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7639 , polygonMode( polygonMode_ )
7640 , cullMode( cullMode_ )
7641 , frontFace( frontFace_ )
7642 , depthBiasEnable( depthBiasEnable_ )
7643 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7644 , depthBiasClamp( depthBiasClamp_ )
7645 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7646 , lineWidth( lineWidth_ )
7647 {
7648 }
7649
7650 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7651 {
7652 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7653 }
7654
7655 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7656 {
7657 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7658 return *this;
7659 }
7660
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007661 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7662 {
7663 pNext = pNext_;
7664 return *this;
7665 }
7666
7667 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7668 {
7669 flags = flags_;
7670 return *this;
7671 }
7672
7673 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7674 {
7675 depthClampEnable = depthClampEnable_;
7676 return *this;
7677 }
7678
7679 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7680 {
7681 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7682 return *this;
7683 }
7684
7685 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7686 {
7687 polygonMode = polygonMode_;
7688 return *this;
7689 }
7690
7691 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7692 {
7693 cullMode = cullMode_;
7694 return *this;
7695 }
7696
7697 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7698 {
7699 frontFace = frontFace_;
7700 return *this;
7701 }
7702
7703 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7704 {
7705 depthBiasEnable = depthBiasEnable_;
7706 return *this;
7707 }
7708
7709 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7710 {
7711 depthBiasConstantFactor = depthBiasConstantFactor_;
7712 return *this;
7713 }
7714
7715 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7716 {
7717 depthBiasClamp = depthBiasClamp_;
7718 return *this;
7719 }
7720
7721 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7722 {
7723 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7724 return *this;
7725 }
7726
7727 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7728 {
7729 lineWidth = lineWidth_;
7730 return *this;
7731 }
7732
7733 operator const VkPipelineRasterizationStateCreateInfo&() const
7734 {
7735 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7736 }
7737
7738 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7739 {
7740 return ( sType == rhs.sType )
7741 && ( pNext == rhs.pNext )
7742 && ( flags == rhs.flags )
7743 && ( depthClampEnable == rhs.depthClampEnable )
7744 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7745 && ( polygonMode == rhs.polygonMode )
7746 && ( cullMode == rhs.cullMode )
7747 && ( frontFace == rhs.frontFace )
7748 && ( depthBiasEnable == rhs.depthBiasEnable )
7749 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7750 && ( depthBiasClamp == rhs.depthBiasClamp )
7751 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7752 && ( lineWidth == rhs.lineWidth );
7753 }
7754
7755 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7756 {
7757 return !operator==( rhs );
7758 }
7759
7760 private:
7761 StructureType sType;
7762
7763 public:
7764 const void* pNext;
7765 PipelineRasterizationStateCreateFlags flags;
7766 Bool32 depthClampEnable;
7767 Bool32 rasterizerDiscardEnable;
7768 PolygonMode polygonMode;
7769 CullModeFlags cullMode;
7770 FrontFace frontFace;
7771 Bool32 depthBiasEnable;
7772 float depthBiasConstantFactor;
7773 float depthBiasClamp;
7774 float depthBiasSlopeFactor;
7775 float lineWidth;
7776 };
7777 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7778
7779 struct PipelineDepthStencilStateCreateInfo
7780 {
7781 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 )
7782 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7783 , pNext( nullptr )
7784 , flags( flags_ )
7785 , depthTestEnable( depthTestEnable_ )
7786 , depthWriteEnable( depthWriteEnable_ )
7787 , depthCompareOp( depthCompareOp_ )
7788 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7789 , stencilTestEnable( stencilTestEnable_ )
7790 , front( front_ )
7791 , back( back_ )
7792 , minDepthBounds( minDepthBounds_ )
7793 , maxDepthBounds( maxDepthBounds_ )
7794 {
7795 }
7796
7797 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7798 {
7799 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7800 }
7801
7802 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7803 {
7804 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7805 return *this;
7806 }
7807
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007808 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7809 {
7810 pNext = pNext_;
7811 return *this;
7812 }
7813
7814 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7815 {
7816 flags = flags_;
7817 return *this;
7818 }
7819
7820 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7821 {
7822 depthTestEnable = depthTestEnable_;
7823 return *this;
7824 }
7825
7826 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7827 {
7828 depthWriteEnable = depthWriteEnable_;
7829 return *this;
7830 }
7831
7832 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7833 {
7834 depthCompareOp = depthCompareOp_;
7835 return *this;
7836 }
7837
7838 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7839 {
7840 depthBoundsTestEnable = depthBoundsTestEnable_;
7841 return *this;
7842 }
7843
7844 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7845 {
7846 stencilTestEnable = stencilTestEnable_;
7847 return *this;
7848 }
7849
7850 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7851 {
7852 front = front_;
7853 return *this;
7854 }
7855
7856 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7857 {
7858 back = back_;
7859 return *this;
7860 }
7861
7862 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7863 {
7864 minDepthBounds = minDepthBounds_;
7865 return *this;
7866 }
7867
7868 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7869 {
7870 maxDepthBounds = maxDepthBounds_;
7871 return *this;
7872 }
7873
7874 operator const VkPipelineDepthStencilStateCreateInfo&() const
7875 {
7876 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7877 }
7878
7879 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7880 {
7881 return ( sType == rhs.sType )
7882 && ( pNext == rhs.pNext )
7883 && ( flags == rhs.flags )
7884 && ( depthTestEnable == rhs.depthTestEnable )
7885 && ( depthWriteEnable == rhs.depthWriteEnable )
7886 && ( depthCompareOp == rhs.depthCompareOp )
7887 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
7888 && ( stencilTestEnable == rhs.stencilTestEnable )
7889 && ( front == rhs.front )
7890 && ( back == rhs.back )
7891 && ( minDepthBounds == rhs.minDepthBounds )
7892 && ( maxDepthBounds == rhs.maxDepthBounds );
7893 }
7894
7895 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
7896 {
7897 return !operator==( rhs );
7898 }
7899
7900 private:
7901 StructureType sType;
7902
7903 public:
7904 const void* pNext;
7905 PipelineDepthStencilStateCreateFlags flags;
7906 Bool32 depthTestEnable;
7907 Bool32 depthWriteEnable;
7908 CompareOp depthCompareOp;
7909 Bool32 depthBoundsTestEnable;
7910 Bool32 stencilTestEnable;
7911 StencilOpState front;
7912 StencilOpState back;
7913 float minDepthBounds;
7914 float maxDepthBounds;
7915 };
7916 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
7917
7918 struct PipelineCacheCreateInfo
7919 {
7920 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
7921 : sType( StructureType::ePipelineCacheCreateInfo )
7922 , pNext( nullptr )
7923 , flags( flags_ )
7924 , initialDataSize( initialDataSize_ )
7925 , pInitialData( pInitialData_ )
7926 {
7927 }
7928
7929 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
7930 {
7931 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7932 }
7933
7934 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
7935 {
7936 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7937 return *this;
7938 }
7939
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007940 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
7941 {
7942 pNext = pNext_;
7943 return *this;
7944 }
7945
7946 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
7947 {
7948 flags = flags_;
7949 return *this;
7950 }
7951
7952 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
7953 {
7954 initialDataSize = initialDataSize_;
7955 return *this;
7956 }
7957
7958 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
7959 {
7960 pInitialData = pInitialData_;
7961 return *this;
7962 }
7963
7964 operator const VkPipelineCacheCreateInfo&() const
7965 {
7966 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
7967 }
7968
7969 bool operator==( PipelineCacheCreateInfo const& rhs ) const
7970 {
7971 return ( sType == rhs.sType )
7972 && ( pNext == rhs.pNext )
7973 && ( flags == rhs.flags )
7974 && ( initialDataSize == rhs.initialDataSize )
7975 && ( pInitialData == rhs.pInitialData );
7976 }
7977
7978 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
7979 {
7980 return !operator==( rhs );
7981 }
7982
7983 private:
7984 StructureType sType;
7985
7986 public:
7987 const void* pNext;
7988 PipelineCacheCreateFlags flags;
7989 size_t initialDataSize;
7990 const void* pInitialData;
7991 };
7992 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
7993
7994 struct SamplerCreateInfo
7995 {
7996 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 )
7997 : sType( StructureType::eSamplerCreateInfo )
7998 , pNext( nullptr )
7999 , flags( flags_ )
8000 , magFilter( magFilter_ )
8001 , minFilter( minFilter_ )
8002 , mipmapMode( mipmapMode_ )
8003 , addressModeU( addressModeU_ )
8004 , addressModeV( addressModeV_ )
8005 , addressModeW( addressModeW_ )
8006 , mipLodBias( mipLodBias_ )
8007 , anisotropyEnable( anisotropyEnable_ )
8008 , maxAnisotropy( maxAnisotropy_ )
8009 , compareEnable( compareEnable_ )
8010 , compareOp( compareOp_ )
8011 , minLod( minLod_ )
8012 , maxLod( maxLod_ )
8013 , borderColor( borderColor_ )
8014 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8015 {
8016 }
8017
8018 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8019 {
8020 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8021 }
8022
8023 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8024 {
8025 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8026 return *this;
8027 }
8028
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008029 SamplerCreateInfo& setPNext( const void* pNext_ )
8030 {
8031 pNext = pNext_;
8032 return *this;
8033 }
8034
8035 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8036 {
8037 flags = flags_;
8038 return *this;
8039 }
8040
8041 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8042 {
8043 magFilter = magFilter_;
8044 return *this;
8045 }
8046
8047 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8048 {
8049 minFilter = minFilter_;
8050 return *this;
8051 }
8052
8053 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8054 {
8055 mipmapMode = mipmapMode_;
8056 return *this;
8057 }
8058
8059 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8060 {
8061 addressModeU = addressModeU_;
8062 return *this;
8063 }
8064
8065 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8066 {
8067 addressModeV = addressModeV_;
8068 return *this;
8069 }
8070
8071 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8072 {
8073 addressModeW = addressModeW_;
8074 return *this;
8075 }
8076
8077 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8078 {
8079 mipLodBias = mipLodBias_;
8080 return *this;
8081 }
8082
8083 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8084 {
8085 anisotropyEnable = anisotropyEnable_;
8086 return *this;
8087 }
8088
8089 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8090 {
8091 maxAnisotropy = maxAnisotropy_;
8092 return *this;
8093 }
8094
8095 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8096 {
8097 compareEnable = compareEnable_;
8098 return *this;
8099 }
8100
8101 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8102 {
8103 compareOp = compareOp_;
8104 return *this;
8105 }
8106
8107 SamplerCreateInfo& setMinLod( float minLod_ )
8108 {
8109 minLod = minLod_;
8110 return *this;
8111 }
8112
8113 SamplerCreateInfo& setMaxLod( float maxLod_ )
8114 {
8115 maxLod = maxLod_;
8116 return *this;
8117 }
8118
8119 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8120 {
8121 borderColor = borderColor_;
8122 return *this;
8123 }
8124
8125 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8126 {
8127 unnormalizedCoordinates = unnormalizedCoordinates_;
8128 return *this;
8129 }
8130
8131 operator const VkSamplerCreateInfo&() const
8132 {
8133 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8134 }
8135
8136 bool operator==( SamplerCreateInfo const& rhs ) const
8137 {
8138 return ( sType == rhs.sType )
8139 && ( pNext == rhs.pNext )
8140 && ( flags == rhs.flags )
8141 && ( magFilter == rhs.magFilter )
8142 && ( minFilter == rhs.minFilter )
8143 && ( mipmapMode == rhs.mipmapMode )
8144 && ( addressModeU == rhs.addressModeU )
8145 && ( addressModeV == rhs.addressModeV )
8146 && ( addressModeW == rhs.addressModeW )
8147 && ( mipLodBias == rhs.mipLodBias )
8148 && ( anisotropyEnable == rhs.anisotropyEnable )
8149 && ( maxAnisotropy == rhs.maxAnisotropy )
8150 && ( compareEnable == rhs.compareEnable )
8151 && ( compareOp == rhs.compareOp )
8152 && ( minLod == rhs.minLod )
8153 && ( maxLod == rhs.maxLod )
8154 && ( borderColor == rhs.borderColor )
8155 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8156 }
8157
8158 bool operator!=( SamplerCreateInfo const& rhs ) const
8159 {
8160 return !operator==( rhs );
8161 }
8162
8163 private:
8164 StructureType sType;
8165
8166 public:
8167 const void* pNext;
8168 SamplerCreateFlags flags;
8169 Filter magFilter;
8170 Filter minFilter;
8171 SamplerMipmapMode mipmapMode;
8172 SamplerAddressMode addressModeU;
8173 SamplerAddressMode addressModeV;
8174 SamplerAddressMode addressModeW;
8175 float mipLodBias;
8176 Bool32 anisotropyEnable;
8177 float maxAnisotropy;
8178 Bool32 compareEnable;
8179 CompareOp compareOp;
8180 float minLod;
8181 float maxLod;
8182 BorderColor borderColor;
8183 Bool32 unnormalizedCoordinates;
8184 };
8185 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8186
8187 struct CommandBufferAllocateInfo
8188 {
8189 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8190 : sType( StructureType::eCommandBufferAllocateInfo )
8191 , pNext( nullptr )
8192 , commandPool( commandPool_ )
8193 , level( level_ )
8194 , commandBufferCount( commandBufferCount_ )
8195 {
8196 }
8197
8198 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8199 {
8200 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8201 }
8202
8203 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8204 {
8205 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8206 return *this;
8207 }
8208
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008209 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8210 {
8211 pNext = pNext_;
8212 return *this;
8213 }
8214
8215 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8216 {
8217 commandPool = commandPool_;
8218 return *this;
8219 }
8220
8221 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8222 {
8223 level = level_;
8224 return *this;
8225 }
8226
8227 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8228 {
8229 commandBufferCount = commandBufferCount_;
8230 return *this;
8231 }
8232
8233 operator const VkCommandBufferAllocateInfo&() const
8234 {
8235 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8236 }
8237
8238 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8239 {
8240 return ( sType == rhs.sType )
8241 && ( pNext == rhs.pNext )
8242 && ( commandPool == rhs.commandPool )
8243 && ( level == rhs.level )
8244 && ( commandBufferCount == rhs.commandBufferCount );
8245 }
8246
8247 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8248 {
8249 return !operator==( rhs );
8250 }
8251
8252 private:
8253 StructureType sType;
8254
8255 public:
8256 const void* pNext;
8257 CommandPool commandPool;
8258 CommandBufferLevel level;
8259 uint32_t commandBufferCount;
8260 };
8261 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8262
8263 struct RenderPassBeginInfo
8264 {
8265 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8266 : sType( StructureType::eRenderPassBeginInfo )
8267 , pNext( nullptr )
8268 , renderPass( renderPass_ )
8269 , framebuffer( framebuffer_ )
8270 , renderArea( renderArea_ )
8271 , clearValueCount( clearValueCount_ )
8272 , pClearValues( pClearValues_ )
8273 {
8274 }
8275
8276 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8277 {
8278 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8279 }
8280
8281 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8282 {
8283 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8284 return *this;
8285 }
8286
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008287 RenderPassBeginInfo& setPNext( const void* pNext_ )
8288 {
8289 pNext = pNext_;
8290 return *this;
8291 }
8292
8293 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8294 {
8295 renderPass = renderPass_;
8296 return *this;
8297 }
8298
8299 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8300 {
8301 framebuffer = framebuffer_;
8302 return *this;
8303 }
8304
8305 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8306 {
8307 renderArea = renderArea_;
8308 return *this;
8309 }
8310
8311 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8312 {
8313 clearValueCount = clearValueCount_;
8314 return *this;
8315 }
8316
8317 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8318 {
8319 pClearValues = pClearValues_;
8320 return *this;
8321 }
8322
8323 operator const VkRenderPassBeginInfo&() const
8324 {
8325 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8326 }
8327
8328 bool operator==( RenderPassBeginInfo const& rhs ) const
8329 {
8330 return ( sType == rhs.sType )
8331 && ( pNext == rhs.pNext )
8332 && ( renderPass == rhs.renderPass )
8333 && ( framebuffer == rhs.framebuffer )
8334 && ( renderArea == rhs.renderArea )
8335 && ( clearValueCount == rhs.clearValueCount )
8336 && ( pClearValues == rhs.pClearValues );
8337 }
8338
8339 bool operator!=( RenderPassBeginInfo const& rhs ) const
8340 {
8341 return !operator==( rhs );
8342 }
8343
8344 private:
8345 StructureType sType;
8346
8347 public:
8348 const void* pNext;
8349 RenderPass renderPass;
8350 Framebuffer framebuffer;
8351 Rect2D renderArea;
8352 uint32_t clearValueCount;
8353 const ClearValue* pClearValues;
8354 };
8355 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8356
8357 struct EventCreateInfo
8358 {
8359 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8360 : sType( StructureType::eEventCreateInfo )
8361 , pNext( nullptr )
8362 , flags( flags_ )
8363 {
8364 }
8365
8366 EventCreateInfo( VkEventCreateInfo const & rhs )
8367 {
8368 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8369 }
8370
8371 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8372 {
8373 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8374 return *this;
8375 }
8376
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008377 EventCreateInfo& setPNext( const void* pNext_ )
8378 {
8379 pNext = pNext_;
8380 return *this;
8381 }
8382
8383 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8384 {
8385 flags = flags_;
8386 return *this;
8387 }
8388
8389 operator const VkEventCreateInfo&() const
8390 {
8391 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8392 }
8393
8394 bool operator==( EventCreateInfo const& rhs ) const
8395 {
8396 return ( sType == rhs.sType )
8397 && ( pNext == rhs.pNext )
8398 && ( flags == rhs.flags );
8399 }
8400
8401 bool operator!=( EventCreateInfo const& rhs ) const
8402 {
8403 return !operator==( rhs );
8404 }
8405
8406 private:
8407 StructureType sType;
8408
8409 public:
8410 const void* pNext;
8411 EventCreateFlags flags;
8412 };
8413 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8414
8415 struct SemaphoreCreateInfo
8416 {
8417 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8418 : sType( StructureType::eSemaphoreCreateInfo )
8419 , pNext( nullptr )
8420 , flags( flags_ )
8421 {
8422 }
8423
8424 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8425 {
8426 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8427 }
8428
8429 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8430 {
8431 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8432 return *this;
8433 }
8434
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008435 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8436 {
8437 pNext = pNext_;
8438 return *this;
8439 }
8440
8441 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8442 {
8443 flags = flags_;
8444 return *this;
8445 }
8446
8447 operator const VkSemaphoreCreateInfo&() const
8448 {
8449 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8450 }
8451
8452 bool operator==( SemaphoreCreateInfo const& rhs ) const
8453 {
8454 return ( sType == rhs.sType )
8455 && ( pNext == rhs.pNext )
8456 && ( flags == rhs.flags );
8457 }
8458
8459 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8460 {
8461 return !operator==( rhs );
8462 }
8463
8464 private:
8465 StructureType sType;
8466
8467 public:
8468 const void* pNext;
8469 SemaphoreCreateFlags flags;
8470 };
8471 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8472
8473 struct FramebufferCreateInfo
8474 {
8475 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 )
8476 : sType( StructureType::eFramebufferCreateInfo )
8477 , pNext( nullptr )
8478 , flags( flags_ )
8479 , renderPass( renderPass_ )
8480 , attachmentCount( attachmentCount_ )
8481 , pAttachments( pAttachments_ )
8482 , width( width_ )
8483 , height( height_ )
8484 , layers( layers_ )
8485 {
8486 }
8487
8488 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8489 {
8490 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8491 }
8492
8493 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8494 {
8495 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8496 return *this;
8497 }
8498
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008499 FramebufferCreateInfo& setPNext( const void* pNext_ )
8500 {
8501 pNext = pNext_;
8502 return *this;
8503 }
8504
8505 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8506 {
8507 flags = flags_;
8508 return *this;
8509 }
8510
8511 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8512 {
8513 renderPass = renderPass_;
8514 return *this;
8515 }
8516
8517 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8518 {
8519 attachmentCount = attachmentCount_;
8520 return *this;
8521 }
8522
8523 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8524 {
8525 pAttachments = pAttachments_;
8526 return *this;
8527 }
8528
8529 FramebufferCreateInfo& setWidth( uint32_t width_ )
8530 {
8531 width = width_;
8532 return *this;
8533 }
8534
8535 FramebufferCreateInfo& setHeight( uint32_t height_ )
8536 {
8537 height = height_;
8538 return *this;
8539 }
8540
8541 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8542 {
8543 layers = layers_;
8544 return *this;
8545 }
8546
8547 operator const VkFramebufferCreateInfo&() const
8548 {
8549 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8550 }
8551
8552 bool operator==( FramebufferCreateInfo const& rhs ) const
8553 {
8554 return ( sType == rhs.sType )
8555 && ( pNext == rhs.pNext )
8556 && ( flags == rhs.flags )
8557 && ( renderPass == rhs.renderPass )
8558 && ( attachmentCount == rhs.attachmentCount )
8559 && ( pAttachments == rhs.pAttachments )
8560 && ( width == rhs.width )
8561 && ( height == rhs.height )
8562 && ( layers == rhs.layers );
8563 }
8564
8565 bool operator!=( FramebufferCreateInfo const& rhs ) const
8566 {
8567 return !operator==( rhs );
8568 }
8569
8570 private:
8571 StructureType sType;
8572
8573 public:
8574 const void* pNext;
8575 FramebufferCreateFlags flags;
8576 RenderPass renderPass;
8577 uint32_t attachmentCount;
8578 const ImageView* pAttachments;
8579 uint32_t width;
8580 uint32_t height;
8581 uint32_t layers;
8582 };
8583 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8584
8585 struct DisplayModeCreateInfoKHR
8586 {
8587 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8588 : sType( StructureType::eDisplayModeCreateInfoKHR )
8589 , pNext( nullptr )
8590 , flags( flags_ )
8591 , parameters( parameters_ )
8592 {
8593 }
8594
8595 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8596 {
8597 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8598 }
8599
8600 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8601 {
8602 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8603 return *this;
8604 }
8605
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008606 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8607 {
8608 pNext = pNext_;
8609 return *this;
8610 }
8611
8612 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8613 {
8614 flags = flags_;
8615 return *this;
8616 }
8617
8618 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8619 {
8620 parameters = parameters_;
8621 return *this;
8622 }
8623
8624 operator const VkDisplayModeCreateInfoKHR&() const
8625 {
8626 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8627 }
8628
8629 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8630 {
8631 return ( sType == rhs.sType )
8632 && ( pNext == rhs.pNext )
8633 && ( flags == rhs.flags )
8634 && ( parameters == rhs.parameters );
8635 }
8636
8637 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8638 {
8639 return !operator==( rhs );
8640 }
8641
8642 private:
8643 StructureType sType;
8644
8645 public:
8646 const void* pNext;
8647 DisplayModeCreateFlagsKHR flags;
8648 DisplayModeParametersKHR parameters;
8649 };
8650 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8651
8652 struct DisplayPresentInfoKHR
8653 {
8654 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8655 : sType( StructureType::eDisplayPresentInfoKHR )
8656 , pNext( nullptr )
8657 , srcRect( srcRect_ )
8658 , dstRect( dstRect_ )
8659 , persistent( persistent_ )
8660 {
8661 }
8662
8663 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8664 {
8665 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8666 }
8667
8668 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8669 {
8670 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8671 return *this;
8672 }
8673
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008674 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8675 {
8676 pNext = pNext_;
8677 return *this;
8678 }
8679
8680 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8681 {
8682 srcRect = srcRect_;
8683 return *this;
8684 }
8685
8686 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8687 {
8688 dstRect = dstRect_;
8689 return *this;
8690 }
8691
8692 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8693 {
8694 persistent = persistent_;
8695 return *this;
8696 }
8697
8698 operator const VkDisplayPresentInfoKHR&() const
8699 {
8700 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8701 }
8702
8703 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8704 {
8705 return ( sType == rhs.sType )
8706 && ( pNext == rhs.pNext )
8707 && ( srcRect == rhs.srcRect )
8708 && ( dstRect == rhs.dstRect )
8709 && ( persistent == rhs.persistent );
8710 }
8711
8712 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8713 {
8714 return !operator==( rhs );
8715 }
8716
8717 private:
8718 StructureType sType;
8719
8720 public:
8721 const void* pNext;
8722 Rect2D srcRect;
8723 Rect2D dstRect;
8724 Bool32 persistent;
8725 };
8726 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8727
8728#ifdef VK_USE_PLATFORM_ANDROID_KHR
8729 struct AndroidSurfaceCreateInfoKHR
8730 {
8731 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8732 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8733 , pNext( nullptr )
8734 , flags( flags_ )
8735 , window( window_ )
8736 {
8737 }
8738
8739 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8740 {
8741 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8742 }
8743
8744 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8745 {
8746 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8747 return *this;
8748 }
8749
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008750 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8751 {
8752 pNext = pNext_;
8753 return *this;
8754 }
8755
8756 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8757 {
8758 flags = flags_;
8759 return *this;
8760 }
8761
8762 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8763 {
8764 window = window_;
8765 return *this;
8766 }
8767
8768 operator const VkAndroidSurfaceCreateInfoKHR&() const
8769 {
8770 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8771 }
8772
8773 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8774 {
8775 return ( sType == rhs.sType )
8776 && ( pNext == rhs.pNext )
8777 && ( flags == rhs.flags )
8778 && ( window == rhs.window );
8779 }
8780
8781 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8782 {
8783 return !operator==( rhs );
8784 }
8785
8786 private:
8787 StructureType sType;
8788
8789 public:
8790 const void* pNext;
8791 AndroidSurfaceCreateFlagsKHR flags;
8792 ANativeWindow* window;
8793 };
8794 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8795#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8796
8797#ifdef VK_USE_PLATFORM_MIR_KHR
8798 struct MirSurfaceCreateInfoKHR
8799 {
8800 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8801 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8802 , pNext( nullptr )
8803 , flags( flags_ )
8804 , connection( connection_ )
8805 , mirSurface( mirSurface_ )
8806 {
8807 }
8808
8809 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8810 {
8811 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8812 }
8813
8814 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8815 {
8816 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8817 return *this;
8818 }
8819
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008820 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8821 {
8822 pNext = pNext_;
8823 return *this;
8824 }
8825
8826 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8827 {
8828 flags = flags_;
8829 return *this;
8830 }
8831
8832 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8833 {
8834 connection = connection_;
8835 return *this;
8836 }
8837
8838 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8839 {
8840 mirSurface = mirSurface_;
8841 return *this;
8842 }
8843
8844 operator const VkMirSurfaceCreateInfoKHR&() const
8845 {
8846 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8847 }
8848
8849 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8850 {
8851 return ( sType == rhs.sType )
8852 && ( pNext == rhs.pNext )
8853 && ( flags == rhs.flags )
8854 && ( connection == rhs.connection )
8855 && ( mirSurface == rhs.mirSurface );
8856 }
8857
8858 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8859 {
8860 return !operator==( rhs );
8861 }
8862
8863 private:
8864 StructureType sType;
8865
8866 public:
8867 const void* pNext;
8868 MirSurfaceCreateFlagsKHR flags;
8869 MirConnection* connection;
8870 MirSurface* mirSurface;
8871 };
8872 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8873#endif /*VK_USE_PLATFORM_MIR_KHR*/
8874
Mark Young39389872017-01-19 21:10:49 -07008875#ifdef VK_USE_PLATFORM_VI_NN
8876 struct ViSurfaceCreateInfoNN
8877 {
8878 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8879 : sType( StructureType::eViSurfaceCreateInfoNN )
8880 , pNext( nullptr )
8881 , flags( flags_ )
8882 , window( window_ )
8883 {
8884 }
8885
8886 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
8887 {
8888 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8889 }
8890
8891 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
8892 {
8893 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8894 return *this;
8895 }
8896
Mark Young39389872017-01-19 21:10:49 -07008897 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
8898 {
8899 pNext = pNext_;
8900 return *this;
8901 }
8902
8903 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
8904 {
8905 flags = flags_;
8906 return *this;
8907 }
8908
8909 ViSurfaceCreateInfoNN& setWindow( void* window_ )
8910 {
8911 window = window_;
8912 return *this;
8913 }
8914
8915 operator const VkViSurfaceCreateInfoNN&() const
8916 {
8917 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
8918 }
8919
8920 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
8921 {
8922 return ( sType == rhs.sType )
8923 && ( pNext == rhs.pNext )
8924 && ( flags == rhs.flags )
8925 && ( window == rhs.window );
8926 }
8927
8928 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
8929 {
8930 return !operator==( rhs );
8931 }
8932
8933 private:
8934 StructureType sType;
8935
8936 public:
8937 const void* pNext;
8938 ViSurfaceCreateFlagsNN flags;
8939 void* window;
8940 };
8941 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
8942#endif /*VK_USE_PLATFORM_VI_NN*/
8943
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008944#ifdef VK_USE_PLATFORM_WAYLAND_KHR
8945 struct WaylandSurfaceCreateInfoKHR
8946 {
8947 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
8948 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
8949 , pNext( nullptr )
8950 , flags( flags_ )
8951 , display( display_ )
8952 , surface( surface_ )
8953 {
8954 }
8955
8956 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
8957 {
8958 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8959 }
8960
8961 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
8962 {
8963 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8964 return *this;
8965 }
8966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008967 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8968 {
8969 pNext = pNext_;
8970 return *this;
8971 }
8972
8973 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
8974 {
8975 flags = flags_;
8976 return *this;
8977 }
8978
8979 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
8980 {
8981 display = display_;
8982 return *this;
8983 }
8984
8985 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
8986 {
8987 surface = surface_;
8988 return *this;
8989 }
8990
8991 operator const VkWaylandSurfaceCreateInfoKHR&() const
8992 {
8993 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
8994 }
8995
8996 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
8997 {
8998 return ( sType == rhs.sType )
8999 && ( pNext == rhs.pNext )
9000 && ( flags == rhs.flags )
9001 && ( display == rhs.display )
9002 && ( surface == rhs.surface );
9003 }
9004
9005 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9006 {
9007 return !operator==( rhs );
9008 }
9009
9010 private:
9011 StructureType sType;
9012
9013 public:
9014 const void* pNext;
9015 WaylandSurfaceCreateFlagsKHR flags;
9016 struct wl_display* display;
9017 struct wl_surface* surface;
9018 };
9019 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9020#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9021
9022#ifdef VK_USE_PLATFORM_WIN32_KHR
9023 struct Win32SurfaceCreateInfoKHR
9024 {
9025 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9026 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9027 , pNext( nullptr )
9028 , flags( flags_ )
9029 , hinstance( hinstance_ )
9030 , hwnd( hwnd_ )
9031 {
9032 }
9033
9034 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9035 {
9036 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9037 }
9038
9039 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9040 {
9041 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9042 return *this;
9043 }
9044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009045 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9046 {
9047 pNext = pNext_;
9048 return *this;
9049 }
9050
9051 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9052 {
9053 flags = flags_;
9054 return *this;
9055 }
9056
9057 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9058 {
9059 hinstance = hinstance_;
9060 return *this;
9061 }
9062
9063 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9064 {
9065 hwnd = hwnd_;
9066 return *this;
9067 }
9068
9069 operator const VkWin32SurfaceCreateInfoKHR&() const
9070 {
9071 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9072 }
9073
9074 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9075 {
9076 return ( sType == rhs.sType )
9077 && ( pNext == rhs.pNext )
9078 && ( flags == rhs.flags )
9079 && ( hinstance == rhs.hinstance )
9080 && ( hwnd == rhs.hwnd );
9081 }
9082
9083 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9084 {
9085 return !operator==( rhs );
9086 }
9087
9088 private:
9089 StructureType sType;
9090
9091 public:
9092 const void* pNext;
9093 Win32SurfaceCreateFlagsKHR flags;
9094 HINSTANCE hinstance;
9095 HWND hwnd;
9096 };
9097 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9098#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9099
9100#ifdef VK_USE_PLATFORM_XLIB_KHR
9101 struct XlibSurfaceCreateInfoKHR
9102 {
9103 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9104 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9105 , pNext( nullptr )
9106 , flags( flags_ )
9107 , dpy( dpy_ )
9108 , window( window_ )
9109 {
9110 }
9111
9112 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9113 {
9114 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9115 }
9116
9117 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9118 {
9119 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9120 return *this;
9121 }
9122
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009123 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9124 {
9125 pNext = pNext_;
9126 return *this;
9127 }
9128
9129 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9130 {
9131 flags = flags_;
9132 return *this;
9133 }
9134
9135 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9136 {
9137 dpy = dpy_;
9138 return *this;
9139 }
9140
9141 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9142 {
9143 window = window_;
9144 return *this;
9145 }
9146
9147 operator const VkXlibSurfaceCreateInfoKHR&() const
9148 {
9149 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9150 }
9151
9152 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9153 {
9154 return ( sType == rhs.sType )
9155 && ( pNext == rhs.pNext )
9156 && ( flags == rhs.flags )
9157 && ( dpy == rhs.dpy )
9158 && ( window == rhs.window );
9159 }
9160
9161 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9162 {
9163 return !operator==( rhs );
9164 }
9165
9166 private:
9167 StructureType sType;
9168
9169 public:
9170 const void* pNext;
9171 XlibSurfaceCreateFlagsKHR flags;
9172 Display* dpy;
9173 Window window;
9174 };
9175 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9176#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9177
9178#ifdef VK_USE_PLATFORM_XCB_KHR
9179 struct XcbSurfaceCreateInfoKHR
9180 {
9181 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9182 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9183 , pNext( nullptr )
9184 , flags( flags_ )
9185 , connection( connection_ )
9186 , window( window_ )
9187 {
9188 }
9189
9190 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9191 {
9192 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9193 }
9194
9195 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9196 {
9197 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9198 return *this;
9199 }
9200
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009201 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9202 {
9203 pNext = pNext_;
9204 return *this;
9205 }
9206
9207 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9208 {
9209 flags = flags_;
9210 return *this;
9211 }
9212
9213 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9214 {
9215 connection = connection_;
9216 return *this;
9217 }
9218
9219 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9220 {
9221 window = window_;
9222 return *this;
9223 }
9224
9225 operator const VkXcbSurfaceCreateInfoKHR&() const
9226 {
9227 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9228 }
9229
9230 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9231 {
9232 return ( sType == rhs.sType )
9233 && ( pNext == rhs.pNext )
9234 && ( flags == rhs.flags )
9235 && ( connection == rhs.connection )
9236 && ( window == rhs.window );
9237 }
9238
9239 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9240 {
9241 return !operator==( rhs );
9242 }
9243
9244 private:
9245 StructureType sType;
9246
9247 public:
9248 const void* pNext;
9249 XcbSurfaceCreateFlagsKHR flags;
9250 xcb_connection_t* connection;
9251 xcb_window_t window;
9252 };
9253 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9254#endif /*VK_USE_PLATFORM_XCB_KHR*/
9255
9256 struct DebugMarkerMarkerInfoEXT
9257 {
9258 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9259 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9260 , pNext( nullptr )
9261 , pMarkerName( pMarkerName_ )
9262 {
9263 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9264 }
9265
9266 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9267 {
9268 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9269 }
9270
9271 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9272 {
9273 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9274 return *this;
9275 }
9276
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009277 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9278 {
9279 pNext = pNext_;
9280 return *this;
9281 }
9282
9283 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9284 {
9285 pMarkerName = pMarkerName_;
9286 return *this;
9287 }
9288
9289 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9290 {
9291 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9292 return *this;
9293 }
9294
9295 operator const VkDebugMarkerMarkerInfoEXT&() const
9296 {
9297 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9298 }
9299
9300 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9301 {
9302 return ( sType == rhs.sType )
9303 && ( pNext == rhs.pNext )
9304 && ( pMarkerName == rhs.pMarkerName )
9305 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9306 }
9307
9308 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9309 {
9310 return !operator==( rhs );
9311 }
9312
9313 private:
9314 StructureType sType;
9315
9316 public:
9317 const void* pNext;
9318 const char* pMarkerName;
9319 float color[4];
9320 };
9321 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9322
9323 struct DedicatedAllocationImageCreateInfoNV
9324 {
9325 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9326 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9327 , pNext( nullptr )
9328 , dedicatedAllocation( dedicatedAllocation_ )
9329 {
9330 }
9331
9332 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9333 {
9334 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9335 }
9336
9337 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9338 {
9339 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9340 return *this;
9341 }
9342
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009343 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9344 {
9345 pNext = pNext_;
9346 return *this;
9347 }
9348
9349 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9350 {
9351 dedicatedAllocation = dedicatedAllocation_;
9352 return *this;
9353 }
9354
9355 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9356 {
9357 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9358 }
9359
9360 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9361 {
9362 return ( sType == rhs.sType )
9363 && ( pNext == rhs.pNext )
9364 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9365 }
9366
9367 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9368 {
9369 return !operator==( rhs );
9370 }
9371
9372 private:
9373 StructureType sType;
9374
9375 public:
9376 const void* pNext;
9377 Bool32 dedicatedAllocation;
9378 };
9379 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9380
9381 struct DedicatedAllocationBufferCreateInfoNV
9382 {
9383 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9384 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9385 , pNext( nullptr )
9386 , dedicatedAllocation( dedicatedAllocation_ )
9387 {
9388 }
9389
9390 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9391 {
9392 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9393 }
9394
9395 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9396 {
9397 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9398 return *this;
9399 }
9400
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009401 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9402 {
9403 pNext = pNext_;
9404 return *this;
9405 }
9406
9407 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9408 {
9409 dedicatedAllocation = dedicatedAllocation_;
9410 return *this;
9411 }
9412
9413 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9414 {
9415 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9416 }
9417
9418 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9419 {
9420 return ( sType == rhs.sType )
9421 && ( pNext == rhs.pNext )
9422 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9423 }
9424
9425 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9426 {
9427 return !operator==( rhs );
9428 }
9429
9430 private:
9431 StructureType sType;
9432
9433 public:
9434 const void* pNext;
9435 Bool32 dedicatedAllocation;
9436 };
9437 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9438
9439 struct DedicatedAllocationMemoryAllocateInfoNV
9440 {
9441 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9442 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9443 , pNext( nullptr )
9444 , image( image_ )
9445 , buffer( buffer_ )
9446 {
9447 }
9448
9449 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9450 {
9451 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9452 }
9453
9454 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9455 {
9456 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9457 return *this;
9458 }
9459
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009460 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9461 {
9462 pNext = pNext_;
9463 return *this;
9464 }
9465
9466 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9467 {
9468 image = image_;
9469 return *this;
9470 }
9471
9472 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9473 {
9474 buffer = buffer_;
9475 return *this;
9476 }
9477
9478 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9479 {
9480 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9481 }
9482
9483 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9484 {
9485 return ( sType == rhs.sType )
9486 && ( pNext == rhs.pNext )
9487 && ( image == rhs.image )
9488 && ( buffer == rhs.buffer );
9489 }
9490
9491 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9492 {
9493 return !operator==( rhs );
9494 }
9495
9496 private:
9497 StructureType sType;
9498
9499 public:
9500 const void* pNext;
9501 Image image;
9502 Buffer buffer;
9503 };
9504 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9505
Lenny Komow6501c122016-08-31 15:03:49 -06009506#ifdef VK_USE_PLATFORM_WIN32_KHR
9507 struct ExportMemoryWin32HandleInfoNV
9508 {
9509 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9510 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9511 , pNext( nullptr )
9512 , pAttributes( pAttributes_ )
9513 , dwAccess( dwAccess_ )
9514 {
9515 }
9516
9517 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9518 {
9519 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9520 }
9521
9522 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9523 {
9524 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9525 return *this;
9526 }
9527
Lenny Komow6501c122016-08-31 15:03:49 -06009528 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9529 {
9530 pNext = pNext_;
9531 return *this;
9532 }
9533
9534 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9535 {
9536 pAttributes = pAttributes_;
9537 return *this;
9538 }
9539
9540 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9541 {
9542 dwAccess = dwAccess_;
9543 return *this;
9544 }
9545
9546 operator const VkExportMemoryWin32HandleInfoNV&() const
9547 {
9548 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9549 }
9550
9551 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9552 {
9553 return ( sType == rhs.sType )
9554 && ( pNext == rhs.pNext )
9555 && ( pAttributes == rhs.pAttributes )
9556 && ( dwAccess == rhs.dwAccess );
9557 }
9558
9559 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9560 {
9561 return !operator==( rhs );
9562 }
9563
9564 private:
9565 StructureType sType;
9566
9567 public:
9568 const void* pNext;
9569 const SECURITY_ATTRIBUTES* pAttributes;
9570 DWORD dwAccess;
9571 };
9572 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9573#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9574
9575#ifdef VK_USE_PLATFORM_WIN32_KHR
9576 struct Win32KeyedMutexAcquireReleaseInfoNV
9577 {
9578 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 )
9579 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9580 , pNext( nullptr )
9581 , acquireCount( acquireCount_ )
9582 , pAcquireSyncs( pAcquireSyncs_ )
9583 , pAcquireKeys( pAcquireKeys_ )
9584 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9585 , releaseCount( releaseCount_ )
9586 , pReleaseSyncs( pReleaseSyncs_ )
9587 , pReleaseKeys( pReleaseKeys_ )
9588 {
9589 }
9590
9591 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9592 {
9593 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9594 }
9595
9596 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9597 {
9598 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9599 return *this;
9600 }
9601
Lenny Komow6501c122016-08-31 15:03:49 -06009602 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9603 {
9604 pNext = pNext_;
9605 return *this;
9606 }
9607
9608 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9609 {
9610 acquireCount = acquireCount_;
9611 return *this;
9612 }
9613
9614 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9615 {
9616 pAcquireSyncs = pAcquireSyncs_;
9617 return *this;
9618 }
9619
9620 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9621 {
9622 pAcquireKeys = pAcquireKeys_;
9623 return *this;
9624 }
9625
9626 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9627 {
9628 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9629 return *this;
9630 }
9631
9632 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9633 {
9634 releaseCount = releaseCount_;
9635 return *this;
9636 }
9637
9638 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9639 {
9640 pReleaseSyncs = pReleaseSyncs_;
9641 return *this;
9642 }
9643
9644 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9645 {
9646 pReleaseKeys = pReleaseKeys_;
9647 return *this;
9648 }
9649
9650 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9651 {
9652 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9653 }
9654
9655 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9656 {
9657 return ( sType == rhs.sType )
9658 && ( pNext == rhs.pNext )
9659 && ( acquireCount == rhs.acquireCount )
9660 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9661 && ( pAcquireKeys == rhs.pAcquireKeys )
9662 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9663 && ( releaseCount == rhs.releaseCount )
9664 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9665 && ( pReleaseKeys == rhs.pReleaseKeys );
9666 }
9667
9668 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9669 {
9670 return !operator==( rhs );
9671 }
9672
9673 private:
9674 StructureType sType;
9675
9676 public:
9677 const void* pNext;
9678 uint32_t acquireCount;
9679 const DeviceMemory* pAcquireSyncs;
9680 const uint64_t* pAcquireKeys;
9681 const uint32_t* pAcquireTimeoutMilliseconds;
9682 uint32_t releaseCount;
9683 const DeviceMemory* pReleaseSyncs;
9684 const uint64_t* pReleaseKeys;
9685 };
9686 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9687#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9688
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009689 struct DeviceGeneratedCommandsFeaturesNVX
9690 {
9691 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9692 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9693 , pNext( nullptr )
9694 , computeBindingPointSupport( computeBindingPointSupport_ )
9695 {
9696 }
9697
9698 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9699 {
9700 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9701 }
9702
9703 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9704 {
9705 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9706 return *this;
9707 }
9708
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009709 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9710 {
9711 pNext = pNext_;
9712 return *this;
9713 }
9714
9715 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9716 {
9717 computeBindingPointSupport = computeBindingPointSupport_;
9718 return *this;
9719 }
9720
9721 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9722 {
9723 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9724 }
9725
9726 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9727 {
9728 return ( sType == rhs.sType )
9729 && ( pNext == rhs.pNext )
9730 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9731 }
9732
9733 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9734 {
9735 return !operator==( rhs );
9736 }
9737
9738 private:
9739 StructureType sType;
9740
9741 public:
9742 const void* pNext;
9743 Bool32 computeBindingPointSupport;
9744 };
9745 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9746
9747 struct DeviceGeneratedCommandsLimitsNVX
9748 {
9749 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9750 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9751 , pNext( nullptr )
9752 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9753 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9754 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9755 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9756 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9757 {
9758 }
9759
9760 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9761 {
9762 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9763 }
9764
9765 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9766 {
9767 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9768 return *this;
9769 }
9770
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009771 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9772 {
9773 pNext = pNext_;
9774 return *this;
9775 }
9776
9777 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9778 {
9779 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9780 return *this;
9781 }
9782
9783 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9784 {
9785 maxObjectEntryCounts = maxObjectEntryCounts_;
9786 return *this;
9787 }
9788
9789 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9790 {
9791 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9792 return *this;
9793 }
9794
9795 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9796 {
9797 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9798 return *this;
9799 }
9800
9801 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9802 {
9803 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9804 return *this;
9805 }
9806
9807 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9808 {
9809 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9810 }
9811
9812 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9813 {
9814 return ( sType == rhs.sType )
9815 && ( pNext == rhs.pNext )
9816 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9817 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9818 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9819 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9820 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9821 }
9822
9823 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9824 {
9825 return !operator==( rhs );
9826 }
9827
9828 private:
9829 StructureType sType;
9830
9831 public:
9832 const void* pNext;
9833 uint32_t maxIndirectCommandsLayoutTokenCount;
9834 uint32_t maxObjectEntryCounts;
9835 uint32_t minSequenceCountBufferOffsetAlignment;
9836 uint32_t minSequenceIndexBufferOffsetAlignment;
9837 uint32_t minCommandsTokenBufferOffsetAlignment;
9838 };
9839 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9840
9841 struct CmdReserveSpaceForCommandsInfoNVX
9842 {
9843 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9844 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9845 , pNext( nullptr )
9846 , objectTable( objectTable_ )
9847 , indirectCommandsLayout( indirectCommandsLayout_ )
9848 , maxSequencesCount( maxSequencesCount_ )
9849 {
9850 }
9851
9852 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9853 {
9854 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9855 }
9856
9857 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9858 {
9859 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9860 return *this;
9861 }
9862
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009863 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9864 {
9865 pNext = pNext_;
9866 return *this;
9867 }
9868
9869 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9870 {
9871 objectTable = objectTable_;
9872 return *this;
9873 }
9874
9875 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9876 {
9877 indirectCommandsLayout = indirectCommandsLayout_;
9878 return *this;
9879 }
9880
9881 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9882 {
9883 maxSequencesCount = maxSequencesCount_;
9884 return *this;
9885 }
9886
9887 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
9888 {
9889 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
9890 }
9891
9892 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9893 {
9894 return ( sType == rhs.sType )
9895 && ( pNext == rhs.pNext )
9896 && ( objectTable == rhs.objectTable )
9897 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
9898 && ( maxSequencesCount == rhs.maxSequencesCount );
9899 }
9900
9901 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9902 {
9903 return !operator==( rhs );
9904 }
9905
9906 private:
9907 StructureType sType;
9908
9909 public:
9910 const void* pNext;
9911 ObjectTableNVX objectTable;
9912 IndirectCommandsLayoutNVX indirectCommandsLayout;
9913 uint32_t maxSequencesCount;
9914 };
9915 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
9916
Mark Young39389872017-01-19 21:10:49 -07009917 struct PhysicalDeviceFeatures2KHR
9918 {
9919 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
9920 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
9921 , pNext( nullptr )
9922 , features( features_ )
9923 {
9924 }
9925
9926 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
9927 {
9928 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9929 }
9930
9931 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
9932 {
9933 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9934 return *this;
9935 }
9936
Mark Young39389872017-01-19 21:10:49 -07009937 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
9938 {
9939 pNext = pNext_;
9940 return *this;
9941 }
9942
9943 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
9944 {
9945 features = features_;
9946 return *this;
9947 }
9948
9949 operator const VkPhysicalDeviceFeatures2KHR&() const
9950 {
9951 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
9952 }
9953
9954 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
9955 {
9956 return ( sType == rhs.sType )
9957 && ( pNext == rhs.pNext )
9958 && ( features == rhs.features );
9959 }
9960
9961 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
9962 {
9963 return !operator==( rhs );
9964 }
9965
9966 private:
9967 StructureType sType;
9968
9969 public:
9970 void* pNext;
9971 PhysicalDeviceFeatures features;
9972 };
9973 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
9974
Mark Young0f183a82017-02-28 09:58:04 -07009975 struct PhysicalDevicePushDescriptorPropertiesKHR
9976 {
9977 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
9978 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
9979 , pNext( nullptr )
9980 , maxPushDescriptors( maxPushDescriptors_ )
9981 {
9982 }
9983
9984 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9985 {
9986 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9987 }
9988
9989 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9990 {
9991 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9992 return *this;
9993 }
9994
9995 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
9996 {
9997 pNext = pNext_;
9998 return *this;
9999 }
10000
10001 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10002 {
10003 maxPushDescriptors = maxPushDescriptors_;
10004 return *this;
10005 }
10006
10007 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10008 {
10009 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10010 }
10011
10012 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10013 {
10014 return ( sType == rhs.sType )
10015 && ( pNext == rhs.pNext )
10016 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10017 }
10018
10019 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10020 {
10021 return !operator==( rhs );
10022 }
10023
10024 private:
10025 StructureType sType;
10026
10027 public:
10028 void* pNext;
10029 uint32_t maxPushDescriptors;
10030 };
10031 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10032
10033 struct PhysicalDeviceIDPropertiesKHX
10034 {
10035 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10036 {
10037 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10038 }
10039
10040 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10041 {
10042 return ( sType == rhs.sType )
10043 && ( pNext == rhs.pNext )
10044 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10045 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10046 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10047 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10048 }
10049
10050 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10051 {
10052 return !operator==( rhs );
10053 }
10054
10055 private:
10056 StructureType sType;
10057
10058 public:
10059 void* pNext;
10060 uint8_t deviceUUID[VK_UUID_SIZE];
10061 uint8_t driverUUID[VK_UUID_SIZE];
10062 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10063 Bool32 deviceLUIDValid;
10064 };
10065 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10066
10067#ifdef VK_USE_PLATFORM_WIN32_KHR
10068 struct ExportMemoryWin32HandleInfoKHX
10069 {
10070 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10071 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10072 , pNext( nullptr )
10073 , pAttributes( pAttributes_ )
10074 , dwAccess( dwAccess_ )
10075 , name( name_ )
10076 {
10077 }
10078
10079 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10080 {
10081 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10082 }
10083
10084 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10085 {
10086 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10087 return *this;
10088 }
10089
10090 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10091 {
10092 pNext = pNext_;
10093 return *this;
10094 }
10095
10096 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10097 {
10098 pAttributes = pAttributes_;
10099 return *this;
10100 }
10101
10102 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10103 {
10104 dwAccess = dwAccess_;
10105 return *this;
10106 }
10107
10108 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10109 {
10110 name = name_;
10111 return *this;
10112 }
10113
10114 operator const VkExportMemoryWin32HandleInfoKHX&() const
10115 {
10116 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10117 }
10118
10119 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10120 {
10121 return ( sType == rhs.sType )
10122 && ( pNext == rhs.pNext )
10123 && ( pAttributes == rhs.pAttributes )
10124 && ( dwAccess == rhs.dwAccess )
10125 && ( name == rhs.name );
10126 }
10127
10128 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10129 {
10130 return !operator==( rhs );
10131 }
10132
10133 private:
10134 StructureType sType;
10135
10136 public:
10137 const void* pNext;
10138 const SECURITY_ATTRIBUTES* pAttributes;
10139 DWORD dwAccess;
10140 LPCWSTR name;
10141 };
10142 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10143#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10144
10145#ifdef VK_USE_PLATFORM_WIN32_KHR
10146 struct MemoryWin32HandlePropertiesKHX
10147 {
10148 operator const VkMemoryWin32HandlePropertiesKHX&() const
10149 {
10150 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10151 }
10152
10153 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10154 {
10155 return ( sType == rhs.sType )
10156 && ( pNext == rhs.pNext )
10157 && ( memoryTypeBits == rhs.memoryTypeBits );
10158 }
10159
10160 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10161 {
10162 return !operator==( rhs );
10163 }
10164
10165 private:
10166 StructureType sType;
10167
10168 public:
10169 void* pNext;
10170 uint32_t memoryTypeBits;
10171 };
10172 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
10173#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10174
10175 struct MemoryFdPropertiesKHX
10176 {
10177 operator const VkMemoryFdPropertiesKHX&() const
10178 {
10179 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10180 }
10181
10182 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10183 {
10184 return ( sType == rhs.sType )
10185 && ( pNext == rhs.pNext )
10186 && ( memoryTypeBits == rhs.memoryTypeBits );
10187 }
10188
10189 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10190 {
10191 return !operator==( rhs );
10192 }
10193
10194 private:
10195 StructureType sType;
10196
10197 public:
10198 void* pNext;
10199 uint32_t memoryTypeBits;
10200 };
10201 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10202
10203#ifdef VK_USE_PLATFORM_WIN32_KHR
10204 struct Win32KeyedMutexAcquireReleaseInfoKHX
10205 {
10206 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 )
10207 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10208 , pNext( nullptr )
10209 , acquireCount( acquireCount_ )
10210 , pAcquireSyncs( pAcquireSyncs_ )
10211 , pAcquireKeys( pAcquireKeys_ )
10212 , pAcquireTimeouts( pAcquireTimeouts_ )
10213 , releaseCount( releaseCount_ )
10214 , pReleaseSyncs( pReleaseSyncs_ )
10215 , pReleaseKeys( pReleaseKeys_ )
10216 {
10217 }
10218
10219 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10220 {
10221 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10222 }
10223
10224 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10225 {
10226 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10227 return *this;
10228 }
10229
10230 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10231 {
10232 pNext = pNext_;
10233 return *this;
10234 }
10235
10236 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10237 {
10238 acquireCount = acquireCount_;
10239 return *this;
10240 }
10241
10242 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10243 {
10244 pAcquireSyncs = pAcquireSyncs_;
10245 return *this;
10246 }
10247
10248 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10249 {
10250 pAcquireKeys = pAcquireKeys_;
10251 return *this;
10252 }
10253
10254 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10255 {
10256 pAcquireTimeouts = pAcquireTimeouts_;
10257 return *this;
10258 }
10259
10260 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10261 {
10262 releaseCount = releaseCount_;
10263 return *this;
10264 }
10265
10266 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10267 {
10268 pReleaseSyncs = pReleaseSyncs_;
10269 return *this;
10270 }
10271
10272 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10273 {
10274 pReleaseKeys = pReleaseKeys_;
10275 return *this;
10276 }
10277
10278 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10279 {
10280 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10281 }
10282
10283 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10284 {
10285 return ( sType == rhs.sType )
10286 && ( pNext == rhs.pNext )
10287 && ( acquireCount == rhs.acquireCount )
10288 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10289 && ( pAcquireKeys == rhs.pAcquireKeys )
10290 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10291 && ( releaseCount == rhs.releaseCount )
10292 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10293 && ( pReleaseKeys == rhs.pReleaseKeys );
10294 }
10295
10296 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10297 {
10298 return !operator==( rhs );
10299 }
10300
10301 private:
10302 StructureType sType;
10303
10304 public:
10305 const void* pNext;
10306 uint32_t acquireCount;
10307 const DeviceMemory* pAcquireSyncs;
10308 const uint64_t* pAcquireKeys;
10309 const uint32_t* pAcquireTimeouts;
10310 uint32_t releaseCount;
10311 const DeviceMemory* pReleaseSyncs;
10312 const uint64_t* pReleaseKeys;
10313 };
10314 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10315#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10316
10317#ifdef VK_USE_PLATFORM_WIN32_KHX
10318 struct ExportSemaphoreWin32HandleInfoKHX
10319 {
10320 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10321 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10322 , pNext( nullptr )
10323 , pAttributes( pAttributes_ )
10324 , dwAccess( dwAccess_ )
10325 , name( name_ )
10326 {
10327 }
10328
10329 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10330 {
10331 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10332 }
10333
10334 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10335 {
10336 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10337 return *this;
10338 }
10339
10340 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10341 {
10342 pNext = pNext_;
10343 return *this;
10344 }
10345
10346 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10347 {
10348 pAttributes = pAttributes_;
10349 return *this;
10350 }
10351
10352 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10353 {
10354 dwAccess = dwAccess_;
10355 return *this;
10356 }
10357
10358 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10359 {
10360 name = name_;
10361 return *this;
10362 }
10363
10364 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10365 {
10366 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10367 }
10368
10369 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10370 {
10371 return ( sType == rhs.sType )
10372 && ( pNext == rhs.pNext )
10373 && ( pAttributes == rhs.pAttributes )
10374 && ( dwAccess == rhs.dwAccess )
10375 && ( name == rhs.name );
10376 }
10377
10378 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10379 {
10380 return !operator==( rhs );
10381 }
10382
10383 private:
10384 StructureType sType;
10385
10386 public:
10387 const void* pNext;
10388 const SECURITY_ATTRIBUTES* pAttributes;
10389 DWORD dwAccess;
10390 LPCWSTR name;
10391 };
10392 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10393#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10394
10395#ifdef VK_USE_PLATFORM_WIN32_KHX
10396 struct D3D12FenceSubmitInfoKHX
10397 {
10398 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10399 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10400 , pNext( nullptr )
10401 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10402 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10403 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10404 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10405 {
10406 }
10407
10408 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10409 {
10410 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10411 }
10412
10413 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10414 {
10415 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10416 return *this;
10417 }
10418
10419 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10420 {
10421 pNext = pNext_;
10422 return *this;
10423 }
10424
10425 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10426 {
10427 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10428 return *this;
10429 }
10430
10431 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10432 {
10433 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10434 return *this;
10435 }
10436
10437 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10438 {
10439 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10440 return *this;
10441 }
10442
10443 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10444 {
10445 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10446 return *this;
10447 }
10448
10449 operator const VkD3D12FenceSubmitInfoKHX&() const
10450 {
10451 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10452 }
10453
10454 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10455 {
10456 return ( sType == rhs.sType )
10457 && ( pNext == rhs.pNext )
10458 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10459 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10460 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10461 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10462 }
10463
10464 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10465 {
10466 return !operator==( rhs );
10467 }
10468
10469 private:
10470 StructureType sType;
10471
10472 public:
10473 const void* pNext;
10474 uint32_t waitSemaphoreValuesCount;
10475 const uint64_t* pWaitSemaphoreValues;
10476 uint32_t signalSemaphoreValuesCount;
10477 const uint64_t* pSignalSemaphoreValues;
10478 };
10479 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10480#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10481
10482 struct PhysicalDeviceMultiviewFeaturesKHX
10483 {
10484 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10485 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10486 , pNext( nullptr )
10487 , multiview( multiview_ )
10488 , multiviewGeometryShader( multiviewGeometryShader_ )
10489 , multiviewTessellationShader( multiviewTessellationShader_ )
10490 {
10491 }
10492
10493 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10494 {
10495 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10496 }
10497
10498 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10499 {
10500 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10501 return *this;
10502 }
10503
10504 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10505 {
10506 pNext = pNext_;
10507 return *this;
10508 }
10509
10510 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10511 {
10512 multiview = multiview_;
10513 return *this;
10514 }
10515
10516 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10517 {
10518 multiviewGeometryShader = multiviewGeometryShader_;
10519 return *this;
10520 }
10521
10522 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10523 {
10524 multiviewTessellationShader = multiviewTessellationShader_;
10525 return *this;
10526 }
10527
10528 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10529 {
10530 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10531 }
10532
10533 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10534 {
10535 return ( sType == rhs.sType )
10536 && ( pNext == rhs.pNext )
10537 && ( multiview == rhs.multiview )
10538 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10539 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10540 }
10541
10542 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10543 {
10544 return !operator==( rhs );
10545 }
10546
10547 private:
10548 StructureType sType;
10549
10550 public:
10551 void* pNext;
10552 Bool32 multiview;
10553 Bool32 multiviewGeometryShader;
10554 Bool32 multiviewTessellationShader;
10555 };
10556 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10557
10558 struct PhysicalDeviceMultiviewPropertiesKHX
10559 {
10560 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10561 {
10562 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10563 }
10564
10565 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10566 {
10567 return ( sType == rhs.sType )
10568 && ( pNext == rhs.pNext )
10569 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10570 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10571 }
10572
10573 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10574 {
10575 return !operator==( rhs );
10576 }
10577
10578 private:
10579 StructureType sType;
10580
10581 public:
10582 void* pNext;
10583 uint32_t maxMultiviewViewCount;
10584 uint32_t maxMultiviewInstanceIndex;
10585 };
10586 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10587
10588 struct RenderPassMultiviewCreateInfoKHX
10589 {
10590 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 )
10591 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10592 , pNext( nullptr )
10593 , subpassCount( subpassCount_ )
10594 , pViewMasks( pViewMasks_ )
10595 , dependencyCount( dependencyCount_ )
10596 , pViewOffsets( pViewOffsets_ )
10597 , correlationMaskCount( correlationMaskCount_ )
10598 , pCorrelationMasks( pCorrelationMasks_ )
10599 {
10600 }
10601
10602 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10603 {
10604 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10605 }
10606
10607 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10608 {
10609 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10610 return *this;
10611 }
10612
10613 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10614 {
10615 pNext = pNext_;
10616 return *this;
10617 }
10618
10619 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10620 {
10621 subpassCount = subpassCount_;
10622 return *this;
10623 }
10624
10625 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10626 {
10627 pViewMasks = pViewMasks_;
10628 return *this;
10629 }
10630
10631 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10632 {
10633 dependencyCount = dependencyCount_;
10634 return *this;
10635 }
10636
10637 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10638 {
10639 pViewOffsets = pViewOffsets_;
10640 return *this;
10641 }
10642
10643 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10644 {
10645 correlationMaskCount = correlationMaskCount_;
10646 return *this;
10647 }
10648
10649 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10650 {
10651 pCorrelationMasks = pCorrelationMasks_;
10652 return *this;
10653 }
10654
10655 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10656 {
10657 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10658 }
10659
10660 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10661 {
10662 return ( sType == rhs.sType )
10663 && ( pNext == rhs.pNext )
10664 && ( subpassCount == rhs.subpassCount )
10665 && ( pViewMasks == rhs.pViewMasks )
10666 && ( dependencyCount == rhs.dependencyCount )
10667 && ( pViewOffsets == rhs.pViewOffsets )
10668 && ( correlationMaskCount == rhs.correlationMaskCount )
10669 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10670 }
10671
10672 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10673 {
10674 return !operator==( rhs );
10675 }
10676
10677 private:
10678 StructureType sType;
10679
10680 public:
10681 const void* pNext;
10682 uint32_t subpassCount;
10683 const uint32_t* pViewMasks;
10684 uint32_t dependencyCount;
10685 const int32_t* pViewOffsets;
10686 uint32_t correlationMaskCount;
10687 const uint32_t* pCorrelationMasks;
10688 };
10689 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10690
10691 struct BindBufferMemoryInfoKHX
10692 {
10693 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10694 : sType( StructureType::eBindBufferMemoryInfoKHX )
10695 , pNext( nullptr )
10696 , buffer( buffer_ )
10697 , memory( memory_ )
10698 , memoryOffset( memoryOffset_ )
10699 , deviceIndexCount( deviceIndexCount_ )
10700 , pDeviceIndices( pDeviceIndices_ )
10701 {
10702 }
10703
10704 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10705 {
10706 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10707 }
10708
10709 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10710 {
10711 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10712 return *this;
10713 }
10714
10715 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10716 {
10717 pNext = pNext_;
10718 return *this;
10719 }
10720
10721 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10722 {
10723 buffer = buffer_;
10724 return *this;
10725 }
10726
10727 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10728 {
10729 memory = memory_;
10730 return *this;
10731 }
10732
10733 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10734 {
10735 memoryOffset = memoryOffset_;
10736 return *this;
10737 }
10738
10739 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10740 {
10741 deviceIndexCount = deviceIndexCount_;
10742 return *this;
10743 }
10744
10745 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10746 {
10747 pDeviceIndices = pDeviceIndices_;
10748 return *this;
10749 }
10750
10751 operator const VkBindBufferMemoryInfoKHX&() const
10752 {
10753 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10754 }
10755
10756 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10757 {
10758 return ( sType == rhs.sType )
10759 && ( pNext == rhs.pNext )
10760 && ( buffer == rhs.buffer )
10761 && ( memory == rhs.memory )
10762 && ( memoryOffset == rhs.memoryOffset )
10763 && ( deviceIndexCount == rhs.deviceIndexCount )
10764 && ( pDeviceIndices == rhs.pDeviceIndices );
10765 }
10766
10767 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10768 {
10769 return !operator==( rhs );
10770 }
10771
10772 private:
10773 StructureType sType;
10774
10775 public:
10776 const void* pNext;
10777 Buffer buffer;
10778 DeviceMemory memory;
10779 DeviceSize memoryOffset;
10780 uint32_t deviceIndexCount;
10781 const uint32_t* pDeviceIndices;
10782 };
10783 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10784
10785 struct BindImageMemoryInfoKHX
10786 {
10787 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 )
10788 : sType( StructureType::eBindImageMemoryInfoKHX )
10789 , pNext( nullptr )
10790 , image( image_ )
10791 , memory( memory_ )
10792 , memoryOffset( memoryOffset_ )
10793 , deviceIndexCount( deviceIndexCount_ )
10794 , pDeviceIndices( pDeviceIndices_ )
10795 , SFRRectCount( SFRRectCount_ )
10796 , pSFRRects( pSFRRects_ )
10797 {
10798 }
10799
10800 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10801 {
10802 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10803 }
10804
10805 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10806 {
10807 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10808 return *this;
10809 }
10810
10811 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10812 {
10813 pNext = pNext_;
10814 return *this;
10815 }
10816
10817 BindImageMemoryInfoKHX& setImage( Image image_ )
10818 {
10819 image = image_;
10820 return *this;
10821 }
10822
10823 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10824 {
10825 memory = memory_;
10826 return *this;
10827 }
10828
10829 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10830 {
10831 memoryOffset = memoryOffset_;
10832 return *this;
10833 }
10834
10835 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10836 {
10837 deviceIndexCount = deviceIndexCount_;
10838 return *this;
10839 }
10840
10841 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10842 {
10843 pDeviceIndices = pDeviceIndices_;
10844 return *this;
10845 }
10846
10847 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
10848 {
10849 SFRRectCount = SFRRectCount_;
10850 return *this;
10851 }
10852
10853 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
10854 {
10855 pSFRRects = pSFRRects_;
10856 return *this;
10857 }
10858
10859 operator const VkBindImageMemoryInfoKHX&() const
10860 {
10861 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
10862 }
10863
10864 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
10865 {
10866 return ( sType == rhs.sType )
10867 && ( pNext == rhs.pNext )
10868 && ( image == rhs.image )
10869 && ( memory == rhs.memory )
10870 && ( memoryOffset == rhs.memoryOffset )
10871 && ( deviceIndexCount == rhs.deviceIndexCount )
10872 && ( pDeviceIndices == rhs.pDeviceIndices )
10873 && ( SFRRectCount == rhs.SFRRectCount )
10874 && ( pSFRRects == rhs.pSFRRects );
10875 }
10876
10877 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
10878 {
10879 return !operator==( rhs );
10880 }
10881
10882 private:
10883 StructureType sType;
10884
10885 public:
10886 const void* pNext;
10887 Image image;
10888 DeviceMemory memory;
10889 DeviceSize memoryOffset;
10890 uint32_t deviceIndexCount;
10891 const uint32_t* pDeviceIndices;
10892 uint32_t SFRRectCount;
10893 const Rect2D* pSFRRects;
10894 };
10895 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
10896
10897 struct DeviceGroupRenderPassBeginInfoKHX
10898 {
10899 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
10900 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
10901 , pNext( nullptr )
10902 , deviceMask( deviceMask_ )
10903 , deviceRenderAreaCount( deviceRenderAreaCount_ )
10904 , pDeviceRenderAreas( pDeviceRenderAreas_ )
10905 {
10906 }
10907
10908 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10909 {
10910 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10911 }
10912
10913 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10914 {
10915 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10916 return *this;
10917 }
10918
10919 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
10920 {
10921 pNext = pNext_;
10922 return *this;
10923 }
10924
10925 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
10926 {
10927 deviceMask = deviceMask_;
10928 return *this;
10929 }
10930
10931 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
10932 {
10933 deviceRenderAreaCount = deviceRenderAreaCount_;
10934 return *this;
10935 }
10936
10937 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
10938 {
10939 pDeviceRenderAreas = pDeviceRenderAreas_;
10940 return *this;
10941 }
10942
10943 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
10944 {
10945 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
10946 }
10947
10948 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10949 {
10950 return ( sType == rhs.sType )
10951 && ( pNext == rhs.pNext )
10952 && ( deviceMask == rhs.deviceMask )
10953 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
10954 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
10955 }
10956
10957 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10958 {
10959 return !operator==( rhs );
10960 }
10961
10962 private:
10963 StructureType sType;
10964
10965 public:
10966 const void* pNext;
10967 uint32_t deviceMask;
10968 uint32_t deviceRenderAreaCount;
10969 const Rect2D* pDeviceRenderAreas;
10970 };
10971 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
10972
10973 struct DeviceGroupCommandBufferBeginInfoKHX
10974 {
10975 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
10976 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
10977 , pNext( nullptr )
10978 , deviceMask( deviceMask_ )
10979 {
10980 }
10981
10982 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10983 {
10984 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10985 }
10986
10987 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10988 {
10989 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10990 return *this;
10991 }
10992
10993 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
10994 {
10995 pNext = pNext_;
10996 return *this;
10997 }
10998
10999 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11000 {
11001 deviceMask = deviceMask_;
11002 return *this;
11003 }
11004
11005 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11006 {
11007 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11008 }
11009
11010 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11011 {
11012 return ( sType == rhs.sType )
11013 && ( pNext == rhs.pNext )
11014 && ( deviceMask == rhs.deviceMask );
11015 }
11016
11017 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11018 {
11019 return !operator==( rhs );
11020 }
11021
11022 private:
11023 StructureType sType;
11024
11025 public:
11026 const void* pNext;
11027 uint32_t deviceMask;
11028 };
11029 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11030
11031 struct DeviceGroupSubmitInfoKHX
11032 {
11033 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 )
11034 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11035 , pNext( nullptr )
11036 , waitSemaphoreCount( waitSemaphoreCount_ )
11037 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11038 , commandBufferCount( commandBufferCount_ )
11039 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11040 , signalSemaphoreCount( signalSemaphoreCount_ )
11041 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11042 {
11043 }
11044
11045 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11046 {
11047 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11048 }
11049
11050 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11051 {
11052 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11053 return *this;
11054 }
11055
11056 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11057 {
11058 pNext = pNext_;
11059 return *this;
11060 }
11061
11062 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11063 {
11064 waitSemaphoreCount = waitSemaphoreCount_;
11065 return *this;
11066 }
11067
11068 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11069 {
11070 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11071 return *this;
11072 }
11073
11074 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11075 {
11076 commandBufferCount = commandBufferCount_;
11077 return *this;
11078 }
11079
11080 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11081 {
11082 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11083 return *this;
11084 }
11085
11086 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11087 {
11088 signalSemaphoreCount = signalSemaphoreCount_;
11089 return *this;
11090 }
11091
11092 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11093 {
11094 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11095 return *this;
11096 }
11097
11098 operator const VkDeviceGroupSubmitInfoKHX&() const
11099 {
11100 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11101 }
11102
11103 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11104 {
11105 return ( sType == rhs.sType )
11106 && ( pNext == rhs.pNext )
11107 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11108 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11109 && ( commandBufferCount == rhs.commandBufferCount )
11110 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11111 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11112 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11113 }
11114
11115 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11116 {
11117 return !operator==( rhs );
11118 }
11119
11120 private:
11121 StructureType sType;
11122
11123 public:
11124 const void* pNext;
11125 uint32_t waitSemaphoreCount;
11126 const uint32_t* pWaitSemaphoreDeviceIndices;
11127 uint32_t commandBufferCount;
11128 const uint32_t* pCommandBufferDeviceMasks;
11129 uint32_t signalSemaphoreCount;
11130 const uint32_t* pSignalSemaphoreDeviceIndices;
11131 };
11132 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11133
11134 struct DeviceGroupBindSparseInfoKHX
11135 {
11136 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11137 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11138 , pNext( nullptr )
11139 , resourceDeviceIndex( resourceDeviceIndex_ )
11140 , memoryDeviceIndex( memoryDeviceIndex_ )
11141 {
11142 }
11143
11144 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11145 {
11146 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11147 }
11148
11149 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11150 {
11151 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11152 return *this;
11153 }
11154
11155 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11156 {
11157 pNext = pNext_;
11158 return *this;
11159 }
11160
11161 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11162 {
11163 resourceDeviceIndex = resourceDeviceIndex_;
11164 return *this;
11165 }
11166
11167 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11168 {
11169 memoryDeviceIndex = memoryDeviceIndex_;
11170 return *this;
11171 }
11172
11173 operator const VkDeviceGroupBindSparseInfoKHX&() const
11174 {
11175 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11176 }
11177
11178 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11179 {
11180 return ( sType == rhs.sType )
11181 && ( pNext == rhs.pNext )
11182 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11183 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11184 }
11185
11186 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11187 {
11188 return !operator==( rhs );
11189 }
11190
11191 private:
11192 StructureType sType;
11193
11194 public:
11195 const void* pNext;
11196 uint32_t resourceDeviceIndex;
11197 uint32_t memoryDeviceIndex;
11198 };
11199 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11200
11201 struct ImageSwapchainCreateInfoKHX
11202 {
11203 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11204 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11205 , pNext( nullptr )
11206 , swapchain( swapchain_ )
11207 {
11208 }
11209
11210 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11211 {
11212 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11213 }
11214
11215 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11216 {
11217 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11218 return *this;
11219 }
11220
11221 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11222 {
11223 pNext = pNext_;
11224 return *this;
11225 }
11226
11227 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11228 {
11229 swapchain = swapchain_;
11230 return *this;
11231 }
11232
11233 operator const VkImageSwapchainCreateInfoKHX&() const
11234 {
11235 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11236 }
11237
11238 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11239 {
11240 return ( sType == rhs.sType )
11241 && ( pNext == rhs.pNext )
11242 && ( swapchain == rhs.swapchain );
11243 }
11244
11245 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11246 {
11247 return !operator==( rhs );
11248 }
11249
11250 private:
11251 StructureType sType;
11252
11253 public:
11254 const void* pNext;
11255 SwapchainKHR swapchain;
11256 };
11257 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11258
11259 struct BindImageMemorySwapchainInfoKHX
11260 {
11261 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11262 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11263 , pNext( nullptr )
11264 , swapchain( swapchain_ )
11265 , imageIndex( imageIndex_ )
11266 {
11267 }
11268
11269 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11270 {
11271 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11272 }
11273
11274 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11275 {
11276 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11277 return *this;
11278 }
11279
11280 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11281 {
11282 pNext = pNext_;
11283 return *this;
11284 }
11285
11286 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11287 {
11288 swapchain = swapchain_;
11289 return *this;
11290 }
11291
11292 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11293 {
11294 imageIndex = imageIndex_;
11295 return *this;
11296 }
11297
11298 operator const VkBindImageMemorySwapchainInfoKHX&() const
11299 {
11300 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11301 }
11302
11303 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11304 {
11305 return ( sType == rhs.sType )
11306 && ( pNext == rhs.pNext )
11307 && ( swapchain == rhs.swapchain )
11308 && ( imageIndex == rhs.imageIndex );
11309 }
11310
11311 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11312 {
11313 return !operator==( rhs );
11314 }
11315
11316 private:
11317 StructureType sType;
11318
11319 public:
11320 const void* pNext;
11321 SwapchainKHR swapchain;
11322 uint32_t imageIndex;
11323 };
11324 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11325
11326 struct AcquireNextImageInfoKHX
11327 {
11328 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11329 : sType( StructureType::eAcquireNextImageInfoKHX )
11330 , pNext( nullptr )
11331 , swapchain( swapchain_ )
11332 , timeout( timeout_ )
11333 , semaphore( semaphore_ )
11334 , fence( fence_ )
11335 , deviceMask( deviceMask_ )
11336 {
11337 }
11338
11339 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11340 {
11341 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11342 }
11343
11344 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11345 {
11346 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11347 return *this;
11348 }
11349
11350 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11351 {
11352 pNext = pNext_;
11353 return *this;
11354 }
11355
11356 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11357 {
11358 swapchain = swapchain_;
11359 return *this;
11360 }
11361
11362 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11363 {
11364 timeout = timeout_;
11365 return *this;
11366 }
11367
11368 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11369 {
11370 semaphore = semaphore_;
11371 return *this;
11372 }
11373
11374 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11375 {
11376 fence = fence_;
11377 return *this;
11378 }
11379
11380 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11381 {
11382 deviceMask = deviceMask_;
11383 return *this;
11384 }
11385
11386 operator const VkAcquireNextImageInfoKHX&() const
11387 {
11388 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11389 }
11390
11391 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11392 {
11393 return ( sType == rhs.sType )
11394 && ( pNext == rhs.pNext )
11395 && ( swapchain == rhs.swapchain )
11396 && ( timeout == rhs.timeout )
11397 && ( semaphore == rhs.semaphore )
11398 && ( fence == rhs.fence )
11399 && ( deviceMask == rhs.deviceMask );
11400 }
11401
11402 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11403 {
11404 return !operator==( rhs );
11405 }
11406
11407 private:
11408 StructureType sType;
11409
11410 public:
11411 const void* pNext;
11412 SwapchainKHR swapchain;
11413 uint64_t timeout;
11414 Semaphore semaphore;
11415 Fence fence;
11416 uint32_t deviceMask;
11417 };
11418 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11419
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011420 struct HdrMetadataEXT
11421 {
11422 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 )
11423 : sType( StructureType::eHdrMetadataEXT )
11424 , pNext( nullptr )
11425 , displayPrimaryRed( displayPrimaryRed_ )
11426 , displayPrimaryGreen( displayPrimaryGreen_ )
11427 , displayPrimaryBlue( displayPrimaryBlue_ )
11428 , whitePoint( whitePoint_ )
11429 , maxLuminance( maxLuminance_ )
11430 , minLuminance( minLuminance_ )
11431 , maxContentLightLevel( maxContentLightLevel_ )
11432 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11433 {
11434 }
11435
11436 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11437 {
11438 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11439 }
11440
11441 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11442 {
11443 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11444 return *this;
11445 }
11446
11447 HdrMetadataEXT& setPNext( const void* pNext_ )
11448 {
11449 pNext = pNext_;
11450 return *this;
11451 }
11452
11453 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11454 {
11455 displayPrimaryRed = displayPrimaryRed_;
11456 return *this;
11457 }
11458
11459 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11460 {
11461 displayPrimaryGreen = displayPrimaryGreen_;
11462 return *this;
11463 }
11464
11465 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11466 {
11467 displayPrimaryBlue = displayPrimaryBlue_;
11468 return *this;
11469 }
11470
11471 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11472 {
11473 whitePoint = whitePoint_;
11474 return *this;
11475 }
11476
11477 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11478 {
11479 maxLuminance = maxLuminance_;
11480 return *this;
11481 }
11482
11483 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11484 {
11485 minLuminance = minLuminance_;
11486 return *this;
11487 }
11488
11489 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11490 {
11491 maxContentLightLevel = maxContentLightLevel_;
11492 return *this;
11493 }
11494
11495 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11496 {
11497 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11498 return *this;
11499 }
11500
11501 operator const VkHdrMetadataEXT&() const
11502 {
11503 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11504 }
11505
11506 bool operator==( HdrMetadataEXT const& rhs ) const
11507 {
11508 return ( sType == rhs.sType )
11509 && ( pNext == rhs.pNext )
11510 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11511 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11512 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11513 && ( whitePoint == rhs.whitePoint )
11514 && ( maxLuminance == rhs.maxLuminance )
11515 && ( minLuminance == rhs.minLuminance )
11516 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11517 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11518 }
11519
11520 bool operator!=( HdrMetadataEXT const& rhs ) const
11521 {
11522 return !operator==( rhs );
11523 }
11524
11525 private:
11526 StructureType sType;
11527
11528 public:
11529 const void* pNext;
11530 XYColorEXT displayPrimaryRed;
11531 XYColorEXT displayPrimaryGreen;
11532 XYColorEXT displayPrimaryBlue;
11533 XYColorEXT whitePoint;
11534 float maxLuminance;
11535 float minLuminance;
11536 float maxContentLightLevel;
11537 float maxFrameAverageLightLevel;
11538 };
11539 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11540
11541 struct PresentTimesInfoGOOGLE
11542 {
11543 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11544 : sType( StructureType::ePresentTimesInfoGOOGLE )
11545 , pNext( nullptr )
11546 , swapchainCount( swapchainCount_ )
11547 , pTimes( pTimes_ )
11548 {
11549 }
11550
11551 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11552 {
11553 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11554 }
11555
11556 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11557 {
11558 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11559 return *this;
11560 }
11561
11562 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11563 {
11564 pNext = pNext_;
11565 return *this;
11566 }
11567
11568 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11569 {
11570 swapchainCount = swapchainCount_;
11571 return *this;
11572 }
11573
11574 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11575 {
11576 pTimes = pTimes_;
11577 return *this;
11578 }
11579
11580 operator const VkPresentTimesInfoGOOGLE&() const
11581 {
11582 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11583 }
11584
11585 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11586 {
11587 return ( sType == rhs.sType )
11588 && ( pNext == rhs.pNext )
11589 && ( swapchainCount == rhs.swapchainCount )
11590 && ( pTimes == rhs.pTimes );
11591 }
11592
11593 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11594 {
11595 return !operator==( rhs );
11596 }
11597
11598 private:
11599 StructureType sType;
11600
11601 public:
11602 const void* pNext;
11603 uint32_t swapchainCount;
11604 const PresentTimeGOOGLE* pTimes;
11605 };
11606 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11607
Mark Young0f183a82017-02-28 09:58:04 -070011608#ifdef VK_USE_PLATFORM_IOS_MVK
11609 struct IOSSurfaceCreateInfoMVK
11610 {
11611 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11612 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11613 , pNext( nullptr )
11614 , flags( flags_ )
11615 , pView( pView_ )
11616 {
11617 }
11618
11619 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11620 {
11621 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11622 }
11623
11624 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11625 {
11626 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11627 return *this;
11628 }
11629
11630 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11631 {
11632 pNext = pNext_;
11633 return *this;
11634 }
11635
11636 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11637 {
11638 flags = flags_;
11639 return *this;
11640 }
11641
11642 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11643 {
11644 pView = pView_;
11645 return *this;
11646 }
11647
11648 operator const VkIOSSurfaceCreateInfoMVK&() const
11649 {
11650 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11651 }
11652
11653 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11654 {
11655 return ( sType == rhs.sType )
11656 && ( pNext == rhs.pNext )
11657 && ( flags == rhs.flags )
11658 && ( pView == rhs.pView );
11659 }
11660
11661 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11662 {
11663 return !operator==( rhs );
11664 }
11665
11666 private:
11667 StructureType sType;
11668
11669 public:
11670 const void* pNext;
11671 IOSSurfaceCreateFlagsMVK flags;
11672 const void* pView;
11673 };
11674 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11675#endif /*VK_USE_PLATFORM_IOS_MVK*/
11676
11677#ifdef VK_USE_PLATFORM_MACOS_MVK
11678 struct MacOSSurfaceCreateInfoMVK
11679 {
11680 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11681 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11682 , pNext( nullptr )
11683 , flags( flags_ )
11684 , pView( pView_ )
11685 {
11686 }
11687
11688 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11689 {
11690 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11691 }
11692
11693 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11694 {
11695 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11696 return *this;
11697 }
11698
11699 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11700 {
11701 pNext = pNext_;
11702 return *this;
11703 }
11704
11705 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11706 {
11707 flags = flags_;
11708 return *this;
11709 }
11710
11711 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11712 {
11713 pView = pView_;
11714 return *this;
11715 }
11716
11717 operator const VkMacOSSurfaceCreateInfoMVK&() const
11718 {
11719 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11720 }
11721
11722 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11723 {
11724 return ( sType == rhs.sType )
11725 && ( pNext == rhs.pNext )
11726 && ( flags == rhs.flags )
11727 && ( pView == rhs.pView );
11728 }
11729
11730 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11731 {
11732 return !operator==( rhs );
11733 }
11734
11735 private:
11736 StructureType sType;
11737
11738 public:
11739 const void* pNext;
11740 MacOSSurfaceCreateFlagsMVK flags;
11741 const void* pView;
11742 };
11743 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11744#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11745
11746 struct PipelineViewportWScalingStateCreateInfoNV
11747 {
11748 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11749 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11750 , pNext( nullptr )
11751 , viewportWScalingEnable( viewportWScalingEnable_ )
11752 , viewportCount( viewportCount_ )
11753 , pViewportWScalings( pViewportWScalings_ )
11754 {
11755 }
11756
11757 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11758 {
11759 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11760 }
11761
11762 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11763 {
11764 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11765 return *this;
11766 }
11767
11768 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11769 {
11770 pNext = pNext_;
11771 return *this;
11772 }
11773
11774 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11775 {
11776 viewportWScalingEnable = viewportWScalingEnable_;
11777 return *this;
11778 }
11779
11780 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11781 {
11782 viewportCount = viewportCount_;
11783 return *this;
11784 }
11785
11786 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11787 {
11788 pViewportWScalings = pViewportWScalings_;
11789 return *this;
11790 }
11791
11792 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11793 {
11794 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11795 }
11796
11797 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11798 {
11799 return ( sType == rhs.sType )
11800 && ( pNext == rhs.pNext )
11801 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11802 && ( viewportCount == rhs.viewportCount )
11803 && ( pViewportWScalings == rhs.pViewportWScalings );
11804 }
11805
11806 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11807 {
11808 return !operator==( rhs );
11809 }
11810
11811 private:
11812 StructureType sType;
11813
11814 public:
11815 const void* pNext;
11816 Bool32 viewportWScalingEnable;
11817 uint32_t viewportCount;
11818 const ViewportWScalingNV* pViewportWScalings;
11819 };
11820 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
11821
11822 struct PhysicalDeviceDiscardRectanglePropertiesEXT
11823 {
11824 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
11825 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
11826 , pNext( nullptr )
11827 , maxDiscardRectangles( maxDiscardRectangles_ )
11828 {
11829 }
11830
11831 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11832 {
11833 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11834 }
11835
11836 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11837 {
11838 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11839 return *this;
11840 }
11841
11842 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( const void* pNext_ )
11843 {
11844 pNext = pNext_;
11845 return *this;
11846 }
11847
11848 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
11849 {
11850 maxDiscardRectangles = maxDiscardRectangles_;
11851 return *this;
11852 }
11853
11854 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
11855 {
11856 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
11857 }
11858
11859 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11860 {
11861 return ( sType == rhs.sType )
11862 && ( pNext == rhs.pNext )
11863 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
11864 }
11865
11866 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11867 {
11868 return !operator==( rhs );
11869 }
11870
11871 private:
11872 StructureType sType;
11873
11874 public:
11875 const void* pNext;
11876 uint32_t maxDiscardRectangles;
11877 };
11878 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
11879
11880 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
11881 {
11882 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
11883 {
11884 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
11885 }
11886
11887 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11888 {
11889 return ( sType == rhs.sType )
11890 && ( pNext == rhs.pNext )
11891 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
11892 }
11893
11894 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11895 {
11896 return !operator==( rhs );
11897 }
11898
11899 private:
11900 StructureType sType;
11901
11902 public:
11903 void* pNext;
11904 Bool32 perViewPositionAllComponents;
11905 };
11906 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
11907
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011908 enum class SubpassContents
11909 {
11910 eInline = VK_SUBPASS_CONTENTS_INLINE,
11911 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
11912 };
11913
11914 struct PresentInfoKHR
11915 {
11916 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 )
11917 : sType( StructureType::ePresentInfoKHR )
11918 , pNext( nullptr )
11919 , waitSemaphoreCount( waitSemaphoreCount_ )
11920 , pWaitSemaphores( pWaitSemaphores_ )
11921 , swapchainCount( swapchainCount_ )
11922 , pSwapchains( pSwapchains_ )
11923 , pImageIndices( pImageIndices_ )
11924 , pResults( pResults_ )
11925 {
11926 }
11927
11928 PresentInfoKHR( VkPresentInfoKHR const & rhs )
11929 {
11930 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11931 }
11932
11933 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
11934 {
11935 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11936 return *this;
11937 }
11938
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011939 PresentInfoKHR& setPNext( const void* pNext_ )
11940 {
11941 pNext = pNext_;
11942 return *this;
11943 }
11944
11945 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11946 {
11947 waitSemaphoreCount = waitSemaphoreCount_;
11948 return *this;
11949 }
11950
11951 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
11952 {
11953 pWaitSemaphores = pWaitSemaphores_;
11954 return *this;
11955 }
11956
11957 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
11958 {
11959 swapchainCount = swapchainCount_;
11960 return *this;
11961 }
11962
11963 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
11964 {
11965 pSwapchains = pSwapchains_;
11966 return *this;
11967 }
11968
11969 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
11970 {
11971 pImageIndices = pImageIndices_;
11972 return *this;
11973 }
11974
11975 PresentInfoKHR& setPResults( Result* pResults_ )
11976 {
11977 pResults = pResults_;
11978 return *this;
11979 }
11980
11981 operator const VkPresentInfoKHR&() const
11982 {
11983 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
11984 }
11985
11986 bool operator==( PresentInfoKHR const& rhs ) const
11987 {
11988 return ( sType == rhs.sType )
11989 && ( pNext == rhs.pNext )
11990 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11991 && ( pWaitSemaphores == rhs.pWaitSemaphores )
11992 && ( swapchainCount == rhs.swapchainCount )
11993 && ( pSwapchains == rhs.pSwapchains )
11994 && ( pImageIndices == rhs.pImageIndices )
11995 && ( pResults == rhs.pResults );
11996 }
11997
11998 bool operator!=( PresentInfoKHR const& rhs ) const
11999 {
12000 return !operator==( rhs );
12001 }
12002
12003 private:
12004 StructureType sType;
12005
12006 public:
12007 const void* pNext;
12008 uint32_t waitSemaphoreCount;
12009 const Semaphore* pWaitSemaphores;
12010 uint32_t swapchainCount;
12011 const SwapchainKHR* pSwapchains;
12012 const uint32_t* pImageIndices;
12013 Result* pResults;
12014 };
12015 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12016
12017 enum class DynamicState
12018 {
12019 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12020 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12021 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12022 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12023 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12024 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12025 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12026 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012027 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12028 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12029 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012030 };
12031
12032 struct PipelineDynamicStateCreateInfo
12033 {
12034 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12035 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12036 , pNext( nullptr )
12037 , flags( flags_ )
12038 , dynamicStateCount( dynamicStateCount_ )
12039 , pDynamicStates( pDynamicStates_ )
12040 {
12041 }
12042
12043 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12044 {
12045 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12046 }
12047
12048 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12049 {
12050 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12051 return *this;
12052 }
12053
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012054 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12055 {
12056 pNext = pNext_;
12057 return *this;
12058 }
12059
12060 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12061 {
12062 flags = flags_;
12063 return *this;
12064 }
12065
12066 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12067 {
12068 dynamicStateCount = dynamicStateCount_;
12069 return *this;
12070 }
12071
12072 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12073 {
12074 pDynamicStates = pDynamicStates_;
12075 return *this;
12076 }
12077
12078 operator const VkPipelineDynamicStateCreateInfo&() const
12079 {
12080 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12081 }
12082
12083 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12084 {
12085 return ( sType == rhs.sType )
12086 && ( pNext == rhs.pNext )
12087 && ( flags == rhs.flags )
12088 && ( dynamicStateCount == rhs.dynamicStateCount )
12089 && ( pDynamicStates == rhs.pDynamicStates );
12090 }
12091
12092 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12093 {
12094 return !operator==( rhs );
12095 }
12096
12097 private:
12098 StructureType sType;
12099
12100 public:
12101 const void* pNext;
12102 PipelineDynamicStateCreateFlags flags;
12103 uint32_t dynamicStateCount;
12104 const DynamicState* pDynamicStates;
12105 };
12106 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12107
Mark Young0f183a82017-02-28 09:58:04 -070012108 enum class DescriptorUpdateTemplateTypeKHR
12109 {
12110 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12111 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12112 };
12113
12114 struct DescriptorUpdateTemplateCreateInfoKHR
12115 {
12116 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 )
12117 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12118 , pNext( nullptr )
12119 , flags( flags_ )
12120 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12121 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12122 , templateType( templateType_ )
12123 , descriptorSetLayout( descriptorSetLayout_ )
12124 , pipelineBindPoint( pipelineBindPoint_ )
12125 , pipelineLayout( pipelineLayout_ )
12126 , set( set_ )
12127 {
12128 }
12129
12130 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12131 {
12132 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12133 }
12134
12135 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12136 {
12137 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12138 return *this;
12139 }
12140
12141 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12142 {
12143 pNext = pNext_;
12144 return *this;
12145 }
12146
12147 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12148 {
12149 flags = flags_;
12150 return *this;
12151 }
12152
12153 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12154 {
12155 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12156 return *this;
12157 }
12158
12159 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12160 {
12161 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12162 return *this;
12163 }
12164
12165 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12166 {
12167 templateType = templateType_;
12168 return *this;
12169 }
12170
12171 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12172 {
12173 descriptorSetLayout = descriptorSetLayout_;
12174 return *this;
12175 }
12176
12177 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12178 {
12179 pipelineBindPoint = pipelineBindPoint_;
12180 return *this;
12181 }
12182
12183 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12184 {
12185 pipelineLayout = pipelineLayout_;
12186 return *this;
12187 }
12188
12189 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12190 {
12191 set = set_;
12192 return *this;
12193 }
12194
12195 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12196 {
12197 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12198 }
12199
12200 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12201 {
12202 return ( sType == rhs.sType )
12203 && ( pNext == rhs.pNext )
12204 && ( flags == rhs.flags )
12205 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12206 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12207 && ( templateType == rhs.templateType )
12208 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12209 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12210 && ( pipelineLayout == rhs.pipelineLayout )
12211 && ( set == rhs.set );
12212 }
12213
12214 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12215 {
12216 return !operator==( rhs );
12217 }
12218
12219 private:
12220 StructureType sType;
12221
12222 public:
12223 void* pNext;
12224 DescriptorUpdateTemplateCreateFlagsKHR flags;
12225 uint32_t descriptorUpdateEntryCount;
12226 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12227 DescriptorUpdateTemplateTypeKHR templateType;
12228 DescriptorSetLayout descriptorSetLayout;
12229 PipelineBindPoint pipelineBindPoint;
12230 PipelineLayout pipelineLayout;
12231 uint32_t set;
12232 };
12233 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12234
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012235 enum class QueueFlagBits
12236 {
12237 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12238 eCompute = VK_QUEUE_COMPUTE_BIT,
12239 eTransfer = VK_QUEUE_TRANSFER_BIT,
12240 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12241 };
12242
12243 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12244
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012245 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012246 {
12247 return QueueFlags( bit0 ) | bit1;
12248 }
12249
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012250 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12251 {
12252 return ~( QueueFlags( bits ) );
12253 }
12254
12255 template <> struct FlagTraits<QueueFlagBits>
12256 {
12257 enum
12258 {
12259 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12260 };
12261 };
12262
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012263 struct QueueFamilyProperties
12264 {
12265 operator const VkQueueFamilyProperties&() const
12266 {
12267 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12268 }
12269
12270 bool operator==( QueueFamilyProperties const& rhs ) const
12271 {
12272 return ( queueFlags == rhs.queueFlags )
12273 && ( queueCount == rhs.queueCount )
12274 && ( timestampValidBits == rhs.timestampValidBits )
12275 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12276 }
12277
12278 bool operator!=( QueueFamilyProperties const& rhs ) const
12279 {
12280 return !operator==( rhs );
12281 }
12282
12283 QueueFlags queueFlags;
12284 uint32_t queueCount;
12285 uint32_t timestampValidBits;
12286 Extent3D minImageTransferGranularity;
12287 };
12288 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12289
Mark Young39389872017-01-19 21:10:49 -070012290 struct QueueFamilyProperties2KHR
12291 {
12292 operator const VkQueueFamilyProperties2KHR&() const
12293 {
12294 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12295 }
12296
12297 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12298 {
12299 return ( sType == rhs.sType )
12300 && ( pNext == rhs.pNext )
12301 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12302 }
12303
12304 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12305 {
12306 return !operator==( rhs );
12307 }
12308
12309 private:
12310 StructureType sType;
12311
12312 public:
12313 void* pNext;
12314 QueueFamilyProperties queueFamilyProperties;
12315 };
12316 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12317
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012318 enum class MemoryPropertyFlagBits
12319 {
12320 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12321 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12322 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12323 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12324 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12325 };
12326
12327 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012329 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012330 {
12331 return MemoryPropertyFlags( bit0 ) | bit1;
12332 }
12333
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012334 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12335 {
12336 return ~( MemoryPropertyFlags( bits ) );
12337 }
12338
12339 template <> struct FlagTraits<MemoryPropertyFlagBits>
12340 {
12341 enum
12342 {
12343 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12344 };
12345 };
12346
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012347 struct MemoryType
12348 {
12349 operator const VkMemoryType&() const
12350 {
12351 return *reinterpret_cast<const VkMemoryType*>(this);
12352 }
12353
12354 bool operator==( MemoryType const& rhs ) const
12355 {
12356 return ( propertyFlags == rhs.propertyFlags )
12357 && ( heapIndex == rhs.heapIndex );
12358 }
12359
12360 bool operator!=( MemoryType const& rhs ) const
12361 {
12362 return !operator==( rhs );
12363 }
12364
12365 MemoryPropertyFlags propertyFlags;
12366 uint32_t heapIndex;
12367 };
12368 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12369
12370 enum class MemoryHeapFlagBits
12371 {
Mark Young0f183a82017-02-28 09:58:04 -070012372 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12373 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012374 };
12375
12376 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12377
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012378 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012379 {
12380 return MemoryHeapFlags( bit0 ) | bit1;
12381 }
12382
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012383 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12384 {
12385 return ~( MemoryHeapFlags( bits ) );
12386 }
12387
12388 template <> struct FlagTraits<MemoryHeapFlagBits>
12389 {
12390 enum
12391 {
Mark Young0f183a82017-02-28 09:58:04 -070012392 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012393 };
12394 };
12395
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012396 struct MemoryHeap
12397 {
12398 operator const VkMemoryHeap&() const
12399 {
12400 return *reinterpret_cast<const VkMemoryHeap*>(this);
12401 }
12402
12403 bool operator==( MemoryHeap const& rhs ) const
12404 {
12405 return ( size == rhs.size )
12406 && ( flags == rhs.flags );
12407 }
12408
12409 bool operator!=( MemoryHeap const& rhs ) const
12410 {
12411 return !operator==( rhs );
12412 }
12413
12414 DeviceSize size;
12415 MemoryHeapFlags flags;
12416 };
12417 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12418
12419 struct PhysicalDeviceMemoryProperties
12420 {
12421 operator const VkPhysicalDeviceMemoryProperties&() const
12422 {
12423 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12424 }
12425
12426 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12427 {
12428 return ( memoryTypeCount == rhs.memoryTypeCount )
12429 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12430 && ( memoryHeapCount == rhs.memoryHeapCount )
12431 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12432 }
12433
12434 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12435 {
12436 return !operator==( rhs );
12437 }
12438
12439 uint32_t memoryTypeCount;
12440 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12441 uint32_t memoryHeapCount;
12442 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12443 };
12444 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12445
Mark Young39389872017-01-19 21:10:49 -070012446 struct PhysicalDeviceMemoryProperties2KHR
12447 {
12448 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12449 {
12450 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12451 }
12452
12453 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12454 {
12455 return ( sType == rhs.sType )
12456 && ( pNext == rhs.pNext )
12457 && ( memoryProperties == rhs.memoryProperties );
12458 }
12459
12460 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12461 {
12462 return !operator==( rhs );
12463 }
12464
12465 private:
12466 StructureType sType;
12467
12468 public:
12469 void* pNext;
12470 PhysicalDeviceMemoryProperties memoryProperties;
12471 };
12472 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12473
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012474 enum class AccessFlagBits
12475 {
12476 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12477 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12478 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12479 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12480 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12481 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12482 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12483 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12484 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12485 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12486 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12487 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12488 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12489 eHostRead = VK_ACCESS_HOST_READ_BIT,
12490 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12491 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012492 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12493 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12494 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012495 };
12496
12497 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012499 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012500 {
12501 return AccessFlags( bit0 ) | bit1;
12502 }
12503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012504 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12505 {
12506 return ~( AccessFlags( bits ) );
12507 }
12508
12509 template <> struct FlagTraits<AccessFlagBits>
12510 {
12511 enum
12512 {
12513 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)
12514 };
12515 };
12516
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012517 struct MemoryBarrier
12518 {
12519 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12520 : sType( StructureType::eMemoryBarrier )
12521 , pNext( nullptr )
12522 , srcAccessMask( srcAccessMask_ )
12523 , dstAccessMask( dstAccessMask_ )
12524 {
12525 }
12526
12527 MemoryBarrier( VkMemoryBarrier const & rhs )
12528 {
12529 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12530 }
12531
12532 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12533 {
12534 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12535 return *this;
12536 }
12537
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012538 MemoryBarrier& setPNext( const void* pNext_ )
12539 {
12540 pNext = pNext_;
12541 return *this;
12542 }
12543
12544 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12545 {
12546 srcAccessMask = srcAccessMask_;
12547 return *this;
12548 }
12549
12550 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12551 {
12552 dstAccessMask = dstAccessMask_;
12553 return *this;
12554 }
12555
12556 operator const VkMemoryBarrier&() const
12557 {
12558 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12559 }
12560
12561 bool operator==( MemoryBarrier const& rhs ) const
12562 {
12563 return ( sType == rhs.sType )
12564 && ( pNext == rhs.pNext )
12565 && ( srcAccessMask == rhs.srcAccessMask )
12566 && ( dstAccessMask == rhs.dstAccessMask );
12567 }
12568
12569 bool operator!=( MemoryBarrier const& rhs ) const
12570 {
12571 return !operator==( rhs );
12572 }
12573
12574 private:
12575 StructureType sType;
12576
12577 public:
12578 const void* pNext;
12579 AccessFlags srcAccessMask;
12580 AccessFlags dstAccessMask;
12581 };
12582 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12583
12584 struct BufferMemoryBarrier
12585 {
12586 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12587 : sType( StructureType::eBufferMemoryBarrier )
12588 , pNext( nullptr )
12589 , srcAccessMask( srcAccessMask_ )
12590 , dstAccessMask( dstAccessMask_ )
12591 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12592 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12593 , buffer( buffer_ )
12594 , offset( offset_ )
12595 , size( size_ )
12596 {
12597 }
12598
12599 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12600 {
12601 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12602 }
12603
12604 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12605 {
12606 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12607 return *this;
12608 }
12609
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012610 BufferMemoryBarrier& setPNext( const void* pNext_ )
12611 {
12612 pNext = pNext_;
12613 return *this;
12614 }
12615
12616 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12617 {
12618 srcAccessMask = srcAccessMask_;
12619 return *this;
12620 }
12621
12622 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12623 {
12624 dstAccessMask = dstAccessMask_;
12625 return *this;
12626 }
12627
12628 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12629 {
12630 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12631 return *this;
12632 }
12633
12634 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12635 {
12636 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12637 return *this;
12638 }
12639
12640 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12641 {
12642 buffer = buffer_;
12643 return *this;
12644 }
12645
12646 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12647 {
12648 offset = offset_;
12649 return *this;
12650 }
12651
12652 BufferMemoryBarrier& setSize( DeviceSize size_ )
12653 {
12654 size = size_;
12655 return *this;
12656 }
12657
12658 operator const VkBufferMemoryBarrier&() const
12659 {
12660 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12661 }
12662
12663 bool operator==( BufferMemoryBarrier const& rhs ) const
12664 {
12665 return ( sType == rhs.sType )
12666 && ( pNext == rhs.pNext )
12667 && ( srcAccessMask == rhs.srcAccessMask )
12668 && ( dstAccessMask == rhs.dstAccessMask )
12669 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12670 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12671 && ( buffer == rhs.buffer )
12672 && ( offset == rhs.offset )
12673 && ( size == rhs.size );
12674 }
12675
12676 bool operator!=( BufferMemoryBarrier const& rhs ) const
12677 {
12678 return !operator==( rhs );
12679 }
12680
12681 private:
12682 StructureType sType;
12683
12684 public:
12685 const void* pNext;
12686 AccessFlags srcAccessMask;
12687 AccessFlags dstAccessMask;
12688 uint32_t srcQueueFamilyIndex;
12689 uint32_t dstQueueFamilyIndex;
12690 Buffer buffer;
12691 DeviceSize offset;
12692 DeviceSize size;
12693 };
12694 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12695
12696 enum class BufferUsageFlagBits
12697 {
12698 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12699 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12700 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12701 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12702 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12703 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12704 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12705 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12706 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12707 };
12708
12709 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12710
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012711 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012712 {
12713 return BufferUsageFlags( bit0 ) | bit1;
12714 }
12715
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012716 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12717 {
12718 return ~( BufferUsageFlags( bits ) );
12719 }
12720
12721 template <> struct FlagTraits<BufferUsageFlagBits>
12722 {
12723 enum
12724 {
12725 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)
12726 };
12727 };
12728
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012729 enum class BufferCreateFlagBits
12730 {
12731 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
12732 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
12733 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
12734 };
12735
12736 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
12737
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012738 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012739 {
12740 return BufferCreateFlags( bit0 ) | bit1;
12741 }
12742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012743 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
12744 {
12745 return ~( BufferCreateFlags( bits ) );
12746 }
12747
12748 template <> struct FlagTraits<BufferCreateFlagBits>
12749 {
12750 enum
12751 {
12752 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
12753 };
12754 };
12755
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012756 struct BufferCreateInfo
12757 {
12758 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
12759 : sType( StructureType::eBufferCreateInfo )
12760 , pNext( nullptr )
12761 , flags( flags_ )
12762 , size( size_ )
12763 , usage( usage_ )
12764 , sharingMode( sharingMode_ )
12765 , queueFamilyIndexCount( queueFamilyIndexCount_ )
12766 , pQueueFamilyIndices( pQueueFamilyIndices_ )
12767 {
12768 }
12769
12770 BufferCreateInfo( VkBufferCreateInfo const & rhs )
12771 {
12772 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12773 }
12774
12775 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
12776 {
12777 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12778 return *this;
12779 }
12780
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012781 BufferCreateInfo& setPNext( const void* pNext_ )
12782 {
12783 pNext = pNext_;
12784 return *this;
12785 }
12786
12787 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
12788 {
12789 flags = flags_;
12790 return *this;
12791 }
12792
12793 BufferCreateInfo& setSize( DeviceSize size_ )
12794 {
12795 size = size_;
12796 return *this;
12797 }
12798
12799 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
12800 {
12801 usage = usage_;
12802 return *this;
12803 }
12804
12805 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
12806 {
12807 sharingMode = sharingMode_;
12808 return *this;
12809 }
12810
12811 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
12812 {
12813 queueFamilyIndexCount = queueFamilyIndexCount_;
12814 return *this;
12815 }
12816
12817 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
12818 {
12819 pQueueFamilyIndices = pQueueFamilyIndices_;
12820 return *this;
12821 }
12822
12823 operator const VkBufferCreateInfo&() const
12824 {
12825 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
12826 }
12827
12828 bool operator==( BufferCreateInfo const& rhs ) const
12829 {
12830 return ( sType == rhs.sType )
12831 && ( pNext == rhs.pNext )
12832 && ( flags == rhs.flags )
12833 && ( size == rhs.size )
12834 && ( usage == rhs.usage )
12835 && ( sharingMode == rhs.sharingMode )
12836 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
12837 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
12838 }
12839
12840 bool operator!=( BufferCreateInfo const& rhs ) const
12841 {
12842 return !operator==( rhs );
12843 }
12844
12845 private:
12846 StructureType sType;
12847
12848 public:
12849 const void* pNext;
12850 BufferCreateFlags flags;
12851 DeviceSize size;
12852 BufferUsageFlags usage;
12853 SharingMode sharingMode;
12854 uint32_t queueFamilyIndexCount;
12855 const uint32_t* pQueueFamilyIndices;
12856 };
12857 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
12858
12859 enum class ShaderStageFlagBits
12860 {
12861 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
12862 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
12863 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
12864 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
12865 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
12866 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
12867 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
12868 eAll = VK_SHADER_STAGE_ALL
12869 };
12870
12871 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
12872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012873 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012874 {
12875 return ShaderStageFlags( bit0 ) | bit1;
12876 }
12877
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012878 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
12879 {
12880 return ~( ShaderStageFlags( bits ) );
12881 }
12882
12883 template <> struct FlagTraits<ShaderStageFlagBits>
12884 {
12885 enum
12886 {
12887 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)
12888 };
12889 };
12890
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012891 struct DescriptorSetLayoutBinding
12892 {
12893 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
12894 : binding( binding_ )
12895 , descriptorType( descriptorType_ )
12896 , descriptorCount( descriptorCount_ )
12897 , stageFlags( stageFlags_ )
12898 , pImmutableSamplers( pImmutableSamplers_ )
12899 {
12900 }
12901
12902 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
12903 {
12904 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12905 }
12906
12907 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
12908 {
12909 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12910 return *this;
12911 }
12912
12913 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
12914 {
12915 binding = binding_;
12916 return *this;
12917 }
12918
12919 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
12920 {
12921 descriptorType = descriptorType_;
12922 return *this;
12923 }
12924
12925 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
12926 {
12927 descriptorCount = descriptorCount_;
12928 return *this;
12929 }
12930
12931 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
12932 {
12933 stageFlags = stageFlags_;
12934 return *this;
12935 }
12936
12937 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
12938 {
12939 pImmutableSamplers = pImmutableSamplers_;
12940 return *this;
12941 }
12942
12943 operator const VkDescriptorSetLayoutBinding&() const
12944 {
12945 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
12946 }
12947
12948 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
12949 {
12950 return ( binding == rhs.binding )
12951 && ( descriptorType == rhs.descriptorType )
12952 && ( descriptorCount == rhs.descriptorCount )
12953 && ( stageFlags == rhs.stageFlags )
12954 && ( pImmutableSamplers == rhs.pImmutableSamplers );
12955 }
12956
12957 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
12958 {
12959 return !operator==( rhs );
12960 }
12961
12962 uint32_t binding;
12963 DescriptorType descriptorType;
12964 uint32_t descriptorCount;
12965 ShaderStageFlags stageFlags;
12966 const Sampler* pImmutableSamplers;
12967 };
12968 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
12969
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012970 struct PipelineShaderStageCreateInfo
12971 {
12972 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
12973 : sType( StructureType::ePipelineShaderStageCreateInfo )
12974 , pNext( nullptr )
12975 , flags( flags_ )
12976 , stage( stage_ )
12977 , module( module_ )
12978 , pName( pName_ )
12979 , pSpecializationInfo( pSpecializationInfo_ )
12980 {
12981 }
12982
12983 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
12984 {
12985 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12986 }
12987
12988 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
12989 {
12990 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12991 return *this;
12992 }
12993
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012994 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
12995 {
12996 pNext = pNext_;
12997 return *this;
12998 }
12999
13000 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13001 {
13002 flags = flags_;
13003 return *this;
13004 }
13005
13006 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13007 {
13008 stage = stage_;
13009 return *this;
13010 }
13011
13012 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13013 {
13014 module = module_;
13015 return *this;
13016 }
13017
13018 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13019 {
13020 pName = pName_;
13021 return *this;
13022 }
13023
13024 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13025 {
13026 pSpecializationInfo = pSpecializationInfo_;
13027 return *this;
13028 }
13029
13030 operator const VkPipelineShaderStageCreateInfo&() const
13031 {
13032 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13033 }
13034
13035 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13036 {
13037 return ( sType == rhs.sType )
13038 && ( pNext == rhs.pNext )
13039 && ( flags == rhs.flags )
13040 && ( stage == rhs.stage )
13041 && ( module == rhs.module )
13042 && ( pName == rhs.pName )
13043 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13044 }
13045
13046 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13047 {
13048 return !operator==( rhs );
13049 }
13050
13051 private:
13052 StructureType sType;
13053
13054 public:
13055 const void* pNext;
13056 PipelineShaderStageCreateFlags flags;
13057 ShaderStageFlagBits stage;
13058 ShaderModule module;
13059 const char* pName;
13060 const SpecializationInfo* pSpecializationInfo;
13061 };
13062 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13063
13064 struct PushConstantRange
13065 {
13066 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13067 : stageFlags( stageFlags_ )
13068 , offset( offset_ )
13069 , size( size_ )
13070 {
13071 }
13072
13073 PushConstantRange( VkPushConstantRange const & rhs )
13074 {
13075 memcpy( this, &rhs, sizeof(PushConstantRange) );
13076 }
13077
13078 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13079 {
13080 memcpy( this, &rhs, sizeof(PushConstantRange) );
13081 return *this;
13082 }
13083
13084 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13085 {
13086 stageFlags = stageFlags_;
13087 return *this;
13088 }
13089
13090 PushConstantRange& setOffset( uint32_t offset_ )
13091 {
13092 offset = offset_;
13093 return *this;
13094 }
13095
13096 PushConstantRange& setSize( uint32_t size_ )
13097 {
13098 size = size_;
13099 return *this;
13100 }
13101
13102 operator const VkPushConstantRange&() const
13103 {
13104 return *reinterpret_cast<const VkPushConstantRange*>(this);
13105 }
13106
13107 bool operator==( PushConstantRange const& rhs ) const
13108 {
13109 return ( stageFlags == rhs.stageFlags )
13110 && ( offset == rhs.offset )
13111 && ( size == rhs.size );
13112 }
13113
13114 bool operator!=( PushConstantRange const& rhs ) const
13115 {
13116 return !operator==( rhs );
13117 }
13118
13119 ShaderStageFlags stageFlags;
13120 uint32_t offset;
13121 uint32_t size;
13122 };
13123 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13124
13125 struct PipelineLayoutCreateInfo
13126 {
13127 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13128 : sType( StructureType::ePipelineLayoutCreateInfo )
13129 , pNext( nullptr )
13130 , flags( flags_ )
13131 , setLayoutCount( setLayoutCount_ )
13132 , pSetLayouts( pSetLayouts_ )
13133 , pushConstantRangeCount( pushConstantRangeCount_ )
13134 , pPushConstantRanges( pPushConstantRanges_ )
13135 {
13136 }
13137
13138 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13139 {
13140 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13141 }
13142
13143 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13144 {
13145 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13146 return *this;
13147 }
13148
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013149 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13150 {
13151 pNext = pNext_;
13152 return *this;
13153 }
13154
13155 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13156 {
13157 flags = flags_;
13158 return *this;
13159 }
13160
13161 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13162 {
13163 setLayoutCount = setLayoutCount_;
13164 return *this;
13165 }
13166
13167 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13168 {
13169 pSetLayouts = pSetLayouts_;
13170 return *this;
13171 }
13172
13173 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13174 {
13175 pushConstantRangeCount = pushConstantRangeCount_;
13176 return *this;
13177 }
13178
13179 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13180 {
13181 pPushConstantRanges = pPushConstantRanges_;
13182 return *this;
13183 }
13184
13185 operator const VkPipelineLayoutCreateInfo&() const
13186 {
13187 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13188 }
13189
13190 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13191 {
13192 return ( sType == rhs.sType )
13193 && ( pNext == rhs.pNext )
13194 && ( flags == rhs.flags )
13195 && ( setLayoutCount == rhs.setLayoutCount )
13196 && ( pSetLayouts == rhs.pSetLayouts )
13197 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13198 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13199 }
13200
13201 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13202 {
13203 return !operator==( rhs );
13204 }
13205
13206 private:
13207 StructureType sType;
13208
13209 public:
13210 const void* pNext;
13211 PipelineLayoutCreateFlags flags;
13212 uint32_t setLayoutCount;
13213 const DescriptorSetLayout* pSetLayouts;
13214 uint32_t pushConstantRangeCount;
13215 const PushConstantRange* pPushConstantRanges;
13216 };
13217 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13218
13219 enum class ImageUsageFlagBits
13220 {
13221 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13222 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13223 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13224 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13225 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13226 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13227 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13228 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13229 };
13230
13231 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013233 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013234 {
13235 return ImageUsageFlags( bit0 ) | bit1;
13236 }
13237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013238 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13239 {
13240 return ~( ImageUsageFlags( bits ) );
13241 }
13242
13243 template <> struct FlagTraits<ImageUsageFlagBits>
13244 {
13245 enum
13246 {
13247 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)
13248 };
13249 };
13250
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013251 enum class ImageCreateFlagBits
13252 {
13253 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13254 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13255 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13256 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013257 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013258 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013259 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013260 };
13261
13262 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13263
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013264 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013265 {
13266 return ImageCreateFlags( bit0 ) | bit1;
13267 }
13268
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013269 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13270 {
13271 return ~( ImageCreateFlags( bits ) );
13272 }
13273
13274 template <> struct FlagTraits<ImageCreateFlagBits>
13275 {
13276 enum
13277 {
Mark Young0f183a82017-02-28 09:58:04 -070013278 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 -070013279 };
13280 };
13281
Mark Young39389872017-01-19 21:10:49 -070013282 struct PhysicalDeviceImageFormatInfo2KHR
13283 {
13284 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13285 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13286 , pNext( nullptr )
13287 , format( format_ )
13288 , type( type_ )
13289 , tiling( tiling_ )
13290 , usage( usage_ )
13291 , flags( flags_ )
13292 {
13293 }
13294
13295 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13296 {
13297 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13298 }
13299
13300 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13301 {
13302 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13303 return *this;
13304 }
13305
Mark Young39389872017-01-19 21:10:49 -070013306 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13307 {
13308 pNext = pNext_;
13309 return *this;
13310 }
13311
13312 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13313 {
13314 format = format_;
13315 return *this;
13316 }
13317
13318 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13319 {
13320 type = type_;
13321 return *this;
13322 }
13323
13324 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13325 {
13326 tiling = tiling_;
13327 return *this;
13328 }
13329
13330 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13331 {
13332 usage = usage_;
13333 return *this;
13334 }
13335
13336 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13337 {
13338 flags = flags_;
13339 return *this;
13340 }
13341
13342 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13343 {
13344 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13345 }
13346
13347 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13348 {
13349 return ( sType == rhs.sType )
13350 && ( pNext == rhs.pNext )
13351 && ( format == rhs.format )
13352 && ( type == rhs.type )
13353 && ( tiling == rhs.tiling )
13354 && ( usage == rhs.usage )
13355 && ( flags == rhs.flags );
13356 }
13357
13358 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13359 {
13360 return !operator==( rhs );
13361 }
13362
13363 private:
13364 StructureType sType;
13365
13366 public:
13367 const void* pNext;
13368 Format format;
13369 ImageType type;
13370 ImageTiling tiling;
13371 ImageUsageFlags usage;
13372 ImageCreateFlags flags;
13373 };
13374 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13375
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013376 enum class PipelineCreateFlagBits
13377 {
13378 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13379 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013380 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13381 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13382 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013383 };
13384
13385 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13386
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013387 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013388 {
13389 return PipelineCreateFlags( bit0 ) | bit1;
13390 }
13391
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013392 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13393 {
13394 return ~( PipelineCreateFlags( bits ) );
13395 }
13396
13397 template <> struct FlagTraits<PipelineCreateFlagBits>
13398 {
13399 enum
13400 {
Mark Young0f183a82017-02-28 09:58:04 -070013401 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013402 };
13403 };
13404
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013405 struct ComputePipelineCreateInfo
13406 {
13407 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13408 : sType( StructureType::eComputePipelineCreateInfo )
13409 , pNext( nullptr )
13410 , flags( flags_ )
13411 , stage( stage_ )
13412 , layout( layout_ )
13413 , basePipelineHandle( basePipelineHandle_ )
13414 , basePipelineIndex( basePipelineIndex_ )
13415 {
13416 }
13417
13418 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13419 {
13420 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13421 }
13422
13423 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13424 {
13425 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13426 return *this;
13427 }
13428
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013429 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13430 {
13431 pNext = pNext_;
13432 return *this;
13433 }
13434
13435 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13436 {
13437 flags = flags_;
13438 return *this;
13439 }
13440
13441 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13442 {
13443 stage = stage_;
13444 return *this;
13445 }
13446
13447 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13448 {
13449 layout = layout_;
13450 return *this;
13451 }
13452
13453 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13454 {
13455 basePipelineHandle = basePipelineHandle_;
13456 return *this;
13457 }
13458
13459 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13460 {
13461 basePipelineIndex = basePipelineIndex_;
13462 return *this;
13463 }
13464
13465 operator const VkComputePipelineCreateInfo&() const
13466 {
13467 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13468 }
13469
13470 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13471 {
13472 return ( sType == rhs.sType )
13473 && ( pNext == rhs.pNext )
13474 && ( flags == rhs.flags )
13475 && ( stage == rhs.stage )
13476 && ( layout == rhs.layout )
13477 && ( basePipelineHandle == rhs.basePipelineHandle )
13478 && ( basePipelineIndex == rhs.basePipelineIndex );
13479 }
13480
13481 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13482 {
13483 return !operator==( rhs );
13484 }
13485
13486 private:
13487 StructureType sType;
13488
13489 public:
13490 const void* pNext;
13491 PipelineCreateFlags flags;
13492 PipelineShaderStageCreateInfo stage;
13493 PipelineLayout layout;
13494 Pipeline basePipelineHandle;
13495 int32_t basePipelineIndex;
13496 };
13497 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13498
13499 enum class ColorComponentFlagBits
13500 {
13501 eR = VK_COLOR_COMPONENT_R_BIT,
13502 eG = VK_COLOR_COMPONENT_G_BIT,
13503 eB = VK_COLOR_COMPONENT_B_BIT,
13504 eA = VK_COLOR_COMPONENT_A_BIT
13505 };
13506
13507 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013509 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013510 {
13511 return ColorComponentFlags( bit0 ) | bit1;
13512 }
13513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013514 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13515 {
13516 return ~( ColorComponentFlags( bits ) );
13517 }
13518
13519 template <> struct FlagTraits<ColorComponentFlagBits>
13520 {
13521 enum
13522 {
13523 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13524 };
13525 };
13526
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013527 struct PipelineColorBlendAttachmentState
13528 {
13529 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() )
13530 : blendEnable( blendEnable_ )
13531 , srcColorBlendFactor( srcColorBlendFactor_ )
13532 , dstColorBlendFactor( dstColorBlendFactor_ )
13533 , colorBlendOp( colorBlendOp_ )
13534 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13535 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13536 , alphaBlendOp( alphaBlendOp_ )
13537 , colorWriteMask( colorWriteMask_ )
13538 {
13539 }
13540
13541 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13542 {
13543 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13544 }
13545
13546 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13547 {
13548 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13549 return *this;
13550 }
13551
13552 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13553 {
13554 blendEnable = blendEnable_;
13555 return *this;
13556 }
13557
13558 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13559 {
13560 srcColorBlendFactor = srcColorBlendFactor_;
13561 return *this;
13562 }
13563
13564 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13565 {
13566 dstColorBlendFactor = dstColorBlendFactor_;
13567 return *this;
13568 }
13569
13570 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13571 {
13572 colorBlendOp = colorBlendOp_;
13573 return *this;
13574 }
13575
13576 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13577 {
13578 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13579 return *this;
13580 }
13581
13582 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13583 {
13584 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13585 return *this;
13586 }
13587
13588 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13589 {
13590 alphaBlendOp = alphaBlendOp_;
13591 return *this;
13592 }
13593
13594 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13595 {
13596 colorWriteMask = colorWriteMask_;
13597 return *this;
13598 }
13599
13600 operator const VkPipelineColorBlendAttachmentState&() const
13601 {
13602 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13603 }
13604
13605 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13606 {
13607 return ( blendEnable == rhs.blendEnable )
13608 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13609 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13610 && ( colorBlendOp == rhs.colorBlendOp )
13611 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13612 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13613 && ( alphaBlendOp == rhs.alphaBlendOp )
13614 && ( colorWriteMask == rhs.colorWriteMask );
13615 }
13616
13617 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13618 {
13619 return !operator==( rhs );
13620 }
13621
13622 Bool32 blendEnable;
13623 BlendFactor srcColorBlendFactor;
13624 BlendFactor dstColorBlendFactor;
13625 BlendOp colorBlendOp;
13626 BlendFactor srcAlphaBlendFactor;
13627 BlendFactor dstAlphaBlendFactor;
13628 BlendOp alphaBlendOp;
13629 ColorComponentFlags colorWriteMask;
13630 };
13631 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13632
13633 struct PipelineColorBlendStateCreateInfo
13634 {
13635 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 } } )
13636 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13637 , pNext( nullptr )
13638 , flags( flags_ )
13639 , logicOpEnable( logicOpEnable_ )
13640 , logicOp( logicOp_ )
13641 , attachmentCount( attachmentCount_ )
13642 , pAttachments( pAttachments_ )
13643 {
13644 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13645 }
13646
13647 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13648 {
13649 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13650 }
13651
13652 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13653 {
13654 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13655 return *this;
13656 }
13657
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013658 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13659 {
13660 pNext = pNext_;
13661 return *this;
13662 }
13663
13664 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13665 {
13666 flags = flags_;
13667 return *this;
13668 }
13669
13670 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13671 {
13672 logicOpEnable = logicOpEnable_;
13673 return *this;
13674 }
13675
13676 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13677 {
13678 logicOp = logicOp_;
13679 return *this;
13680 }
13681
13682 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13683 {
13684 attachmentCount = attachmentCount_;
13685 return *this;
13686 }
13687
13688 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13689 {
13690 pAttachments = pAttachments_;
13691 return *this;
13692 }
13693
13694 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
13695 {
13696 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13697 return *this;
13698 }
13699
13700 operator const VkPipelineColorBlendStateCreateInfo&() const
13701 {
13702 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
13703 }
13704
13705 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
13706 {
13707 return ( sType == rhs.sType )
13708 && ( pNext == rhs.pNext )
13709 && ( flags == rhs.flags )
13710 && ( logicOpEnable == rhs.logicOpEnable )
13711 && ( logicOp == rhs.logicOp )
13712 && ( attachmentCount == rhs.attachmentCount )
13713 && ( pAttachments == rhs.pAttachments )
13714 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
13715 }
13716
13717 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
13718 {
13719 return !operator==( rhs );
13720 }
13721
13722 private:
13723 StructureType sType;
13724
13725 public:
13726 const void* pNext;
13727 PipelineColorBlendStateCreateFlags flags;
13728 Bool32 logicOpEnable;
13729 LogicOp logicOp;
13730 uint32_t attachmentCount;
13731 const PipelineColorBlendAttachmentState* pAttachments;
13732 float blendConstants[4];
13733 };
13734 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
13735
13736 enum class FenceCreateFlagBits
13737 {
13738 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
13739 };
13740
13741 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
13742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013743 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013744 {
13745 return FenceCreateFlags( bit0 ) | bit1;
13746 }
13747
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013748 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
13749 {
13750 return ~( FenceCreateFlags( bits ) );
13751 }
13752
13753 template <> struct FlagTraits<FenceCreateFlagBits>
13754 {
13755 enum
13756 {
13757 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
13758 };
13759 };
13760
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013761 struct FenceCreateInfo
13762 {
13763 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
13764 : sType( StructureType::eFenceCreateInfo )
13765 , pNext( nullptr )
13766 , flags( flags_ )
13767 {
13768 }
13769
13770 FenceCreateInfo( VkFenceCreateInfo const & rhs )
13771 {
13772 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13773 }
13774
13775 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
13776 {
13777 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13778 return *this;
13779 }
13780
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013781 FenceCreateInfo& setPNext( const void* pNext_ )
13782 {
13783 pNext = pNext_;
13784 return *this;
13785 }
13786
13787 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
13788 {
13789 flags = flags_;
13790 return *this;
13791 }
13792
13793 operator const VkFenceCreateInfo&() const
13794 {
13795 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
13796 }
13797
13798 bool operator==( FenceCreateInfo const& rhs ) const
13799 {
13800 return ( sType == rhs.sType )
13801 && ( pNext == rhs.pNext )
13802 && ( flags == rhs.flags );
13803 }
13804
13805 bool operator!=( FenceCreateInfo const& rhs ) const
13806 {
13807 return !operator==( rhs );
13808 }
13809
13810 private:
13811 StructureType sType;
13812
13813 public:
13814 const void* pNext;
13815 FenceCreateFlags flags;
13816 };
13817 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
13818
13819 enum class FormatFeatureFlagBits
13820 {
13821 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
13822 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
13823 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
13824 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
13825 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
13826 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
13827 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
13828 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
13829 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
13830 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
13831 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
13832 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
13833 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070013834 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
13835 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
13836 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013837 };
13838
13839 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
13840
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013841 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013842 {
13843 return FormatFeatureFlags( bit0 ) | bit1;
13844 }
13845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013846 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
13847 {
13848 return ~( FormatFeatureFlags( bits ) );
13849 }
13850
13851 template <> struct FlagTraits<FormatFeatureFlagBits>
13852 {
13853 enum
13854 {
Mark Young39389872017-01-19 21:10:49 -070013855 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 -070013856 };
13857 };
13858
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013859 struct FormatProperties
13860 {
13861 operator const VkFormatProperties&() const
13862 {
13863 return *reinterpret_cast<const VkFormatProperties*>(this);
13864 }
13865
13866 bool operator==( FormatProperties const& rhs ) const
13867 {
13868 return ( linearTilingFeatures == rhs.linearTilingFeatures )
13869 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
13870 && ( bufferFeatures == rhs.bufferFeatures );
13871 }
13872
13873 bool operator!=( FormatProperties const& rhs ) const
13874 {
13875 return !operator==( rhs );
13876 }
13877
13878 FormatFeatureFlags linearTilingFeatures;
13879 FormatFeatureFlags optimalTilingFeatures;
13880 FormatFeatureFlags bufferFeatures;
13881 };
13882 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
13883
Mark Young39389872017-01-19 21:10:49 -070013884 struct FormatProperties2KHR
13885 {
13886 operator const VkFormatProperties2KHR&() const
13887 {
13888 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
13889 }
13890
13891 bool operator==( FormatProperties2KHR const& rhs ) const
13892 {
13893 return ( sType == rhs.sType )
13894 && ( pNext == rhs.pNext )
13895 && ( formatProperties == rhs.formatProperties );
13896 }
13897
13898 bool operator!=( FormatProperties2KHR const& rhs ) const
13899 {
13900 return !operator==( rhs );
13901 }
13902
13903 private:
13904 StructureType sType;
13905
13906 public:
13907 void* pNext;
13908 FormatProperties formatProperties;
13909 };
13910 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
13911
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013912 enum class QueryControlFlagBits
13913 {
13914 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
13915 };
13916
13917 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
13918
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013919 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013920 {
13921 return QueryControlFlags( bit0 ) | bit1;
13922 }
13923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013924 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
13925 {
13926 return ~( QueryControlFlags( bits ) );
13927 }
13928
13929 template <> struct FlagTraits<QueryControlFlagBits>
13930 {
13931 enum
13932 {
13933 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
13934 };
13935 };
13936
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013937 enum class QueryResultFlagBits
13938 {
13939 e64 = VK_QUERY_RESULT_64_BIT,
13940 eWait = VK_QUERY_RESULT_WAIT_BIT,
13941 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
13942 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
13943 };
13944
13945 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
13946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013947 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013948 {
13949 return QueryResultFlags( bit0 ) | bit1;
13950 }
13951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013952 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
13953 {
13954 return ~( QueryResultFlags( bits ) );
13955 }
13956
13957 template <> struct FlagTraits<QueryResultFlagBits>
13958 {
13959 enum
13960 {
13961 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
13962 };
13963 };
13964
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013965 enum class CommandBufferUsageFlagBits
13966 {
13967 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
13968 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
13969 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
13970 };
13971
13972 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
13973
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013974 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013975 {
13976 return CommandBufferUsageFlags( bit0 ) | bit1;
13977 }
13978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013979 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
13980 {
13981 return ~( CommandBufferUsageFlags( bits ) );
13982 }
13983
13984 template <> struct FlagTraits<CommandBufferUsageFlagBits>
13985 {
13986 enum
13987 {
13988 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
13989 };
13990 };
13991
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013992 enum class QueryPipelineStatisticFlagBits
13993 {
13994 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
13995 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
13996 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
13997 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
13998 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
13999 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14000 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14001 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14002 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14003 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14004 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14005 };
14006
14007 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14008
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014009 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014010 {
14011 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14012 }
14013
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014014 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14015 {
14016 return ~( QueryPipelineStatisticFlags( bits ) );
14017 }
14018
14019 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14020 {
14021 enum
14022 {
14023 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)
14024 };
14025 };
14026
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014027 struct CommandBufferInheritanceInfo
14028 {
14029 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14030 : sType( StructureType::eCommandBufferInheritanceInfo )
14031 , pNext( nullptr )
14032 , renderPass( renderPass_ )
14033 , subpass( subpass_ )
14034 , framebuffer( framebuffer_ )
14035 , occlusionQueryEnable( occlusionQueryEnable_ )
14036 , queryFlags( queryFlags_ )
14037 , pipelineStatistics( pipelineStatistics_ )
14038 {
14039 }
14040
14041 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14042 {
14043 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14044 }
14045
14046 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14047 {
14048 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14049 return *this;
14050 }
14051
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014052 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14053 {
14054 pNext = pNext_;
14055 return *this;
14056 }
14057
14058 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14059 {
14060 renderPass = renderPass_;
14061 return *this;
14062 }
14063
14064 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14065 {
14066 subpass = subpass_;
14067 return *this;
14068 }
14069
14070 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14071 {
14072 framebuffer = framebuffer_;
14073 return *this;
14074 }
14075
14076 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14077 {
14078 occlusionQueryEnable = occlusionQueryEnable_;
14079 return *this;
14080 }
14081
14082 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14083 {
14084 queryFlags = queryFlags_;
14085 return *this;
14086 }
14087
14088 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14089 {
14090 pipelineStatistics = pipelineStatistics_;
14091 return *this;
14092 }
14093
14094 operator const VkCommandBufferInheritanceInfo&() const
14095 {
14096 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14097 }
14098
14099 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14100 {
14101 return ( sType == rhs.sType )
14102 && ( pNext == rhs.pNext )
14103 && ( renderPass == rhs.renderPass )
14104 && ( subpass == rhs.subpass )
14105 && ( framebuffer == rhs.framebuffer )
14106 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14107 && ( queryFlags == rhs.queryFlags )
14108 && ( pipelineStatistics == rhs.pipelineStatistics );
14109 }
14110
14111 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14112 {
14113 return !operator==( rhs );
14114 }
14115
14116 private:
14117 StructureType sType;
14118
14119 public:
14120 const void* pNext;
14121 RenderPass renderPass;
14122 uint32_t subpass;
14123 Framebuffer framebuffer;
14124 Bool32 occlusionQueryEnable;
14125 QueryControlFlags queryFlags;
14126 QueryPipelineStatisticFlags pipelineStatistics;
14127 };
14128 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14129
14130 struct CommandBufferBeginInfo
14131 {
14132 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14133 : sType( StructureType::eCommandBufferBeginInfo )
14134 , pNext( nullptr )
14135 , flags( flags_ )
14136 , pInheritanceInfo( pInheritanceInfo_ )
14137 {
14138 }
14139
14140 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14141 {
14142 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14143 }
14144
14145 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14146 {
14147 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14148 return *this;
14149 }
14150
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014151 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14152 {
14153 pNext = pNext_;
14154 return *this;
14155 }
14156
14157 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14158 {
14159 flags = flags_;
14160 return *this;
14161 }
14162
14163 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14164 {
14165 pInheritanceInfo = pInheritanceInfo_;
14166 return *this;
14167 }
14168
14169 operator const VkCommandBufferBeginInfo&() const
14170 {
14171 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14172 }
14173
14174 bool operator==( CommandBufferBeginInfo const& rhs ) const
14175 {
14176 return ( sType == rhs.sType )
14177 && ( pNext == rhs.pNext )
14178 && ( flags == rhs.flags )
14179 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14180 }
14181
14182 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14183 {
14184 return !operator==( rhs );
14185 }
14186
14187 private:
14188 StructureType sType;
14189
14190 public:
14191 const void* pNext;
14192 CommandBufferUsageFlags flags;
14193 const CommandBufferInheritanceInfo* pInheritanceInfo;
14194 };
14195 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14196
14197 struct QueryPoolCreateInfo
14198 {
14199 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14200 : sType( StructureType::eQueryPoolCreateInfo )
14201 , pNext( nullptr )
14202 , flags( flags_ )
14203 , queryType( queryType_ )
14204 , queryCount( queryCount_ )
14205 , pipelineStatistics( pipelineStatistics_ )
14206 {
14207 }
14208
14209 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14210 {
14211 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14212 }
14213
14214 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14215 {
14216 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14217 return *this;
14218 }
14219
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014220 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14221 {
14222 pNext = pNext_;
14223 return *this;
14224 }
14225
14226 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14227 {
14228 flags = flags_;
14229 return *this;
14230 }
14231
14232 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14233 {
14234 queryType = queryType_;
14235 return *this;
14236 }
14237
14238 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14239 {
14240 queryCount = queryCount_;
14241 return *this;
14242 }
14243
14244 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14245 {
14246 pipelineStatistics = pipelineStatistics_;
14247 return *this;
14248 }
14249
14250 operator const VkQueryPoolCreateInfo&() const
14251 {
14252 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14253 }
14254
14255 bool operator==( QueryPoolCreateInfo const& rhs ) const
14256 {
14257 return ( sType == rhs.sType )
14258 && ( pNext == rhs.pNext )
14259 && ( flags == rhs.flags )
14260 && ( queryType == rhs.queryType )
14261 && ( queryCount == rhs.queryCount )
14262 && ( pipelineStatistics == rhs.pipelineStatistics );
14263 }
14264
14265 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14266 {
14267 return !operator==( rhs );
14268 }
14269
14270 private:
14271 StructureType sType;
14272
14273 public:
14274 const void* pNext;
14275 QueryPoolCreateFlags flags;
14276 QueryType queryType;
14277 uint32_t queryCount;
14278 QueryPipelineStatisticFlags pipelineStatistics;
14279 };
14280 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14281
14282 enum class ImageAspectFlagBits
14283 {
14284 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14285 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14286 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14287 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14288 };
14289
14290 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14291
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014292 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014293 {
14294 return ImageAspectFlags( bit0 ) | bit1;
14295 }
14296
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014297 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14298 {
14299 return ~( ImageAspectFlags( bits ) );
14300 }
14301
14302 template <> struct FlagTraits<ImageAspectFlagBits>
14303 {
14304 enum
14305 {
14306 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14307 };
14308 };
14309
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014310 struct ImageSubresource
14311 {
14312 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14313 : aspectMask( aspectMask_ )
14314 , mipLevel( mipLevel_ )
14315 , arrayLayer( arrayLayer_ )
14316 {
14317 }
14318
14319 ImageSubresource( VkImageSubresource const & rhs )
14320 {
14321 memcpy( this, &rhs, sizeof(ImageSubresource) );
14322 }
14323
14324 ImageSubresource& operator=( VkImageSubresource const & rhs )
14325 {
14326 memcpy( this, &rhs, sizeof(ImageSubresource) );
14327 return *this;
14328 }
14329
14330 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14331 {
14332 aspectMask = aspectMask_;
14333 return *this;
14334 }
14335
14336 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14337 {
14338 mipLevel = mipLevel_;
14339 return *this;
14340 }
14341
14342 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14343 {
14344 arrayLayer = arrayLayer_;
14345 return *this;
14346 }
14347
14348 operator const VkImageSubresource&() const
14349 {
14350 return *reinterpret_cast<const VkImageSubresource*>(this);
14351 }
14352
14353 bool operator==( ImageSubresource const& rhs ) const
14354 {
14355 return ( aspectMask == rhs.aspectMask )
14356 && ( mipLevel == rhs.mipLevel )
14357 && ( arrayLayer == rhs.arrayLayer );
14358 }
14359
14360 bool operator!=( ImageSubresource const& rhs ) const
14361 {
14362 return !operator==( rhs );
14363 }
14364
14365 ImageAspectFlags aspectMask;
14366 uint32_t mipLevel;
14367 uint32_t arrayLayer;
14368 };
14369 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14370
14371 struct ImageSubresourceLayers
14372 {
14373 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14374 : aspectMask( aspectMask_ )
14375 , mipLevel( mipLevel_ )
14376 , baseArrayLayer( baseArrayLayer_ )
14377 , layerCount( layerCount_ )
14378 {
14379 }
14380
14381 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14382 {
14383 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14384 }
14385
14386 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14387 {
14388 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14389 return *this;
14390 }
14391
14392 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14393 {
14394 aspectMask = aspectMask_;
14395 return *this;
14396 }
14397
14398 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14399 {
14400 mipLevel = mipLevel_;
14401 return *this;
14402 }
14403
14404 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14405 {
14406 baseArrayLayer = baseArrayLayer_;
14407 return *this;
14408 }
14409
14410 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14411 {
14412 layerCount = layerCount_;
14413 return *this;
14414 }
14415
14416 operator const VkImageSubresourceLayers&() const
14417 {
14418 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14419 }
14420
14421 bool operator==( ImageSubresourceLayers const& rhs ) const
14422 {
14423 return ( aspectMask == rhs.aspectMask )
14424 && ( mipLevel == rhs.mipLevel )
14425 && ( baseArrayLayer == rhs.baseArrayLayer )
14426 && ( layerCount == rhs.layerCount );
14427 }
14428
14429 bool operator!=( ImageSubresourceLayers const& rhs ) const
14430 {
14431 return !operator==( rhs );
14432 }
14433
14434 ImageAspectFlags aspectMask;
14435 uint32_t mipLevel;
14436 uint32_t baseArrayLayer;
14437 uint32_t layerCount;
14438 };
14439 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14440
14441 struct ImageSubresourceRange
14442 {
14443 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14444 : aspectMask( aspectMask_ )
14445 , baseMipLevel( baseMipLevel_ )
14446 , levelCount( levelCount_ )
14447 , baseArrayLayer( baseArrayLayer_ )
14448 , layerCount( layerCount_ )
14449 {
14450 }
14451
14452 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14453 {
14454 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14455 }
14456
14457 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14458 {
14459 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14460 return *this;
14461 }
14462
14463 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14464 {
14465 aspectMask = aspectMask_;
14466 return *this;
14467 }
14468
14469 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14470 {
14471 baseMipLevel = baseMipLevel_;
14472 return *this;
14473 }
14474
14475 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14476 {
14477 levelCount = levelCount_;
14478 return *this;
14479 }
14480
14481 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14482 {
14483 baseArrayLayer = baseArrayLayer_;
14484 return *this;
14485 }
14486
14487 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14488 {
14489 layerCount = layerCount_;
14490 return *this;
14491 }
14492
14493 operator const VkImageSubresourceRange&() const
14494 {
14495 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14496 }
14497
14498 bool operator==( ImageSubresourceRange const& rhs ) const
14499 {
14500 return ( aspectMask == rhs.aspectMask )
14501 && ( baseMipLevel == rhs.baseMipLevel )
14502 && ( levelCount == rhs.levelCount )
14503 && ( baseArrayLayer == rhs.baseArrayLayer )
14504 && ( layerCount == rhs.layerCount );
14505 }
14506
14507 bool operator!=( ImageSubresourceRange const& rhs ) const
14508 {
14509 return !operator==( rhs );
14510 }
14511
14512 ImageAspectFlags aspectMask;
14513 uint32_t baseMipLevel;
14514 uint32_t levelCount;
14515 uint32_t baseArrayLayer;
14516 uint32_t layerCount;
14517 };
14518 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14519
14520 struct ImageMemoryBarrier
14521 {
14522 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() )
14523 : sType( StructureType::eImageMemoryBarrier )
14524 , pNext( nullptr )
14525 , srcAccessMask( srcAccessMask_ )
14526 , dstAccessMask( dstAccessMask_ )
14527 , oldLayout( oldLayout_ )
14528 , newLayout( newLayout_ )
14529 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14530 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14531 , image( image_ )
14532 , subresourceRange( subresourceRange_ )
14533 {
14534 }
14535
14536 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14537 {
14538 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14539 }
14540
14541 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14542 {
14543 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14544 return *this;
14545 }
14546
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014547 ImageMemoryBarrier& setPNext( const void* pNext_ )
14548 {
14549 pNext = pNext_;
14550 return *this;
14551 }
14552
14553 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14554 {
14555 srcAccessMask = srcAccessMask_;
14556 return *this;
14557 }
14558
14559 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14560 {
14561 dstAccessMask = dstAccessMask_;
14562 return *this;
14563 }
14564
14565 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14566 {
14567 oldLayout = oldLayout_;
14568 return *this;
14569 }
14570
14571 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14572 {
14573 newLayout = newLayout_;
14574 return *this;
14575 }
14576
14577 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14578 {
14579 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14580 return *this;
14581 }
14582
14583 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14584 {
14585 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14586 return *this;
14587 }
14588
14589 ImageMemoryBarrier& setImage( Image image_ )
14590 {
14591 image = image_;
14592 return *this;
14593 }
14594
14595 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14596 {
14597 subresourceRange = subresourceRange_;
14598 return *this;
14599 }
14600
14601 operator const VkImageMemoryBarrier&() const
14602 {
14603 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14604 }
14605
14606 bool operator==( ImageMemoryBarrier const& rhs ) const
14607 {
14608 return ( sType == rhs.sType )
14609 && ( pNext == rhs.pNext )
14610 && ( srcAccessMask == rhs.srcAccessMask )
14611 && ( dstAccessMask == rhs.dstAccessMask )
14612 && ( oldLayout == rhs.oldLayout )
14613 && ( newLayout == rhs.newLayout )
14614 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14615 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14616 && ( image == rhs.image )
14617 && ( subresourceRange == rhs.subresourceRange );
14618 }
14619
14620 bool operator!=( ImageMemoryBarrier const& rhs ) const
14621 {
14622 return !operator==( rhs );
14623 }
14624
14625 private:
14626 StructureType sType;
14627
14628 public:
14629 const void* pNext;
14630 AccessFlags srcAccessMask;
14631 AccessFlags dstAccessMask;
14632 ImageLayout oldLayout;
14633 ImageLayout newLayout;
14634 uint32_t srcQueueFamilyIndex;
14635 uint32_t dstQueueFamilyIndex;
14636 Image image;
14637 ImageSubresourceRange subresourceRange;
14638 };
14639 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14640
14641 struct ImageViewCreateInfo
14642 {
14643 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14644 : sType( StructureType::eImageViewCreateInfo )
14645 , pNext( nullptr )
14646 , flags( flags_ )
14647 , image( image_ )
14648 , viewType( viewType_ )
14649 , format( format_ )
14650 , components( components_ )
14651 , subresourceRange( subresourceRange_ )
14652 {
14653 }
14654
14655 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14656 {
14657 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14658 }
14659
14660 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14661 {
14662 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14663 return *this;
14664 }
14665
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014666 ImageViewCreateInfo& setPNext( const void* pNext_ )
14667 {
14668 pNext = pNext_;
14669 return *this;
14670 }
14671
14672 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14673 {
14674 flags = flags_;
14675 return *this;
14676 }
14677
14678 ImageViewCreateInfo& setImage( Image image_ )
14679 {
14680 image = image_;
14681 return *this;
14682 }
14683
14684 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14685 {
14686 viewType = viewType_;
14687 return *this;
14688 }
14689
14690 ImageViewCreateInfo& setFormat( Format format_ )
14691 {
14692 format = format_;
14693 return *this;
14694 }
14695
14696 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
14697 {
14698 components = components_;
14699 return *this;
14700 }
14701
14702 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14703 {
14704 subresourceRange = subresourceRange_;
14705 return *this;
14706 }
14707
14708 operator const VkImageViewCreateInfo&() const
14709 {
14710 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
14711 }
14712
14713 bool operator==( ImageViewCreateInfo const& rhs ) const
14714 {
14715 return ( sType == rhs.sType )
14716 && ( pNext == rhs.pNext )
14717 && ( flags == rhs.flags )
14718 && ( image == rhs.image )
14719 && ( viewType == rhs.viewType )
14720 && ( format == rhs.format )
14721 && ( components == rhs.components )
14722 && ( subresourceRange == rhs.subresourceRange );
14723 }
14724
14725 bool operator!=( ImageViewCreateInfo const& rhs ) const
14726 {
14727 return !operator==( rhs );
14728 }
14729
14730 private:
14731 StructureType sType;
14732
14733 public:
14734 const void* pNext;
14735 ImageViewCreateFlags flags;
14736 Image image;
14737 ImageViewType viewType;
14738 Format format;
14739 ComponentMapping components;
14740 ImageSubresourceRange subresourceRange;
14741 };
14742 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
14743
14744 struct ImageCopy
14745 {
14746 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14747 : srcSubresource( srcSubresource_ )
14748 , srcOffset( srcOffset_ )
14749 , dstSubresource( dstSubresource_ )
14750 , dstOffset( dstOffset_ )
14751 , extent( extent_ )
14752 {
14753 }
14754
14755 ImageCopy( VkImageCopy const & rhs )
14756 {
14757 memcpy( this, &rhs, sizeof(ImageCopy) );
14758 }
14759
14760 ImageCopy& operator=( VkImageCopy const & rhs )
14761 {
14762 memcpy( this, &rhs, sizeof(ImageCopy) );
14763 return *this;
14764 }
14765
14766 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14767 {
14768 srcSubresource = srcSubresource_;
14769 return *this;
14770 }
14771
14772 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
14773 {
14774 srcOffset = srcOffset_;
14775 return *this;
14776 }
14777
14778 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14779 {
14780 dstSubresource = dstSubresource_;
14781 return *this;
14782 }
14783
14784 ImageCopy& setDstOffset( Offset3D dstOffset_ )
14785 {
14786 dstOffset = dstOffset_;
14787 return *this;
14788 }
14789
14790 ImageCopy& setExtent( Extent3D extent_ )
14791 {
14792 extent = extent_;
14793 return *this;
14794 }
14795
14796 operator const VkImageCopy&() const
14797 {
14798 return *reinterpret_cast<const VkImageCopy*>(this);
14799 }
14800
14801 bool operator==( ImageCopy const& rhs ) const
14802 {
14803 return ( srcSubresource == rhs.srcSubresource )
14804 && ( srcOffset == rhs.srcOffset )
14805 && ( dstSubresource == rhs.dstSubresource )
14806 && ( dstOffset == rhs.dstOffset )
14807 && ( extent == rhs.extent );
14808 }
14809
14810 bool operator!=( ImageCopy const& rhs ) const
14811 {
14812 return !operator==( rhs );
14813 }
14814
14815 ImageSubresourceLayers srcSubresource;
14816 Offset3D srcOffset;
14817 ImageSubresourceLayers dstSubresource;
14818 Offset3D dstOffset;
14819 Extent3D extent;
14820 };
14821 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
14822
14823 struct ImageBlit
14824 {
14825 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
14826 : srcSubresource( srcSubresource_ )
14827 , dstSubresource( dstSubresource_ )
14828 {
14829 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14830 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14831 }
14832
14833 ImageBlit( VkImageBlit const & rhs )
14834 {
14835 memcpy( this, &rhs, sizeof(ImageBlit) );
14836 }
14837
14838 ImageBlit& operator=( VkImageBlit const & rhs )
14839 {
14840 memcpy( this, &rhs, sizeof(ImageBlit) );
14841 return *this;
14842 }
14843
14844 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14845 {
14846 srcSubresource = srcSubresource_;
14847 return *this;
14848 }
14849
14850 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
14851 {
14852 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14853 return *this;
14854 }
14855
14856 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14857 {
14858 dstSubresource = dstSubresource_;
14859 return *this;
14860 }
14861
14862 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
14863 {
14864 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14865 return *this;
14866 }
14867
14868 operator const VkImageBlit&() const
14869 {
14870 return *reinterpret_cast<const VkImageBlit*>(this);
14871 }
14872
14873 bool operator==( ImageBlit const& rhs ) const
14874 {
14875 return ( srcSubresource == rhs.srcSubresource )
14876 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
14877 && ( dstSubresource == rhs.dstSubresource )
14878 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
14879 }
14880
14881 bool operator!=( ImageBlit const& rhs ) const
14882 {
14883 return !operator==( rhs );
14884 }
14885
14886 ImageSubresourceLayers srcSubresource;
14887 Offset3D srcOffsets[2];
14888 ImageSubresourceLayers dstSubresource;
14889 Offset3D dstOffsets[2];
14890 };
14891 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
14892
14893 struct BufferImageCopy
14894 {
14895 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
14896 : bufferOffset( bufferOffset_ )
14897 , bufferRowLength( bufferRowLength_ )
14898 , bufferImageHeight( bufferImageHeight_ )
14899 , imageSubresource( imageSubresource_ )
14900 , imageOffset( imageOffset_ )
14901 , imageExtent( imageExtent_ )
14902 {
14903 }
14904
14905 BufferImageCopy( VkBufferImageCopy const & rhs )
14906 {
14907 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14908 }
14909
14910 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
14911 {
14912 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14913 return *this;
14914 }
14915
14916 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
14917 {
14918 bufferOffset = bufferOffset_;
14919 return *this;
14920 }
14921
14922 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
14923 {
14924 bufferRowLength = bufferRowLength_;
14925 return *this;
14926 }
14927
14928 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
14929 {
14930 bufferImageHeight = bufferImageHeight_;
14931 return *this;
14932 }
14933
14934 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
14935 {
14936 imageSubresource = imageSubresource_;
14937 return *this;
14938 }
14939
14940 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
14941 {
14942 imageOffset = imageOffset_;
14943 return *this;
14944 }
14945
14946 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
14947 {
14948 imageExtent = imageExtent_;
14949 return *this;
14950 }
14951
14952 operator const VkBufferImageCopy&() const
14953 {
14954 return *reinterpret_cast<const VkBufferImageCopy*>(this);
14955 }
14956
14957 bool operator==( BufferImageCopy const& rhs ) const
14958 {
14959 return ( bufferOffset == rhs.bufferOffset )
14960 && ( bufferRowLength == rhs.bufferRowLength )
14961 && ( bufferImageHeight == rhs.bufferImageHeight )
14962 && ( imageSubresource == rhs.imageSubresource )
14963 && ( imageOffset == rhs.imageOffset )
14964 && ( imageExtent == rhs.imageExtent );
14965 }
14966
14967 bool operator!=( BufferImageCopy const& rhs ) const
14968 {
14969 return !operator==( rhs );
14970 }
14971
14972 DeviceSize bufferOffset;
14973 uint32_t bufferRowLength;
14974 uint32_t bufferImageHeight;
14975 ImageSubresourceLayers imageSubresource;
14976 Offset3D imageOffset;
14977 Extent3D imageExtent;
14978 };
14979 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
14980
14981 struct ImageResolve
14982 {
14983 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14984 : srcSubresource( srcSubresource_ )
14985 , srcOffset( srcOffset_ )
14986 , dstSubresource( dstSubresource_ )
14987 , dstOffset( dstOffset_ )
14988 , extent( extent_ )
14989 {
14990 }
14991
14992 ImageResolve( VkImageResolve const & rhs )
14993 {
14994 memcpy( this, &rhs, sizeof(ImageResolve) );
14995 }
14996
14997 ImageResolve& operator=( VkImageResolve const & rhs )
14998 {
14999 memcpy( this, &rhs, sizeof(ImageResolve) );
15000 return *this;
15001 }
15002
15003 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15004 {
15005 srcSubresource = srcSubresource_;
15006 return *this;
15007 }
15008
15009 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15010 {
15011 srcOffset = srcOffset_;
15012 return *this;
15013 }
15014
15015 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15016 {
15017 dstSubresource = dstSubresource_;
15018 return *this;
15019 }
15020
15021 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15022 {
15023 dstOffset = dstOffset_;
15024 return *this;
15025 }
15026
15027 ImageResolve& setExtent( Extent3D extent_ )
15028 {
15029 extent = extent_;
15030 return *this;
15031 }
15032
15033 operator const VkImageResolve&() const
15034 {
15035 return *reinterpret_cast<const VkImageResolve*>(this);
15036 }
15037
15038 bool operator==( ImageResolve const& rhs ) const
15039 {
15040 return ( srcSubresource == rhs.srcSubresource )
15041 && ( srcOffset == rhs.srcOffset )
15042 && ( dstSubresource == rhs.dstSubresource )
15043 && ( dstOffset == rhs.dstOffset )
15044 && ( extent == rhs.extent );
15045 }
15046
15047 bool operator!=( ImageResolve const& rhs ) const
15048 {
15049 return !operator==( rhs );
15050 }
15051
15052 ImageSubresourceLayers srcSubresource;
15053 Offset3D srcOffset;
15054 ImageSubresourceLayers dstSubresource;
15055 Offset3D dstOffset;
15056 Extent3D extent;
15057 };
15058 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15059
15060 struct ClearAttachment
15061 {
15062 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15063 : aspectMask( aspectMask_ )
15064 , colorAttachment( colorAttachment_ )
15065 , clearValue( clearValue_ )
15066 {
15067 }
15068
15069 ClearAttachment( VkClearAttachment const & rhs )
15070 {
15071 memcpy( this, &rhs, sizeof(ClearAttachment) );
15072 }
15073
15074 ClearAttachment& operator=( VkClearAttachment const & rhs )
15075 {
15076 memcpy( this, &rhs, sizeof(ClearAttachment) );
15077 return *this;
15078 }
15079
15080 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15081 {
15082 aspectMask = aspectMask_;
15083 return *this;
15084 }
15085
15086 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15087 {
15088 colorAttachment = colorAttachment_;
15089 return *this;
15090 }
15091
15092 ClearAttachment& setClearValue( ClearValue clearValue_ )
15093 {
15094 clearValue = clearValue_;
15095 return *this;
15096 }
15097
15098 operator const VkClearAttachment&() const
15099 {
15100 return *reinterpret_cast<const VkClearAttachment*>(this);
15101 }
15102
15103 ImageAspectFlags aspectMask;
15104 uint32_t colorAttachment;
15105 ClearValue clearValue;
15106 };
15107 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15108
15109 enum class SparseImageFormatFlagBits
15110 {
15111 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15112 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15113 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15114 };
15115
15116 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15117
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015118 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015119 {
15120 return SparseImageFormatFlags( bit0 ) | bit1;
15121 }
15122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015123 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15124 {
15125 return ~( SparseImageFormatFlags( bits ) );
15126 }
15127
15128 template <> struct FlagTraits<SparseImageFormatFlagBits>
15129 {
15130 enum
15131 {
15132 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15133 };
15134 };
15135
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015136 struct SparseImageFormatProperties
15137 {
15138 operator const VkSparseImageFormatProperties&() const
15139 {
15140 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15141 }
15142
15143 bool operator==( SparseImageFormatProperties const& rhs ) const
15144 {
15145 return ( aspectMask == rhs.aspectMask )
15146 && ( imageGranularity == rhs.imageGranularity )
15147 && ( flags == rhs.flags );
15148 }
15149
15150 bool operator!=( SparseImageFormatProperties const& rhs ) const
15151 {
15152 return !operator==( rhs );
15153 }
15154
15155 ImageAspectFlags aspectMask;
15156 Extent3D imageGranularity;
15157 SparseImageFormatFlags flags;
15158 };
15159 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15160
15161 struct SparseImageMemoryRequirements
15162 {
15163 operator const VkSparseImageMemoryRequirements&() const
15164 {
15165 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15166 }
15167
15168 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15169 {
15170 return ( formatProperties == rhs.formatProperties )
15171 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15172 && ( imageMipTailSize == rhs.imageMipTailSize )
15173 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15174 && ( imageMipTailStride == rhs.imageMipTailStride );
15175 }
15176
15177 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15178 {
15179 return !operator==( rhs );
15180 }
15181
15182 SparseImageFormatProperties formatProperties;
15183 uint32_t imageMipTailFirstLod;
15184 DeviceSize imageMipTailSize;
15185 DeviceSize imageMipTailOffset;
15186 DeviceSize imageMipTailStride;
15187 };
15188 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15189
Mark Young39389872017-01-19 21:10:49 -070015190 struct SparseImageFormatProperties2KHR
15191 {
15192 operator const VkSparseImageFormatProperties2KHR&() const
15193 {
15194 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15195 }
15196
15197 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15198 {
15199 return ( sType == rhs.sType )
15200 && ( pNext == rhs.pNext )
15201 && ( properties == rhs.properties );
15202 }
15203
15204 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15205 {
15206 return !operator==( rhs );
15207 }
15208
15209 private:
15210 StructureType sType;
15211
15212 public:
15213 void* pNext;
15214 SparseImageFormatProperties properties;
15215 };
15216 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15217
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015218 enum class SparseMemoryBindFlagBits
15219 {
15220 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15221 };
15222
15223 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15224
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015225 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015226 {
15227 return SparseMemoryBindFlags( bit0 ) | bit1;
15228 }
15229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015230 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15231 {
15232 return ~( SparseMemoryBindFlags( bits ) );
15233 }
15234
15235 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15236 {
15237 enum
15238 {
15239 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15240 };
15241 };
15242
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015243 struct SparseMemoryBind
15244 {
15245 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15246 : resourceOffset( resourceOffset_ )
15247 , size( size_ )
15248 , memory( memory_ )
15249 , memoryOffset( memoryOffset_ )
15250 , flags( flags_ )
15251 {
15252 }
15253
15254 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15255 {
15256 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15257 }
15258
15259 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15260 {
15261 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15262 return *this;
15263 }
15264
15265 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15266 {
15267 resourceOffset = resourceOffset_;
15268 return *this;
15269 }
15270
15271 SparseMemoryBind& setSize( DeviceSize size_ )
15272 {
15273 size = size_;
15274 return *this;
15275 }
15276
15277 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15278 {
15279 memory = memory_;
15280 return *this;
15281 }
15282
15283 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15284 {
15285 memoryOffset = memoryOffset_;
15286 return *this;
15287 }
15288
15289 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15290 {
15291 flags = flags_;
15292 return *this;
15293 }
15294
15295 operator const VkSparseMemoryBind&() const
15296 {
15297 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15298 }
15299
15300 bool operator==( SparseMemoryBind const& rhs ) const
15301 {
15302 return ( resourceOffset == rhs.resourceOffset )
15303 && ( size == rhs.size )
15304 && ( memory == rhs.memory )
15305 && ( memoryOffset == rhs.memoryOffset )
15306 && ( flags == rhs.flags );
15307 }
15308
15309 bool operator!=( SparseMemoryBind const& rhs ) const
15310 {
15311 return !operator==( rhs );
15312 }
15313
15314 DeviceSize resourceOffset;
15315 DeviceSize size;
15316 DeviceMemory memory;
15317 DeviceSize memoryOffset;
15318 SparseMemoryBindFlags flags;
15319 };
15320 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15321
15322 struct SparseImageMemoryBind
15323 {
15324 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15325 : subresource( subresource_ )
15326 , offset( offset_ )
15327 , extent( extent_ )
15328 , memory( memory_ )
15329 , memoryOffset( memoryOffset_ )
15330 , flags( flags_ )
15331 {
15332 }
15333
15334 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15335 {
15336 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15337 }
15338
15339 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15340 {
15341 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15342 return *this;
15343 }
15344
15345 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15346 {
15347 subresource = subresource_;
15348 return *this;
15349 }
15350
15351 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15352 {
15353 offset = offset_;
15354 return *this;
15355 }
15356
15357 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15358 {
15359 extent = extent_;
15360 return *this;
15361 }
15362
15363 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15364 {
15365 memory = memory_;
15366 return *this;
15367 }
15368
15369 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15370 {
15371 memoryOffset = memoryOffset_;
15372 return *this;
15373 }
15374
15375 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15376 {
15377 flags = flags_;
15378 return *this;
15379 }
15380
15381 operator const VkSparseImageMemoryBind&() const
15382 {
15383 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15384 }
15385
15386 bool operator==( SparseImageMemoryBind const& rhs ) const
15387 {
15388 return ( subresource == rhs.subresource )
15389 && ( offset == rhs.offset )
15390 && ( extent == rhs.extent )
15391 && ( memory == rhs.memory )
15392 && ( memoryOffset == rhs.memoryOffset )
15393 && ( flags == rhs.flags );
15394 }
15395
15396 bool operator!=( SparseImageMemoryBind const& rhs ) const
15397 {
15398 return !operator==( rhs );
15399 }
15400
15401 ImageSubresource subresource;
15402 Offset3D offset;
15403 Extent3D extent;
15404 DeviceMemory memory;
15405 DeviceSize memoryOffset;
15406 SparseMemoryBindFlags flags;
15407 };
15408 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15409
15410 struct SparseBufferMemoryBindInfo
15411 {
15412 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15413 : buffer( buffer_ )
15414 , bindCount( bindCount_ )
15415 , pBinds( pBinds_ )
15416 {
15417 }
15418
15419 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15420 {
15421 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15422 }
15423
15424 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15425 {
15426 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15427 return *this;
15428 }
15429
15430 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15431 {
15432 buffer = buffer_;
15433 return *this;
15434 }
15435
15436 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15437 {
15438 bindCount = bindCount_;
15439 return *this;
15440 }
15441
15442 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15443 {
15444 pBinds = pBinds_;
15445 return *this;
15446 }
15447
15448 operator const VkSparseBufferMemoryBindInfo&() const
15449 {
15450 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15451 }
15452
15453 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15454 {
15455 return ( buffer == rhs.buffer )
15456 && ( bindCount == rhs.bindCount )
15457 && ( pBinds == rhs.pBinds );
15458 }
15459
15460 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15461 {
15462 return !operator==( rhs );
15463 }
15464
15465 Buffer buffer;
15466 uint32_t bindCount;
15467 const SparseMemoryBind* pBinds;
15468 };
15469 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15470
15471 struct SparseImageOpaqueMemoryBindInfo
15472 {
15473 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15474 : image( image_ )
15475 , bindCount( bindCount_ )
15476 , pBinds( pBinds_ )
15477 {
15478 }
15479
15480 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15481 {
15482 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15483 }
15484
15485 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15486 {
15487 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15488 return *this;
15489 }
15490
15491 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15492 {
15493 image = image_;
15494 return *this;
15495 }
15496
15497 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15498 {
15499 bindCount = bindCount_;
15500 return *this;
15501 }
15502
15503 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15504 {
15505 pBinds = pBinds_;
15506 return *this;
15507 }
15508
15509 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15510 {
15511 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15512 }
15513
15514 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15515 {
15516 return ( image == rhs.image )
15517 && ( bindCount == rhs.bindCount )
15518 && ( pBinds == rhs.pBinds );
15519 }
15520
15521 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15522 {
15523 return !operator==( rhs );
15524 }
15525
15526 Image image;
15527 uint32_t bindCount;
15528 const SparseMemoryBind* pBinds;
15529 };
15530 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15531
15532 struct SparseImageMemoryBindInfo
15533 {
15534 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15535 : image( image_ )
15536 , bindCount( bindCount_ )
15537 , pBinds( pBinds_ )
15538 {
15539 }
15540
15541 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15542 {
15543 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15544 }
15545
15546 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15547 {
15548 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15549 return *this;
15550 }
15551
15552 SparseImageMemoryBindInfo& setImage( Image image_ )
15553 {
15554 image = image_;
15555 return *this;
15556 }
15557
15558 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15559 {
15560 bindCount = bindCount_;
15561 return *this;
15562 }
15563
15564 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15565 {
15566 pBinds = pBinds_;
15567 return *this;
15568 }
15569
15570 operator const VkSparseImageMemoryBindInfo&() const
15571 {
15572 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15573 }
15574
15575 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15576 {
15577 return ( image == rhs.image )
15578 && ( bindCount == rhs.bindCount )
15579 && ( pBinds == rhs.pBinds );
15580 }
15581
15582 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15583 {
15584 return !operator==( rhs );
15585 }
15586
15587 Image image;
15588 uint32_t bindCount;
15589 const SparseImageMemoryBind* pBinds;
15590 };
15591 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15592
15593 struct BindSparseInfo
15594 {
15595 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 )
15596 : sType( StructureType::eBindSparseInfo )
15597 , pNext( nullptr )
15598 , waitSemaphoreCount( waitSemaphoreCount_ )
15599 , pWaitSemaphores( pWaitSemaphores_ )
15600 , bufferBindCount( bufferBindCount_ )
15601 , pBufferBinds( pBufferBinds_ )
15602 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15603 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15604 , imageBindCount( imageBindCount_ )
15605 , pImageBinds( pImageBinds_ )
15606 , signalSemaphoreCount( signalSemaphoreCount_ )
15607 , pSignalSemaphores( pSignalSemaphores_ )
15608 {
15609 }
15610
15611 BindSparseInfo( VkBindSparseInfo const & rhs )
15612 {
15613 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15614 }
15615
15616 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15617 {
15618 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15619 return *this;
15620 }
15621
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015622 BindSparseInfo& setPNext( const void* pNext_ )
15623 {
15624 pNext = pNext_;
15625 return *this;
15626 }
15627
15628 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15629 {
15630 waitSemaphoreCount = waitSemaphoreCount_;
15631 return *this;
15632 }
15633
15634 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15635 {
15636 pWaitSemaphores = pWaitSemaphores_;
15637 return *this;
15638 }
15639
15640 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15641 {
15642 bufferBindCount = bufferBindCount_;
15643 return *this;
15644 }
15645
15646 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15647 {
15648 pBufferBinds = pBufferBinds_;
15649 return *this;
15650 }
15651
15652 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15653 {
15654 imageOpaqueBindCount = imageOpaqueBindCount_;
15655 return *this;
15656 }
15657
15658 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15659 {
15660 pImageOpaqueBinds = pImageOpaqueBinds_;
15661 return *this;
15662 }
15663
15664 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15665 {
15666 imageBindCount = imageBindCount_;
15667 return *this;
15668 }
15669
15670 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15671 {
15672 pImageBinds = pImageBinds_;
15673 return *this;
15674 }
15675
15676 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15677 {
15678 signalSemaphoreCount = signalSemaphoreCount_;
15679 return *this;
15680 }
15681
15682 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15683 {
15684 pSignalSemaphores = pSignalSemaphores_;
15685 return *this;
15686 }
15687
15688 operator const VkBindSparseInfo&() const
15689 {
15690 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15691 }
15692
15693 bool operator==( BindSparseInfo const& rhs ) const
15694 {
15695 return ( sType == rhs.sType )
15696 && ( pNext == rhs.pNext )
15697 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
15698 && ( pWaitSemaphores == rhs.pWaitSemaphores )
15699 && ( bufferBindCount == rhs.bufferBindCount )
15700 && ( pBufferBinds == rhs.pBufferBinds )
15701 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
15702 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
15703 && ( imageBindCount == rhs.imageBindCount )
15704 && ( pImageBinds == rhs.pImageBinds )
15705 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
15706 && ( pSignalSemaphores == rhs.pSignalSemaphores );
15707 }
15708
15709 bool operator!=( BindSparseInfo const& rhs ) const
15710 {
15711 return !operator==( rhs );
15712 }
15713
15714 private:
15715 StructureType sType;
15716
15717 public:
15718 const void* pNext;
15719 uint32_t waitSemaphoreCount;
15720 const Semaphore* pWaitSemaphores;
15721 uint32_t bufferBindCount;
15722 const SparseBufferMemoryBindInfo* pBufferBinds;
15723 uint32_t imageOpaqueBindCount;
15724 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
15725 uint32_t imageBindCount;
15726 const SparseImageMemoryBindInfo* pImageBinds;
15727 uint32_t signalSemaphoreCount;
15728 const Semaphore* pSignalSemaphores;
15729 };
15730 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
15731
15732 enum class PipelineStageFlagBits
15733 {
15734 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
15735 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
15736 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
15737 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
15738 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
15739 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
15740 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
15741 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
15742 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
15743 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
15744 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
15745 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
15746 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
15747 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
15748 eHost = VK_PIPELINE_STAGE_HOST_BIT,
15749 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015750 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
15751 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015752 };
15753
15754 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
15755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015756 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015757 {
15758 return PipelineStageFlags( bit0 ) | bit1;
15759 }
15760
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015761 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
15762 {
15763 return ~( PipelineStageFlags( bits ) );
15764 }
15765
15766 template <> struct FlagTraits<PipelineStageFlagBits>
15767 {
15768 enum
15769 {
15770 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)
15771 };
15772 };
15773
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015774 enum class CommandPoolCreateFlagBits
15775 {
15776 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
15777 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
15778 };
15779
15780 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
15781
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015782 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015783 {
15784 return CommandPoolCreateFlags( bit0 ) | bit1;
15785 }
15786
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015787 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
15788 {
15789 return ~( CommandPoolCreateFlags( bits ) );
15790 }
15791
15792 template <> struct FlagTraits<CommandPoolCreateFlagBits>
15793 {
15794 enum
15795 {
15796 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
15797 };
15798 };
15799
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015800 struct CommandPoolCreateInfo
15801 {
15802 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
15803 : sType( StructureType::eCommandPoolCreateInfo )
15804 , pNext( nullptr )
15805 , flags( flags_ )
15806 , queueFamilyIndex( queueFamilyIndex_ )
15807 {
15808 }
15809
15810 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
15811 {
15812 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15813 }
15814
15815 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
15816 {
15817 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15818 return *this;
15819 }
15820
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015821 CommandPoolCreateInfo& setPNext( const void* pNext_ )
15822 {
15823 pNext = pNext_;
15824 return *this;
15825 }
15826
15827 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
15828 {
15829 flags = flags_;
15830 return *this;
15831 }
15832
15833 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
15834 {
15835 queueFamilyIndex = queueFamilyIndex_;
15836 return *this;
15837 }
15838
15839 operator const VkCommandPoolCreateInfo&() const
15840 {
15841 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
15842 }
15843
15844 bool operator==( CommandPoolCreateInfo const& rhs ) const
15845 {
15846 return ( sType == rhs.sType )
15847 && ( pNext == rhs.pNext )
15848 && ( flags == rhs.flags )
15849 && ( queueFamilyIndex == rhs.queueFamilyIndex );
15850 }
15851
15852 bool operator!=( CommandPoolCreateInfo const& rhs ) const
15853 {
15854 return !operator==( rhs );
15855 }
15856
15857 private:
15858 StructureType sType;
15859
15860 public:
15861 const void* pNext;
15862 CommandPoolCreateFlags flags;
15863 uint32_t queueFamilyIndex;
15864 };
15865 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
15866
15867 enum class CommandPoolResetFlagBits
15868 {
15869 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
15870 };
15871
15872 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
15873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015874 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015875 {
15876 return CommandPoolResetFlags( bit0 ) | bit1;
15877 }
15878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015879 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
15880 {
15881 return ~( CommandPoolResetFlags( bits ) );
15882 }
15883
15884 template <> struct FlagTraits<CommandPoolResetFlagBits>
15885 {
15886 enum
15887 {
15888 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
15889 };
15890 };
15891
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015892 enum class CommandBufferResetFlagBits
15893 {
15894 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
15895 };
15896
15897 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
15898
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015899 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015900 {
15901 return CommandBufferResetFlags( bit0 ) | bit1;
15902 }
15903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015904 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
15905 {
15906 return ~( CommandBufferResetFlags( bits ) );
15907 }
15908
15909 template <> struct FlagTraits<CommandBufferResetFlagBits>
15910 {
15911 enum
15912 {
15913 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
15914 };
15915 };
15916
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015917 enum class SampleCountFlagBits
15918 {
15919 e1 = VK_SAMPLE_COUNT_1_BIT,
15920 e2 = VK_SAMPLE_COUNT_2_BIT,
15921 e4 = VK_SAMPLE_COUNT_4_BIT,
15922 e8 = VK_SAMPLE_COUNT_8_BIT,
15923 e16 = VK_SAMPLE_COUNT_16_BIT,
15924 e32 = VK_SAMPLE_COUNT_32_BIT,
15925 e64 = VK_SAMPLE_COUNT_64_BIT
15926 };
15927
15928 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
15929
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015930 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015931 {
15932 return SampleCountFlags( bit0 ) | bit1;
15933 }
15934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015935 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
15936 {
15937 return ~( SampleCountFlags( bits ) );
15938 }
15939
15940 template <> struct FlagTraits<SampleCountFlagBits>
15941 {
15942 enum
15943 {
15944 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
15945 };
15946 };
15947
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015948 struct ImageFormatProperties
15949 {
15950 operator const VkImageFormatProperties&() const
15951 {
15952 return *reinterpret_cast<const VkImageFormatProperties*>(this);
15953 }
15954
15955 bool operator==( ImageFormatProperties const& rhs ) const
15956 {
15957 return ( maxExtent == rhs.maxExtent )
15958 && ( maxMipLevels == rhs.maxMipLevels )
15959 && ( maxArrayLayers == rhs.maxArrayLayers )
15960 && ( sampleCounts == rhs.sampleCounts )
15961 && ( maxResourceSize == rhs.maxResourceSize );
15962 }
15963
15964 bool operator!=( ImageFormatProperties const& rhs ) const
15965 {
15966 return !operator==( rhs );
15967 }
15968
15969 Extent3D maxExtent;
15970 uint32_t maxMipLevels;
15971 uint32_t maxArrayLayers;
15972 SampleCountFlags sampleCounts;
15973 DeviceSize maxResourceSize;
15974 };
15975 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
15976
15977 struct ImageCreateInfo
15978 {
15979 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 )
15980 : sType( StructureType::eImageCreateInfo )
15981 , pNext( nullptr )
15982 , flags( flags_ )
15983 , imageType( imageType_ )
15984 , format( format_ )
15985 , extent( extent_ )
15986 , mipLevels( mipLevels_ )
15987 , arrayLayers( arrayLayers_ )
15988 , samples( samples_ )
15989 , tiling( tiling_ )
15990 , usage( usage_ )
15991 , sharingMode( sharingMode_ )
15992 , queueFamilyIndexCount( queueFamilyIndexCount_ )
15993 , pQueueFamilyIndices( pQueueFamilyIndices_ )
15994 , initialLayout( initialLayout_ )
15995 {
15996 }
15997
15998 ImageCreateInfo( VkImageCreateInfo const & rhs )
15999 {
16000 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16001 }
16002
16003 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16004 {
16005 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16006 return *this;
16007 }
16008
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016009 ImageCreateInfo& setPNext( const void* pNext_ )
16010 {
16011 pNext = pNext_;
16012 return *this;
16013 }
16014
16015 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16016 {
16017 flags = flags_;
16018 return *this;
16019 }
16020
16021 ImageCreateInfo& setImageType( ImageType imageType_ )
16022 {
16023 imageType = imageType_;
16024 return *this;
16025 }
16026
16027 ImageCreateInfo& setFormat( Format format_ )
16028 {
16029 format = format_;
16030 return *this;
16031 }
16032
16033 ImageCreateInfo& setExtent( Extent3D extent_ )
16034 {
16035 extent = extent_;
16036 return *this;
16037 }
16038
16039 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16040 {
16041 mipLevels = mipLevels_;
16042 return *this;
16043 }
16044
16045 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16046 {
16047 arrayLayers = arrayLayers_;
16048 return *this;
16049 }
16050
16051 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16052 {
16053 samples = samples_;
16054 return *this;
16055 }
16056
16057 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16058 {
16059 tiling = tiling_;
16060 return *this;
16061 }
16062
16063 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16064 {
16065 usage = usage_;
16066 return *this;
16067 }
16068
16069 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16070 {
16071 sharingMode = sharingMode_;
16072 return *this;
16073 }
16074
16075 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16076 {
16077 queueFamilyIndexCount = queueFamilyIndexCount_;
16078 return *this;
16079 }
16080
16081 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16082 {
16083 pQueueFamilyIndices = pQueueFamilyIndices_;
16084 return *this;
16085 }
16086
16087 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16088 {
16089 initialLayout = initialLayout_;
16090 return *this;
16091 }
16092
16093 operator const VkImageCreateInfo&() const
16094 {
16095 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16096 }
16097
16098 bool operator==( ImageCreateInfo const& rhs ) const
16099 {
16100 return ( sType == rhs.sType )
16101 && ( pNext == rhs.pNext )
16102 && ( flags == rhs.flags )
16103 && ( imageType == rhs.imageType )
16104 && ( format == rhs.format )
16105 && ( extent == rhs.extent )
16106 && ( mipLevels == rhs.mipLevels )
16107 && ( arrayLayers == rhs.arrayLayers )
16108 && ( samples == rhs.samples )
16109 && ( tiling == rhs.tiling )
16110 && ( usage == rhs.usage )
16111 && ( sharingMode == rhs.sharingMode )
16112 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16113 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16114 && ( initialLayout == rhs.initialLayout );
16115 }
16116
16117 bool operator!=( ImageCreateInfo const& rhs ) const
16118 {
16119 return !operator==( rhs );
16120 }
16121
16122 private:
16123 StructureType sType;
16124
16125 public:
16126 const void* pNext;
16127 ImageCreateFlags flags;
16128 ImageType imageType;
16129 Format format;
16130 Extent3D extent;
16131 uint32_t mipLevels;
16132 uint32_t arrayLayers;
16133 SampleCountFlagBits samples;
16134 ImageTiling tiling;
16135 ImageUsageFlags usage;
16136 SharingMode sharingMode;
16137 uint32_t queueFamilyIndexCount;
16138 const uint32_t* pQueueFamilyIndices;
16139 ImageLayout initialLayout;
16140 };
16141 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16142
16143 struct PipelineMultisampleStateCreateInfo
16144 {
16145 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16146 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16147 , pNext( nullptr )
16148 , flags( flags_ )
16149 , rasterizationSamples( rasterizationSamples_ )
16150 , sampleShadingEnable( sampleShadingEnable_ )
16151 , minSampleShading( minSampleShading_ )
16152 , pSampleMask( pSampleMask_ )
16153 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16154 , alphaToOneEnable( alphaToOneEnable_ )
16155 {
16156 }
16157
16158 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16159 {
16160 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16161 }
16162
16163 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16164 {
16165 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16166 return *this;
16167 }
16168
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016169 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16170 {
16171 pNext = pNext_;
16172 return *this;
16173 }
16174
16175 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16176 {
16177 flags = flags_;
16178 return *this;
16179 }
16180
16181 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16182 {
16183 rasterizationSamples = rasterizationSamples_;
16184 return *this;
16185 }
16186
16187 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16188 {
16189 sampleShadingEnable = sampleShadingEnable_;
16190 return *this;
16191 }
16192
16193 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16194 {
16195 minSampleShading = minSampleShading_;
16196 return *this;
16197 }
16198
16199 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16200 {
16201 pSampleMask = pSampleMask_;
16202 return *this;
16203 }
16204
16205 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16206 {
16207 alphaToCoverageEnable = alphaToCoverageEnable_;
16208 return *this;
16209 }
16210
16211 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16212 {
16213 alphaToOneEnable = alphaToOneEnable_;
16214 return *this;
16215 }
16216
16217 operator const VkPipelineMultisampleStateCreateInfo&() const
16218 {
16219 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16220 }
16221
16222 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16223 {
16224 return ( sType == rhs.sType )
16225 && ( pNext == rhs.pNext )
16226 && ( flags == rhs.flags )
16227 && ( rasterizationSamples == rhs.rasterizationSamples )
16228 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16229 && ( minSampleShading == rhs.minSampleShading )
16230 && ( pSampleMask == rhs.pSampleMask )
16231 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16232 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16233 }
16234
16235 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16236 {
16237 return !operator==( rhs );
16238 }
16239
16240 private:
16241 StructureType sType;
16242
16243 public:
16244 const void* pNext;
16245 PipelineMultisampleStateCreateFlags flags;
16246 SampleCountFlagBits rasterizationSamples;
16247 Bool32 sampleShadingEnable;
16248 float minSampleShading;
16249 const SampleMask* pSampleMask;
16250 Bool32 alphaToCoverageEnable;
16251 Bool32 alphaToOneEnable;
16252 };
16253 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16254
16255 struct GraphicsPipelineCreateInfo
16256 {
16257 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 )
16258 : sType( StructureType::eGraphicsPipelineCreateInfo )
16259 , pNext( nullptr )
16260 , flags( flags_ )
16261 , stageCount( stageCount_ )
16262 , pStages( pStages_ )
16263 , pVertexInputState( pVertexInputState_ )
16264 , pInputAssemblyState( pInputAssemblyState_ )
16265 , pTessellationState( pTessellationState_ )
16266 , pViewportState( pViewportState_ )
16267 , pRasterizationState( pRasterizationState_ )
16268 , pMultisampleState( pMultisampleState_ )
16269 , pDepthStencilState( pDepthStencilState_ )
16270 , pColorBlendState( pColorBlendState_ )
16271 , pDynamicState( pDynamicState_ )
16272 , layout( layout_ )
16273 , renderPass( renderPass_ )
16274 , subpass( subpass_ )
16275 , basePipelineHandle( basePipelineHandle_ )
16276 , basePipelineIndex( basePipelineIndex_ )
16277 {
16278 }
16279
16280 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16281 {
16282 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16283 }
16284
16285 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16286 {
16287 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16288 return *this;
16289 }
16290
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016291 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16292 {
16293 pNext = pNext_;
16294 return *this;
16295 }
16296
16297 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16298 {
16299 flags = flags_;
16300 return *this;
16301 }
16302
16303 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16304 {
16305 stageCount = stageCount_;
16306 return *this;
16307 }
16308
16309 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16310 {
16311 pStages = pStages_;
16312 return *this;
16313 }
16314
16315 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16316 {
16317 pVertexInputState = pVertexInputState_;
16318 return *this;
16319 }
16320
16321 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16322 {
16323 pInputAssemblyState = pInputAssemblyState_;
16324 return *this;
16325 }
16326
16327 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16328 {
16329 pTessellationState = pTessellationState_;
16330 return *this;
16331 }
16332
16333 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16334 {
16335 pViewportState = pViewportState_;
16336 return *this;
16337 }
16338
16339 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16340 {
16341 pRasterizationState = pRasterizationState_;
16342 return *this;
16343 }
16344
16345 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16346 {
16347 pMultisampleState = pMultisampleState_;
16348 return *this;
16349 }
16350
16351 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16352 {
16353 pDepthStencilState = pDepthStencilState_;
16354 return *this;
16355 }
16356
16357 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16358 {
16359 pColorBlendState = pColorBlendState_;
16360 return *this;
16361 }
16362
16363 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16364 {
16365 pDynamicState = pDynamicState_;
16366 return *this;
16367 }
16368
16369 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16370 {
16371 layout = layout_;
16372 return *this;
16373 }
16374
16375 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16376 {
16377 renderPass = renderPass_;
16378 return *this;
16379 }
16380
16381 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16382 {
16383 subpass = subpass_;
16384 return *this;
16385 }
16386
16387 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16388 {
16389 basePipelineHandle = basePipelineHandle_;
16390 return *this;
16391 }
16392
16393 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16394 {
16395 basePipelineIndex = basePipelineIndex_;
16396 return *this;
16397 }
16398
16399 operator const VkGraphicsPipelineCreateInfo&() const
16400 {
16401 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16402 }
16403
16404 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16405 {
16406 return ( sType == rhs.sType )
16407 && ( pNext == rhs.pNext )
16408 && ( flags == rhs.flags )
16409 && ( stageCount == rhs.stageCount )
16410 && ( pStages == rhs.pStages )
16411 && ( pVertexInputState == rhs.pVertexInputState )
16412 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16413 && ( pTessellationState == rhs.pTessellationState )
16414 && ( pViewportState == rhs.pViewportState )
16415 && ( pRasterizationState == rhs.pRasterizationState )
16416 && ( pMultisampleState == rhs.pMultisampleState )
16417 && ( pDepthStencilState == rhs.pDepthStencilState )
16418 && ( pColorBlendState == rhs.pColorBlendState )
16419 && ( pDynamicState == rhs.pDynamicState )
16420 && ( layout == rhs.layout )
16421 && ( renderPass == rhs.renderPass )
16422 && ( subpass == rhs.subpass )
16423 && ( basePipelineHandle == rhs.basePipelineHandle )
16424 && ( basePipelineIndex == rhs.basePipelineIndex );
16425 }
16426
16427 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16428 {
16429 return !operator==( rhs );
16430 }
16431
16432 private:
16433 StructureType sType;
16434
16435 public:
16436 const void* pNext;
16437 PipelineCreateFlags flags;
16438 uint32_t stageCount;
16439 const PipelineShaderStageCreateInfo* pStages;
16440 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16441 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16442 const PipelineTessellationStateCreateInfo* pTessellationState;
16443 const PipelineViewportStateCreateInfo* pViewportState;
16444 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16445 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16446 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16447 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16448 const PipelineDynamicStateCreateInfo* pDynamicState;
16449 PipelineLayout layout;
16450 RenderPass renderPass;
16451 uint32_t subpass;
16452 Pipeline basePipelineHandle;
16453 int32_t basePipelineIndex;
16454 };
16455 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16456
16457 struct PhysicalDeviceLimits
16458 {
16459 operator const VkPhysicalDeviceLimits&() const
16460 {
16461 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16462 }
16463
16464 bool operator==( PhysicalDeviceLimits const& rhs ) const
16465 {
16466 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16467 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16468 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16469 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16470 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16471 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16472 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16473 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16474 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16475 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16476 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16477 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16478 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16479 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16480 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16481 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16482 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16483 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16484 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16485 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16486 && ( maxPerStageResources == rhs.maxPerStageResources )
16487 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16488 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16489 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16490 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16491 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16492 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16493 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16494 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16495 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16496 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16497 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16498 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16499 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16500 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16501 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16502 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16503 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16504 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16505 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16506 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16507 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16508 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16509 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16510 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16511 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16512 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16513 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16514 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16515 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16516 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16517 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16518 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16519 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16520 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16521 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16522 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16523 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16524 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16525 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16526 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16527 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16528 && ( maxViewports == rhs.maxViewports )
16529 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16530 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16531 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16532 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16533 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16534 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16535 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16536 && ( minTexelOffset == rhs.minTexelOffset )
16537 && ( maxTexelOffset == rhs.maxTexelOffset )
16538 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16539 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16540 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16541 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16542 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16543 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16544 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16545 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16546 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16547 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16548 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16549 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16550 && ( maxColorAttachments == rhs.maxColorAttachments )
16551 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16552 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16553 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16554 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16555 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16556 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16557 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16558 && ( timestampPeriod == rhs.timestampPeriod )
16559 && ( maxClipDistances == rhs.maxClipDistances )
16560 && ( maxCullDistances == rhs.maxCullDistances )
16561 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16562 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16563 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16564 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16565 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16566 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16567 && ( strictLines == rhs.strictLines )
16568 && ( standardSampleLocations == rhs.standardSampleLocations )
16569 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16570 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16571 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16572 }
16573
16574 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16575 {
16576 return !operator==( rhs );
16577 }
16578
16579 uint32_t maxImageDimension1D;
16580 uint32_t maxImageDimension2D;
16581 uint32_t maxImageDimension3D;
16582 uint32_t maxImageDimensionCube;
16583 uint32_t maxImageArrayLayers;
16584 uint32_t maxTexelBufferElements;
16585 uint32_t maxUniformBufferRange;
16586 uint32_t maxStorageBufferRange;
16587 uint32_t maxPushConstantsSize;
16588 uint32_t maxMemoryAllocationCount;
16589 uint32_t maxSamplerAllocationCount;
16590 DeviceSize bufferImageGranularity;
16591 DeviceSize sparseAddressSpaceSize;
16592 uint32_t maxBoundDescriptorSets;
16593 uint32_t maxPerStageDescriptorSamplers;
16594 uint32_t maxPerStageDescriptorUniformBuffers;
16595 uint32_t maxPerStageDescriptorStorageBuffers;
16596 uint32_t maxPerStageDescriptorSampledImages;
16597 uint32_t maxPerStageDescriptorStorageImages;
16598 uint32_t maxPerStageDescriptorInputAttachments;
16599 uint32_t maxPerStageResources;
16600 uint32_t maxDescriptorSetSamplers;
16601 uint32_t maxDescriptorSetUniformBuffers;
16602 uint32_t maxDescriptorSetUniformBuffersDynamic;
16603 uint32_t maxDescriptorSetStorageBuffers;
16604 uint32_t maxDescriptorSetStorageBuffersDynamic;
16605 uint32_t maxDescriptorSetSampledImages;
16606 uint32_t maxDescriptorSetStorageImages;
16607 uint32_t maxDescriptorSetInputAttachments;
16608 uint32_t maxVertexInputAttributes;
16609 uint32_t maxVertexInputBindings;
16610 uint32_t maxVertexInputAttributeOffset;
16611 uint32_t maxVertexInputBindingStride;
16612 uint32_t maxVertexOutputComponents;
16613 uint32_t maxTessellationGenerationLevel;
16614 uint32_t maxTessellationPatchSize;
16615 uint32_t maxTessellationControlPerVertexInputComponents;
16616 uint32_t maxTessellationControlPerVertexOutputComponents;
16617 uint32_t maxTessellationControlPerPatchOutputComponents;
16618 uint32_t maxTessellationControlTotalOutputComponents;
16619 uint32_t maxTessellationEvaluationInputComponents;
16620 uint32_t maxTessellationEvaluationOutputComponents;
16621 uint32_t maxGeometryShaderInvocations;
16622 uint32_t maxGeometryInputComponents;
16623 uint32_t maxGeometryOutputComponents;
16624 uint32_t maxGeometryOutputVertices;
16625 uint32_t maxGeometryTotalOutputComponents;
16626 uint32_t maxFragmentInputComponents;
16627 uint32_t maxFragmentOutputAttachments;
16628 uint32_t maxFragmentDualSrcAttachments;
16629 uint32_t maxFragmentCombinedOutputResources;
16630 uint32_t maxComputeSharedMemorySize;
16631 uint32_t maxComputeWorkGroupCount[3];
16632 uint32_t maxComputeWorkGroupInvocations;
16633 uint32_t maxComputeWorkGroupSize[3];
16634 uint32_t subPixelPrecisionBits;
16635 uint32_t subTexelPrecisionBits;
16636 uint32_t mipmapPrecisionBits;
16637 uint32_t maxDrawIndexedIndexValue;
16638 uint32_t maxDrawIndirectCount;
16639 float maxSamplerLodBias;
16640 float maxSamplerAnisotropy;
16641 uint32_t maxViewports;
16642 uint32_t maxViewportDimensions[2];
16643 float viewportBoundsRange[2];
16644 uint32_t viewportSubPixelBits;
16645 size_t minMemoryMapAlignment;
16646 DeviceSize minTexelBufferOffsetAlignment;
16647 DeviceSize minUniformBufferOffsetAlignment;
16648 DeviceSize minStorageBufferOffsetAlignment;
16649 int32_t minTexelOffset;
16650 uint32_t maxTexelOffset;
16651 int32_t minTexelGatherOffset;
16652 uint32_t maxTexelGatherOffset;
16653 float minInterpolationOffset;
16654 float maxInterpolationOffset;
16655 uint32_t subPixelInterpolationOffsetBits;
16656 uint32_t maxFramebufferWidth;
16657 uint32_t maxFramebufferHeight;
16658 uint32_t maxFramebufferLayers;
16659 SampleCountFlags framebufferColorSampleCounts;
16660 SampleCountFlags framebufferDepthSampleCounts;
16661 SampleCountFlags framebufferStencilSampleCounts;
16662 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16663 uint32_t maxColorAttachments;
16664 SampleCountFlags sampledImageColorSampleCounts;
16665 SampleCountFlags sampledImageIntegerSampleCounts;
16666 SampleCountFlags sampledImageDepthSampleCounts;
16667 SampleCountFlags sampledImageStencilSampleCounts;
16668 SampleCountFlags storageImageSampleCounts;
16669 uint32_t maxSampleMaskWords;
16670 Bool32 timestampComputeAndGraphics;
16671 float timestampPeriod;
16672 uint32_t maxClipDistances;
16673 uint32_t maxCullDistances;
16674 uint32_t maxCombinedClipAndCullDistances;
16675 uint32_t discreteQueuePriorities;
16676 float pointSizeRange[2];
16677 float lineWidthRange[2];
16678 float pointSizeGranularity;
16679 float lineWidthGranularity;
16680 Bool32 strictLines;
16681 Bool32 standardSampleLocations;
16682 DeviceSize optimalBufferCopyOffsetAlignment;
16683 DeviceSize optimalBufferCopyRowPitchAlignment;
16684 DeviceSize nonCoherentAtomSize;
16685 };
16686 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16687
16688 struct PhysicalDeviceProperties
16689 {
16690 operator const VkPhysicalDeviceProperties&() const
16691 {
16692 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
16693 }
16694
16695 bool operator==( PhysicalDeviceProperties const& rhs ) const
16696 {
16697 return ( apiVersion == rhs.apiVersion )
16698 && ( driverVersion == rhs.driverVersion )
16699 && ( vendorID == rhs.vendorID )
16700 && ( deviceID == rhs.deviceID )
16701 && ( deviceType == rhs.deviceType )
16702 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
16703 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
16704 && ( limits == rhs.limits )
16705 && ( sparseProperties == rhs.sparseProperties );
16706 }
16707
16708 bool operator!=( PhysicalDeviceProperties const& rhs ) const
16709 {
16710 return !operator==( rhs );
16711 }
16712
16713 uint32_t apiVersion;
16714 uint32_t driverVersion;
16715 uint32_t vendorID;
16716 uint32_t deviceID;
16717 PhysicalDeviceType deviceType;
16718 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
16719 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
16720 PhysicalDeviceLimits limits;
16721 PhysicalDeviceSparseProperties sparseProperties;
16722 };
16723 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
16724
Mark Young39389872017-01-19 21:10:49 -070016725 struct PhysicalDeviceProperties2KHR
16726 {
16727 operator const VkPhysicalDeviceProperties2KHR&() const
16728 {
16729 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
16730 }
16731
16732 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
16733 {
16734 return ( sType == rhs.sType )
16735 && ( pNext == rhs.pNext )
16736 && ( properties == rhs.properties );
16737 }
16738
16739 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
16740 {
16741 return !operator==( rhs );
16742 }
16743
16744 private:
16745 StructureType sType;
16746
16747 public:
16748 void* pNext;
16749 PhysicalDeviceProperties properties;
16750 };
16751 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
16752
16753 struct ImageFormatProperties2KHR
16754 {
16755 operator const VkImageFormatProperties2KHR&() const
16756 {
16757 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
16758 }
16759
16760 bool operator==( ImageFormatProperties2KHR const& rhs ) const
16761 {
16762 return ( sType == rhs.sType )
16763 && ( pNext == rhs.pNext )
16764 && ( imageFormatProperties == rhs.imageFormatProperties );
16765 }
16766
16767 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
16768 {
16769 return !operator==( rhs );
16770 }
16771
16772 private:
16773 StructureType sType;
16774
16775 public:
16776 void* pNext;
16777 ImageFormatProperties imageFormatProperties;
16778 };
16779 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16780
16781 struct PhysicalDeviceSparseImageFormatInfo2KHR
16782 {
16783 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
16784 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
16785 , pNext( nullptr )
16786 , format( format_ )
16787 , type( type_ )
16788 , samples( samples_ )
16789 , usage( usage_ )
16790 , tiling( tiling_ )
16791 {
16792 }
16793
16794 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16795 {
16796 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16797 }
16798
16799 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16800 {
16801 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16802 return *this;
16803 }
16804
Mark Young39389872017-01-19 21:10:49 -070016805 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
16806 {
16807 pNext = pNext_;
16808 return *this;
16809 }
16810
16811 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
16812 {
16813 format = format_;
16814 return *this;
16815 }
16816
16817 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
16818 {
16819 type = type_;
16820 return *this;
16821 }
16822
16823 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
16824 {
16825 samples = samples_;
16826 return *this;
16827 }
16828
16829 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
16830 {
16831 usage = usage_;
16832 return *this;
16833 }
16834
16835 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
16836 {
16837 tiling = tiling_;
16838 return *this;
16839 }
16840
16841 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
16842 {
16843 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
16844 }
16845
16846 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16847 {
16848 return ( sType == rhs.sType )
16849 && ( pNext == rhs.pNext )
16850 && ( format == rhs.format )
16851 && ( type == rhs.type )
16852 && ( samples == rhs.samples )
16853 && ( usage == rhs.usage )
16854 && ( tiling == rhs.tiling );
16855 }
16856
16857 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16858 {
16859 return !operator==( rhs );
16860 }
16861
16862 private:
16863 StructureType sType;
16864
16865 public:
16866 const void* pNext;
16867 Format format;
16868 ImageType type;
16869 SampleCountFlagBits samples;
16870 ImageUsageFlags usage;
16871 ImageTiling tiling;
16872 };
16873 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
16874
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016875 enum class AttachmentDescriptionFlagBits
16876 {
16877 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
16878 };
16879
16880 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
16881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016882 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016883 {
16884 return AttachmentDescriptionFlags( bit0 ) | bit1;
16885 }
16886
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016887 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
16888 {
16889 return ~( AttachmentDescriptionFlags( bits ) );
16890 }
16891
16892 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
16893 {
16894 enum
16895 {
16896 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
16897 };
16898 };
16899
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016900 struct AttachmentDescription
16901 {
16902 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 )
16903 : flags( flags_ )
16904 , format( format_ )
16905 , samples( samples_ )
16906 , loadOp( loadOp_ )
16907 , storeOp( storeOp_ )
16908 , stencilLoadOp( stencilLoadOp_ )
16909 , stencilStoreOp( stencilStoreOp_ )
16910 , initialLayout( initialLayout_ )
16911 , finalLayout( finalLayout_ )
16912 {
16913 }
16914
16915 AttachmentDescription( VkAttachmentDescription const & rhs )
16916 {
16917 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16918 }
16919
16920 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
16921 {
16922 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16923 return *this;
16924 }
16925
16926 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
16927 {
16928 flags = flags_;
16929 return *this;
16930 }
16931
16932 AttachmentDescription& setFormat( Format format_ )
16933 {
16934 format = format_;
16935 return *this;
16936 }
16937
16938 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
16939 {
16940 samples = samples_;
16941 return *this;
16942 }
16943
16944 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
16945 {
16946 loadOp = loadOp_;
16947 return *this;
16948 }
16949
16950 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
16951 {
16952 storeOp = storeOp_;
16953 return *this;
16954 }
16955
16956 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
16957 {
16958 stencilLoadOp = stencilLoadOp_;
16959 return *this;
16960 }
16961
16962 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
16963 {
16964 stencilStoreOp = stencilStoreOp_;
16965 return *this;
16966 }
16967
16968 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
16969 {
16970 initialLayout = initialLayout_;
16971 return *this;
16972 }
16973
16974 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
16975 {
16976 finalLayout = finalLayout_;
16977 return *this;
16978 }
16979
16980 operator const VkAttachmentDescription&() const
16981 {
16982 return *reinterpret_cast<const VkAttachmentDescription*>(this);
16983 }
16984
16985 bool operator==( AttachmentDescription const& rhs ) const
16986 {
16987 return ( flags == rhs.flags )
16988 && ( format == rhs.format )
16989 && ( samples == rhs.samples )
16990 && ( loadOp == rhs.loadOp )
16991 && ( storeOp == rhs.storeOp )
16992 && ( stencilLoadOp == rhs.stencilLoadOp )
16993 && ( stencilStoreOp == rhs.stencilStoreOp )
16994 && ( initialLayout == rhs.initialLayout )
16995 && ( finalLayout == rhs.finalLayout );
16996 }
16997
16998 bool operator!=( AttachmentDescription const& rhs ) const
16999 {
17000 return !operator==( rhs );
17001 }
17002
17003 AttachmentDescriptionFlags flags;
17004 Format format;
17005 SampleCountFlagBits samples;
17006 AttachmentLoadOp loadOp;
17007 AttachmentStoreOp storeOp;
17008 AttachmentLoadOp stencilLoadOp;
17009 AttachmentStoreOp stencilStoreOp;
17010 ImageLayout initialLayout;
17011 ImageLayout finalLayout;
17012 };
17013 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17014
17015 enum class StencilFaceFlagBits
17016 {
17017 eFront = VK_STENCIL_FACE_FRONT_BIT,
17018 eBack = VK_STENCIL_FACE_BACK_BIT,
17019 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17020 };
17021
17022 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017024 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017025 {
17026 return StencilFaceFlags( bit0 ) | bit1;
17027 }
17028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017029 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17030 {
17031 return ~( StencilFaceFlags( bits ) );
17032 }
17033
17034 template <> struct FlagTraits<StencilFaceFlagBits>
17035 {
17036 enum
17037 {
17038 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17039 };
17040 };
17041
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017042 enum class DescriptorPoolCreateFlagBits
17043 {
17044 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17045 };
17046
17047 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017049 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017050 {
17051 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17052 }
17053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017054 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17055 {
17056 return ~( DescriptorPoolCreateFlags( bits ) );
17057 }
17058
17059 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17060 {
17061 enum
17062 {
17063 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17064 };
17065 };
17066
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017067 struct DescriptorPoolCreateInfo
17068 {
17069 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17070 : sType( StructureType::eDescriptorPoolCreateInfo )
17071 , pNext( nullptr )
17072 , flags( flags_ )
17073 , maxSets( maxSets_ )
17074 , poolSizeCount( poolSizeCount_ )
17075 , pPoolSizes( pPoolSizes_ )
17076 {
17077 }
17078
17079 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17080 {
17081 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17082 }
17083
17084 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17085 {
17086 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17087 return *this;
17088 }
17089
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017090 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17091 {
17092 pNext = pNext_;
17093 return *this;
17094 }
17095
17096 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17097 {
17098 flags = flags_;
17099 return *this;
17100 }
17101
17102 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17103 {
17104 maxSets = maxSets_;
17105 return *this;
17106 }
17107
17108 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17109 {
17110 poolSizeCount = poolSizeCount_;
17111 return *this;
17112 }
17113
17114 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17115 {
17116 pPoolSizes = pPoolSizes_;
17117 return *this;
17118 }
17119
17120 operator const VkDescriptorPoolCreateInfo&() const
17121 {
17122 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17123 }
17124
17125 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17126 {
17127 return ( sType == rhs.sType )
17128 && ( pNext == rhs.pNext )
17129 && ( flags == rhs.flags )
17130 && ( maxSets == rhs.maxSets )
17131 && ( poolSizeCount == rhs.poolSizeCount )
17132 && ( pPoolSizes == rhs.pPoolSizes );
17133 }
17134
17135 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17136 {
17137 return !operator==( rhs );
17138 }
17139
17140 private:
17141 StructureType sType;
17142
17143 public:
17144 const void* pNext;
17145 DescriptorPoolCreateFlags flags;
17146 uint32_t maxSets;
17147 uint32_t poolSizeCount;
17148 const DescriptorPoolSize* pPoolSizes;
17149 };
17150 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17151
17152 enum class DependencyFlagBits
17153 {
Mark Young0f183a82017-02-28 09:58:04 -070017154 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17155 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17156 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017157 };
17158
17159 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17160
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017161 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017162 {
17163 return DependencyFlags( bit0 ) | bit1;
17164 }
17165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017166 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17167 {
17168 return ~( DependencyFlags( bits ) );
17169 }
17170
17171 template <> struct FlagTraits<DependencyFlagBits>
17172 {
17173 enum
17174 {
Mark Young0f183a82017-02-28 09:58:04 -070017175 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017176 };
17177 };
17178
17179 struct SubpassDependency
17180 {
17181 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17182 : srcSubpass( srcSubpass_ )
17183 , dstSubpass( dstSubpass_ )
17184 , srcStageMask( srcStageMask_ )
17185 , dstStageMask( dstStageMask_ )
17186 , srcAccessMask( srcAccessMask_ )
17187 , dstAccessMask( dstAccessMask_ )
17188 , dependencyFlags( dependencyFlags_ )
17189 {
17190 }
17191
17192 SubpassDependency( VkSubpassDependency const & rhs )
17193 {
17194 memcpy( this, &rhs, sizeof(SubpassDependency) );
17195 }
17196
17197 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17198 {
17199 memcpy( this, &rhs, sizeof(SubpassDependency) );
17200 return *this;
17201 }
17202
17203 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17204 {
17205 srcSubpass = srcSubpass_;
17206 return *this;
17207 }
17208
17209 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17210 {
17211 dstSubpass = dstSubpass_;
17212 return *this;
17213 }
17214
17215 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17216 {
17217 srcStageMask = srcStageMask_;
17218 return *this;
17219 }
17220
17221 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17222 {
17223 dstStageMask = dstStageMask_;
17224 return *this;
17225 }
17226
17227 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17228 {
17229 srcAccessMask = srcAccessMask_;
17230 return *this;
17231 }
17232
17233 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17234 {
17235 dstAccessMask = dstAccessMask_;
17236 return *this;
17237 }
17238
17239 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17240 {
17241 dependencyFlags = dependencyFlags_;
17242 return *this;
17243 }
17244
17245 operator const VkSubpassDependency&() const
17246 {
17247 return *reinterpret_cast<const VkSubpassDependency*>(this);
17248 }
17249
17250 bool operator==( SubpassDependency const& rhs ) const
17251 {
17252 return ( srcSubpass == rhs.srcSubpass )
17253 && ( dstSubpass == rhs.dstSubpass )
17254 && ( srcStageMask == rhs.srcStageMask )
17255 && ( dstStageMask == rhs.dstStageMask )
17256 && ( srcAccessMask == rhs.srcAccessMask )
17257 && ( dstAccessMask == rhs.dstAccessMask )
17258 && ( dependencyFlags == rhs.dependencyFlags );
17259 }
17260
17261 bool operator!=( SubpassDependency const& rhs ) const
17262 {
17263 return !operator==( rhs );
17264 }
17265
17266 uint32_t srcSubpass;
17267 uint32_t dstSubpass;
17268 PipelineStageFlags srcStageMask;
17269 PipelineStageFlags dstStageMask;
17270 AccessFlags srcAccessMask;
17271 AccessFlags dstAccessMask;
17272 DependencyFlags dependencyFlags;
17273 };
17274 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17275
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017276 enum class PresentModeKHR
17277 {
17278 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17279 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17280 eFifo = VK_PRESENT_MODE_FIFO_KHR,
17281 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR
17282 };
17283
17284 enum class ColorSpaceKHR
17285 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017286 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17287 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17288 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17289 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17290 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17291 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17292 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17293 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17294 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17295 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17296 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17297 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17298 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17299 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017300 };
17301
17302 struct SurfaceFormatKHR
17303 {
17304 operator const VkSurfaceFormatKHR&() const
17305 {
17306 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17307 }
17308
17309 bool operator==( SurfaceFormatKHR const& rhs ) const
17310 {
17311 return ( format == rhs.format )
17312 && ( colorSpace == rhs.colorSpace );
17313 }
17314
17315 bool operator!=( SurfaceFormatKHR const& rhs ) const
17316 {
17317 return !operator==( rhs );
17318 }
17319
17320 Format format;
17321 ColorSpaceKHR colorSpace;
17322 };
17323 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17324
17325 enum class DisplayPlaneAlphaFlagBitsKHR
17326 {
17327 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17328 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17329 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17330 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17331 };
17332
17333 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17334
17335 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17336 {
17337 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17338 }
17339
17340 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17341 {
17342 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17343 }
17344
17345 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17346 {
17347 enum
17348 {
17349 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17350 };
17351 };
17352
17353 struct DisplayPlaneCapabilitiesKHR
17354 {
17355 operator const VkDisplayPlaneCapabilitiesKHR&() const
17356 {
17357 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17358 }
17359
17360 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17361 {
17362 return ( supportedAlpha == rhs.supportedAlpha )
17363 && ( minSrcPosition == rhs.minSrcPosition )
17364 && ( maxSrcPosition == rhs.maxSrcPosition )
17365 && ( minSrcExtent == rhs.minSrcExtent )
17366 && ( maxSrcExtent == rhs.maxSrcExtent )
17367 && ( minDstPosition == rhs.minDstPosition )
17368 && ( maxDstPosition == rhs.maxDstPosition )
17369 && ( minDstExtent == rhs.minDstExtent )
17370 && ( maxDstExtent == rhs.maxDstExtent );
17371 }
17372
17373 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17374 {
17375 return !operator==( rhs );
17376 }
17377
17378 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17379 Offset2D minSrcPosition;
17380 Offset2D maxSrcPosition;
17381 Extent2D minSrcExtent;
17382 Extent2D maxSrcExtent;
17383 Offset2D minDstPosition;
17384 Offset2D maxDstPosition;
17385 Extent2D minDstExtent;
17386 Extent2D maxDstExtent;
17387 };
17388 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17389
17390 enum class CompositeAlphaFlagBitsKHR
17391 {
17392 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17393 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17394 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17395 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17396 };
17397
17398 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17399
17400 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17401 {
17402 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17403 }
17404
17405 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17406 {
17407 return ~( CompositeAlphaFlagsKHR( bits ) );
17408 }
17409
17410 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17411 {
17412 enum
17413 {
17414 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17415 };
17416 };
17417
17418 enum class SurfaceTransformFlagBitsKHR
17419 {
17420 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17421 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17422 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17423 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17424 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17425 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17426 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17427 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17428 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17429 };
17430
17431 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17432
17433 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17434 {
17435 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17436 }
17437
17438 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17439 {
17440 return ~( SurfaceTransformFlagsKHR( bits ) );
17441 }
17442
17443 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17444 {
17445 enum
17446 {
17447 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)
17448 };
17449 };
17450
17451 struct DisplayPropertiesKHR
17452 {
17453 operator const VkDisplayPropertiesKHR&() const
17454 {
17455 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17456 }
17457
17458 bool operator==( DisplayPropertiesKHR const& rhs ) const
17459 {
17460 return ( display == rhs.display )
17461 && ( displayName == rhs.displayName )
17462 && ( physicalDimensions == rhs.physicalDimensions )
17463 && ( physicalResolution == rhs.physicalResolution )
17464 && ( supportedTransforms == rhs.supportedTransforms )
17465 && ( planeReorderPossible == rhs.planeReorderPossible )
17466 && ( persistentContent == rhs.persistentContent );
17467 }
17468
17469 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17470 {
17471 return !operator==( rhs );
17472 }
17473
17474 DisplayKHR display;
17475 const char* displayName;
17476 Extent2D physicalDimensions;
17477 Extent2D physicalResolution;
17478 SurfaceTransformFlagsKHR supportedTransforms;
17479 Bool32 planeReorderPossible;
17480 Bool32 persistentContent;
17481 };
17482 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17483
17484 struct DisplaySurfaceCreateInfoKHR
17485 {
17486 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() )
17487 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17488 , pNext( nullptr )
17489 , flags( flags_ )
17490 , displayMode( displayMode_ )
17491 , planeIndex( planeIndex_ )
17492 , planeStackIndex( planeStackIndex_ )
17493 , transform( transform_ )
17494 , globalAlpha( globalAlpha_ )
17495 , alphaMode( alphaMode_ )
17496 , imageExtent( imageExtent_ )
17497 {
17498 }
17499
17500 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17501 {
17502 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17503 }
17504
17505 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17506 {
17507 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17508 return *this;
17509 }
17510
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017511 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17512 {
17513 pNext = pNext_;
17514 return *this;
17515 }
17516
17517 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17518 {
17519 flags = flags_;
17520 return *this;
17521 }
17522
17523 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17524 {
17525 displayMode = displayMode_;
17526 return *this;
17527 }
17528
17529 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17530 {
17531 planeIndex = planeIndex_;
17532 return *this;
17533 }
17534
17535 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17536 {
17537 planeStackIndex = planeStackIndex_;
17538 return *this;
17539 }
17540
17541 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17542 {
17543 transform = transform_;
17544 return *this;
17545 }
17546
17547 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17548 {
17549 globalAlpha = globalAlpha_;
17550 return *this;
17551 }
17552
17553 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17554 {
17555 alphaMode = alphaMode_;
17556 return *this;
17557 }
17558
17559 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17560 {
17561 imageExtent = imageExtent_;
17562 return *this;
17563 }
17564
17565 operator const VkDisplaySurfaceCreateInfoKHR&() const
17566 {
17567 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17568 }
17569
17570 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17571 {
17572 return ( sType == rhs.sType )
17573 && ( pNext == rhs.pNext )
17574 && ( flags == rhs.flags )
17575 && ( displayMode == rhs.displayMode )
17576 && ( planeIndex == rhs.planeIndex )
17577 && ( planeStackIndex == rhs.planeStackIndex )
17578 && ( transform == rhs.transform )
17579 && ( globalAlpha == rhs.globalAlpha )
17580 && ( alphaMode == rhs.alphaMode )
17581 && ( imageExtent == rhs.imageExtent );
17582 }
17583
17584 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17585 {
17586 return !operator==( rhs );
17587 }
17588
17589 private:
17590 StructureType sType;
17591
17592 public:
17593 const void* pNext;
17594 DisplaySurfaceCreateFlagsKHR flags;
17595 DisplayModeKHR displayMode;
17596 uint32_t planeIndex;
17597 uint32_t planeStackIndex;
17598 SurfaceTransformFlagBitsKHR transform;
17599 float globalAlpha;
17600 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17601 Extent2D imageExtent;
17602 };
17603 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17604
17605 struct SurfaceCapabilitiesKHR
17606 {
17607 operator const VkSurfaceCapabilitiesKHR&() const
17608 {
17609 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17610 }
17611
17612 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17613 {
17614 return ( minImageCount == rhs.minImageCount )
17615 && ( maxImageCount == rhs.maxImageCount )
17616 && ( currentExtent == rhs.currentExtent )
17617 && ( minImageExtent == rhs.minImageExtent )
17618 && ( maxImageExtent == rhs.maxImageExtent )
17619 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17620 && ( supportedTransforms == rhs.supportedTransforms )
17621 && ( currentTransform == rhs.currentTransform )
17622 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17623 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17624 }
17625
17626 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17627 {
17628 return !operator==( rhs );
17629 }
17630
17631 uint32_t minImageCount;
17632 uint32_t maxImageCount;
17633 Extent2D currentExtent;
17634 Extent2D minImageExtent;
17635 Extent2D maxImageExtent;
17636 uint32_t maxImageArrayLayers;
17637 SurfaceTransformFlagsKHR supportedTransforms;
17638 SurfaceTransformFlagBitsKHR currentTransform;
17639 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17640 ImageUsageFlags supportedUsageFlags;
17641 };
17642 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017644 enum class DebugReportFlagBitsEXT
17645 {
17646 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
17647 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
17648 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
17649 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
17650 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
17651 };
17652
17653 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
17654
17655 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
17656 {
17657 return DebugReportFlagsEXT( bit0 ) | bit1;
17658 }
17659
17660 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
17661 {
17662 return ~( DebugReportFlagsEXT( bits ) );
17663 }
17664
17665 template <> struct FlagTraits<DebugReportFlagBitsEXT>
17666 {
17667 enum
17668 {
17669 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
17670 };
17671 };
17672
17673 struct DebugReportCallbackCreateInfoEXT
17674 {
17675 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
17676 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
17677 , pNext( nullptr )
17678 , flags( flags_ )
17679 , pfnCallback( pfnCallback_ )
17680 , pUserData( pUserData_ )
17681 {
17682 }
17683
17684 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
17685 {
17686 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17687 }
17688
17689 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
17690 {
17691 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17692 return *this;
17693 }
17694
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017695 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
17696 {
17697 pNext = pNext_;
17698 return *this;
17699 }
17700
17701 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
17702 {
17703 flags = flags_;
17704 return *this;
17705 }
17706
17707 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
17708 {
17709 pfnCallback = pfnCallback_;
17710 return *this;
17711 }
17712
17713 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
17714 {
17715 pUserData = pUserData_;
17716 return *this;
17717 }
17718
17719 operator const VkDebugReportCallbackCreateInfoEXT&() const
17720 {
17721 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
17722 }
17723
17724 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
17725 {
17726 return ( sType == rhs.sType )
17727 && ( pNext == rhs.pNext )
17728 && ( flags == rhs.flags )
17729 && ( pfnCallback == rhs.pfnCallback )
17730 && ( pUserData == rhs.pUserData );
17731 }
17732
17733 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
17734 {
17735 return !operator==( rhs );
17736 }
17737
17738 private:
17739 StructureType sType;
17740
17741 public:
17742 const void* pNext;
17743 DebugReportFlagsEXT flags;
17744 PFN_vkDebugReportCallbackEXT pfnCallback;
17745 void* pUserData;
17746 };
17747 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
17748
17749 enum class DebugReportObjectTypeEXT
17750 {
17751 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
17752 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
17753 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
17754 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
17755 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
17756 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
17757 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
17758 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
17759 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
17760 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
17761 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
17762 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
17763 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
17764 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
17765 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
17766 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
17767 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
17768 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
17769 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
17770 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
17771 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
17772 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
17773 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
17774 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
17775 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
17776 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
17777 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
17778 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
17779 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
17780 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
17781 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
17782 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
17783 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
17784 };
17785
17786 struct DebugMarkerObjectNameInfoEXT
17787 {
17788 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
17789 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
17790 , pNext( nullptr )
17791 , objectType( objectType_ )
17792 , object( object_ )
17793 , pObjectName( pObjectName_ )
17794 {
17795 }
17796
17797 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
17798 {
17799 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17800 }
17801
17802 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
17803 {
17804 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17805 return *this;
17806 }
17807
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017808 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
17809 {
17810 pNext = pNext_;
17811 return *this;
17812 }
17813
17814 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17815 {
17816 objectType = objectType_;
17817 return *this;
17818 }
17819
17820 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
17821 {
17822 object = object_;
17823 return *this;
17824 }
17825
17826 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
17827 {
17828 pObjectName = pObjectName_;
17829 return *this;
17830 }
17831
17832 operator const VkDebugMarkerObjectNameInfoEXT&() const
17833 {
17834 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
17835 }
17836
17837 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
17838 {
17839 return ( sType == rhs.sType )
17840 && ( pNext == rhs.pNext )
17841 && ( objectType == rhs.objectType )
17842 && ( object == rhs.object )
17843 && ( pObjectName == rhs.pObjectName );
17844 }
17845
17846 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
17847 {
17848 return !operator==( rhs );
17849 }
17850
17851 private:
17852 StructureType sType;
17853
17854 public:
17855 const void* pNext;
17856 DebugReportObjectTypeEXT objectType;
17857 uint64_t object;
17858 const char* pObjectName;
17859 };
17860 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
17861
17862 struct DebugMarkerObjectTagInfoEXT
17863 {
17864 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
17865 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
17866 , pNext( nullptr )
17867 , objectType( objectType_ )
17868 , object( object_ )
17869 , tagName( tagName_ )
17870 , tagSize( tagSize_ )
17871 , pTag( pTag_ )
17872 {
17873 }
17874
17875 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
17876 {
17877 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17878 }
17879
17880 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
17881 {
17882 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17883 return *this;
17884 }
17885
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017886 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
17887 {
17888 pNext = pNext_;
17889 return *this;
17890 }
17891
17892 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17893 {
17894 objectType = objectType_;
17895 return *this;
17896 }
17897
17898 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
17899 {
17900 object = object_;
17901 return *this;
17902 }
17903
17904 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
17905 {
17906 tagName = tagName_;
17907 return *this;
17908 }
17909
17910 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
17911 {
17912 tagSize = tagSize_;
17913 return *this;
17914 }
17915
17916 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
17917 {
17918 pTag = pTag_;
17919 return *this;
17920 }
17921
17922 operator const VkDebugMarkerObjectTagInfoEXT&() const
17923 {
17924 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
17925 }
17926
17927 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
17928 {
17929 return ( sType == rhs.sType )
17930 && ( pNext == rhs.pNext )
17931 && ( objectType == rhs.objectType )
17932 && ( object == rhs.object )
17933 && ( tagName == rhs.tagName )
17934 && ( tagSize == rhs.tagSize )
17935 && ( pTag == rhs.pTag );
17936 }
17937
17938 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
17939 {
17940 return !operator==( rhs );
17941 }
17942
17943 private:
17944 StructureType sType;
17945
17946 public:
17947 const void* pNext;
17948 DebugReportObjectTypeEXT objectType;
17949 uint64_t object;
17950 uint64_t tagName;
17951 size_t tagSize;
17952 const void* pTag;
17953 };
17954 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
17955
17956 enum class DebugReportErrorEXT
17957 {
17958 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
17959 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
17960 };
17961
17962 enum class RasterizationOrderAMD
17963 {
17964 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
17965 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
17966 };
17967
17968 struct PipelineRasterizationStateRasterizationOrderAMD
17969 {
17970 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
17971 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
17972 , pNext( nullptr )
17973 , rasterizationOrder( rasterizationOrder_ )
17974 {
17975 }
17976
17977 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17978 {
17979 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17980 }
17981
17982 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17983 {
17984 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17985 return *this;
17986 }
17987
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017988 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
17989 {
17990 pNext = pNext_;
17991 return *this;
17992 }
17993
17994 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
17995 {
17996 rasterizationOrder = rasterizationOrder_;
17997 return *this;
17998 }
17999
18000 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18001 {
18002 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18003 }
18004
18005 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18006 {
18007 return ( sType == rhs.sType )
18008 && ( pNext == rhs.pNext )
18009 && ( rasterizationOrder == rhs.rasterizationOrder );
18010 }
18011
18012 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18013 {
18014 return !operator==( rhs );
18015 }
18016
18017 private:
18018 StructureType sType;
18019
18020 public:
18021 const void* pNext;
18022 RasterizationOrderAMD rasterizationOrder;
18023 };
18024 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18025
18026 enum class ExternalMemoryHandleTypeFlagBitsNV
18027 {
18028 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18029 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18030 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18031 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18032 };
18033
18034 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18035
18036 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18037 {
18038 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18039 }
18040
18041 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18042 {
18043 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18044 }
18045
18046 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18047 {
18048 enum
18049 {
18050 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18051 };
18052 };
18053
18054 struct ExternalMemoryImageCreateInfoNV
18055 {
18056 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18057 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18058 , pNext( nullptr )
18059 , handleTypes( handleTypes_ )
18060 {
18061 }
18062
18063 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18064 {
18065 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18066 }
18067
18068 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18069 {
18070 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18071 return *this;
18072 }
18073
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018074 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18075 {
18076 pNext = pNext_;
18077 return *this;
18078 }
18079
18080 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18081 {
18082 handleTypes = handleTypes_;
18083 return *this;
18084 }
18085
18086 operator const VkExternalMemoryImageCreateInfoNV&() const
18087 {
18088 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18089 }
18090
18091 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18092 {
18093 return ( sType == rhs.sType )
18094 && ( pNext == rhs.pNext )
18095 && ( handleTypes == rhs.handleTypes );
18096 }
18097
18098 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18099 {
18100 return !operator==( rhs );
18101 }
18102
18103 private:
18104 StructureType sType;
18105
18106 public:
18107 const void* pNext;
18108 ExternalMemoryHandleTypeFlagsNV handleTypes;
18109 };
18110 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18111
18112 struct ExportMemoryAllocateInfoNV
18113 {
18114 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18115 : sType( StructureType::eExportMemoryAllocateInfoNV )
18116 , pNext( nullptr )
18117 , handleTypes( handleTypes_ )
18118 {
18119 }
18120
18121 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18122 {
18123 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18124 }
18125
18126 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18127 {
18128 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18129 return *this;
18130 }
18131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018132 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18133 {
18134 pNext = pNext_;
18135 return *this;
18136 }
18137
18138 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18139 {
18140 handleTypes = handleTypes_;
18141 return *this;
18142 }
18143
18144 operator const VkExportMemoryAllocateInfoNV&() const
18145 {
18146 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18147 }
18148
18149 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18150 {
18151 return ( sType == rhs.sType )
18152 && ( pNext == rhs.pNext )
18153 && ( handleTypes == rhs.handleTypes );
18154 }
18155
18156 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18157 {
18158 return !operator==( rhs );
18159 }
18160
18161 private:
18162 StructureType sType;
18163
18164 public:
18165 const void* pNext;
18166 ExternalMemoryHandleTypeFlagsNV handleTypes;
18167 };
18168 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18169
18170#ifdef VK_USE_PLATFORM_WIN32_KHR
18171 struct ImportMemoryWin32HandleInfoNV
18172 {
18173 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18174 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18175 , pNext( nullptr )
18176 , handleType( handleType_ )
18177 , handle( handle_ )
18178 {
18179 }
18180
18181 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18182 {
18183 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18184 }
18185
18186 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18187 {
18188 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18189 return *this;
18190 }
18191
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018192 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18193 {
18194 pNext = pNext_;
18195 return *this;
18196 }
18197
18198 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18199 {
18200 handleType = handleType_;
18201 return *this;
18202 }
18203
18204 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18205 {
18206 handle = handle_;
18207 return *this;
18208 }
18209
18210 operator const VkImportMemoryWin32HandleInfoNV&() const
18211 {
18212 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18213 }
18214
18215 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18216 {
18217 return ( sType == rhs.sType )
18218 && ( pNext == rhs.pNext )
18219 && ( handleType == rhs.handleType )
18220 && ( handle == rhs.handle );
18221 }
18222
18223 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18224 {
18225 return !operator==( rhs );
18226 }
18227
18228 private:
18229 StructureType sType;
18230
18231 public:
18232 const void* pNext;
18233 ExternalMemoryHandleTypeFlagsNV handleType;
18234 HANDLE handle;
18235 };
18236 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18237#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18238
18239 enum class ExternalMemoryFeatureFlagBitsNV
18240 {
18241 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18242 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18243 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18244 };
18245
18246 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18247
18248 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18249 {
18250 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18251 }
18252
18253 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18254 {
18255 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18256 }
18257
18258 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18259 {
18260 enum
18261 {
18262 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18263 };
18264 };
18265
18266 struct ExternalImageFormatPropertiesNV
18267 {
18268 operator const VkExternalImageFormatPropertiesNV&() const
18269 {
18270 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18271 }
18272
18273 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18274 {
18275 return ( imageFormatProperties == rhs.imageFormatProperties )
18276 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18277 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18278 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18279 }
18280
18281 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18282 {
18283 return !operator==( rhs );
18284 }
18285
18286 ImageFormatProperties imageFormatProperties;
18287 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18288 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18289 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18290 };
18291 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18292
18293 enum class ValidationCheckEXT
18294 {
18295 eAll = VK_VALIDATION_CHECK_ALL_EXT
18296 };
18297
18298 struct ValidationFlagsEXT
18299 {
18300 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18301 : sType( StructureType::eValidationFlagsEXT )
18302 , pNext( nullptr )
18303 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18304 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18305 {
18306 }
18307
18308 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18309 {
18310 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18311 }
18312
18313 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18314 {
18315 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18316 return *this;
18317 }
18318
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018319 ValidationFlagsEXT& setPNext( const void* pNext_ )
18320 {
18321 pNext = pNext_;
18322 return *this;
18323 }
18324
18325 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18326 {
18327 disabledValidationCheckCount = disabledValidationCheckCount_;
18328 return *this;
18329 }
18330
18331 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18332 {
18333 pDisabledValidationChecks = pDisabledValidationChecks_;
18334 return *this;
18335 }
18336
18337 operator const VkValidationFlagsEXT&() const
18338 {
18339 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18340 }
18341
18342 bool operator==( ValidationFlagsEXT const& rhs ) const
18343 {
18344 return ( sType == rhs.sType )
18345 && ( pNext == rhs.pNext )
18346 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18347 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18348 }
18349
18350 bool operator!=( ValidationFlagsEXT const& rhs ) const
18351 {
18352 return !operator==( rhs );
18353 }
18354
18355 private:
18356 StructureType sType;
18357
18358 public:
18359 const void* pNext;
18360 uint32_t disabledValidationCheckCount;
18361 ValidationCheckEXT* pDisabledValidationChecks;
18362 };
18363 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18364
18365 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18366 {
18367 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18368 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18369 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18370 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18371 };
18372
18373 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18374
18375 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18376 {
18377 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18378 }
18379
18380 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18381 {
18382 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18383 }
18384
18385 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18386 {
18387 enum
18388 {
18389 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18390 };
18391 };
18392
18393 enum class ObjectEntryUsageFlagBitsNVX
18394 {
18395 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18396 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18397 };
18398
18399 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18400
18401 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18402 {
18403 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18404 }
18405
18406 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18407 {
18408 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18409 }
18410
18411 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18412 {
18413 enum
18414 {
18415 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18416 };
18417 };
18418
18419 enum class IndirectCommandsTokenTypeNVX
18420 {
18421 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18422 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18423 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18424 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18425 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18426 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18427 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18428 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18429 };
18430
18431 struct IndirectCommandsTokenNVX
18432 {
18433 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18434 : tokenType( tokenType_ )
18435 , buffer( buffer_ )
18436 , offset( offset_ )
18437 {
18438 }
18439
18440 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18441 {
18442 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18443 }
18444
18445 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18446 {
18447 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18448 return *this;
18449 }
18450
18451 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18452 {
18453 tokenType = tokenType_;
18454 return *this;
18455 }
18456
18457 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18458 {
18459 buffer = buffer_;
18460 return *this;
18461 }
18462
18463 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18464 {
18465 offset = offset_;
18466 return *this;
18467 }
18468
18469 operator const VkIndirectCommandsTokenNVX&() const
18470 {
18471 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18472 }
18473
18474 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18475 {
18476 return ( tokenType == rhs.tokenType )
18477 && ( buffer == rhs.buffer )
18478 && ( offset == rhs.offset );
18479 }
18480
18481 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18482 {
18483 return !operator==( rhs );
18484 }
18485
18486 IndirectCommandsTokenTypeNVX tokenType;
18487 Buffer buffer;
18488 DeviceSize offset;
18489 };
18490 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18491
18492 struct IndirectCommandsLayoutTokenNVX
18493 {
18494 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18495 : tokenType( tokenType_ )
18496 , bindingUnit( bindingUnit_ )
18497 , dynamicCount( dynamicCount_ )
18498 , divisor( divisor_ )
18499 {
18500 }
18501
18502 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18503 {
18504 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18505 }
18506
18507 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18508 {
18509 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18510 return *this;
18511 }
18512
18513 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18514 {
18515 tokenType = tokenType_;
18516 return *this;
18517 }
18518
18519 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18520 {
18521 bindingUnit = bindingUnit_;
18522 return *this;
18523 }
18524
18525 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18526 {
18527 dynamicCount = dynamicCount_;
18528 return *this;
18529 }
18530
18531 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18532 {
18533 divisor = divisor_;
18534 return *this;
18535 }
18536
18537 operator const VkIndirectCommandsLayoutTokenNVX&() const
18538 {
18539 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18540 }
18541
18542 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18543 {
18544 return ( tokenType == rhs.tokenType )
18545 && ( bindingUnit == rhs.bindingUnit )
18546 && ( dynamicCount == rhs.dynamicCount )
18547 && ( divisor == rhs.divisor );
18548 }
18549
18550 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18551 {
18552 return !operator==( rhs );
18553 }
18554
18555 IndirectCommandsTokenTypeNVX tokenType;
18556 uint32_t bindingUnit;
18557 uint32_t dynamicCount;
18558 uint32_t divisor;
18559 };
18560 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18561
18562 struct IndirectCommandsLayoutCreateInfoNVX
18563 {
18564 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18565 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18566 , pNext( nullptr )
18567 , pipelineBindPoint( pipelineBindPoint_ )
18568 , flags( flags_ )
18569 , tokenCount( tokenCount_ )
18570 , pTokens( pTokens_ )
18571 {
18572 }
18573
18574 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18575 {
18576 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18577 }
18578
18579 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18580 {
18581 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18582 return *this;
18583 }
18584
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018585 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18586 {
18587 pNext = pNext_;
18588 return *this;
18589 }
18590
18591 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18592 {
18593 pipelineBindPoint = pipelineBindPoint_;
18594 return *this;
18595 }
18596
18597 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18598 {
18599 flags = flags_;
18600 return *this;
18601 }
18602
18603 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18604 {
18605 tokenCount = tokenCount_;
18606 return *this;
18607 }
18608
18609 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18610 {
18611 pTokens = pTokens_;
18612 return *this;
18613 }
18614
18615 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18616 {
18617 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18618 }
18619
18620 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18621 {
18622 return ( sType == rhs.sType )
18623 && ( pNext == rhs.pNext )
18624 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18625 && ( flags == rhs.flags )
18626 && ( tokenCount == rhs.tokenCount )
18627 && ( pTokens == rhs.pTokens );
18628 }
18629
18630 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18631 {
18632 return !operator==( rhs );
18633 }
18634
18635 private:
18636 StructureType sType;
18637
18638 public:
18639 const void* pNext;
18640 PipelineBindPoint pipelineBindPoint;
18641 IndirectCommandsLayoutUsageFlagsNVX flags;
18642 uint32_t tokenCount;
18643 const IndirectCommandsLayoutTokenNVX* pTokens;
18644 };
18645 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
18646
18647 enum class ObjectEntryTypeNVX
18648 {
18649 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
18650 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
18651 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
18652 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
18653 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
18654 };
18655
18656 struct ObjectTableCreateInfoNVX
18657 {
18658 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 )
18659 : sType( StructureType::eObjectTableCreateInfoNVX )
18660 , pNext( nullptr )
18661 , objectCount( objectCount_ )
18662 , pObjectEntryTypes( pObjectEntryTypes_ )
18663 , pObjectEntryCounts( pObjectEntryCounts_ )
18664 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
18665 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
18666 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
18667 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
18668 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
18669 , maxPipelineLayouts( maxPipelineLayouts_ )
18670 {
18671 }
18672
18673 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
18674 {
18675 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18676 }
18677
18678 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
18679 {
18680 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18681 return *this;
18682 }
18683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018684 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
18685 {
18686 pNext = pNext_;
18687 return *this;
18688 }
18689
18690 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
18691 {
18692 objectCount = objectCount_;
18693 return *this;
18694 }
18695
18696 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
18697 {
18698 pObjectEntryTypes = pObjectEntryTypes_;
18699 return *this;
18700 }
18701
18702 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
18703 {
18704 pObjectEntryCounts = pObjectEntryCounts_;
18705 return *this;
18706 }
18707
18708 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
18709 {
18710 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
18711 return *this;
18712 }
18713
18714 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
18715 {
18716 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
18717 return *this;
18718 }
18719
18720 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
18721 {
18722 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
18723 return *this;
18724 }
18725
18726 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
18727 {
18728 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
18729 return *this;
18730 }
18731
18732 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
18733 {
18734 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
18735 return *this;
18736 }
18737
18738 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
18739 {
18740 maxPipelineLayouts = maxPipelineLayouts_;
18741 return *this;
18742 }
18743
18744 operator const VkObjectTableCreateInfoNVX&() const
18745 {
18746 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
18747 }
18748
18749 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
18750 {
18751 return ( sType == rhs.sType )
18752 && ( pNext == rhs.pNext )
18753 && ( objectCount == rhs.objectCount )
18754 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
18755 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
18756 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
18757 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
18758 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
18759 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
18760 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
18761 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
18762 }
18763
18764 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
18765 {
18766 return !operator==( rhs );
18767 }
18768
18769 private:
18770 StructureType sType;
18771
18772 public:
18773 const void* pNext;
18774 uint32_t objectCount;
18775 const ObjectEntryTypeNVX* pObjectEntryTypes;
18776 const uint32_t* pObjectEntryCounts;
18777 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
18778 uint32_t maxUniformBuffersPerDescriptor;
18779 uint32_t maxStorageBuffersPerDescriptor;
18780 uint32_t maxStorageImagesPerDescriptor;
18781 uint32_t maxSampledImagesPerDescriptor;
18782 uint32_t maxPipelineLayouts;
18783 };
18784 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
18785
18786 struct ObjectTableEntryNVX
18787 {
18788 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
18789 : type( type_ )
18790 , flags( flags_ )
18791 {
18792 }
18793
18794 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
18795 {
18796 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18797 }
18798
18799 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
18800 {
18801 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18802 return *this;
18803 }
18804
18805 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
18806 {
18807 type = type_;
18808 return *this;
18809 }
18810
18811 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18812 {
18813 flags = flags_;
18814 return *this;
18815 }
18816
18817 operator const VkObjectTableEntryNVX&() const
18818 {
18819 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
18820 }
18821
18822 bool operator==( ObjectTableEntryNVX const& rhs ) const
18823 {
18824 return ( type == rhs.type )
18825 && ( flags == rhs.flags );
18826 }
18827
18828 bool operator!=( ObjectTableEntryNVX const& rhs ) const
18829 {
18830 return !operator==( rhs );
18831 }
18832
18833 ObjectEntryTypeNVX type;
18834 ObjectEntryUsageFlagsNVX flags;
18835 };
18836 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
18837
18838 struct ObjectTablePipelineEntryNVX
18839 {
18840 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
18841 : type( type_ )
18842 , flags( flags_ )
18843 , pipeline( pipeline_ )
18844 {
18845 }
18846
18847 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
18848 {
18849 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18850 }
18851
18852 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
18853 {
18854 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18855 return *this;
18856 }
18857
18858 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
18859 {
18860 type = type_;
18861 return *this;
18862 }
18863
18864 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18865 {
18866 flags = flags_;
18867 return *this;
18868 }
18869
18870 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
18871 {
18872 pipeline = pipeline_;
18873 return *this;
18874 }
18875
18876 operator const VkObjectTablePipelineEntryNVX&() const
18877 {
18878 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
18879 }
18880
18881 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
18882 {
18883 return ( type == rhs.type )
18884 && ( flags == rhs.flags )
18885 && ( pipeline == rhs.pipeline );
18886 }
18887
18888 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
18889 {
18890 return !operator==( rhs );
18891 }
18892
18893 ObjectEntryTypeNVX type;
18894 ObjectEntryUsageFlagsNVX flags;
18895 Pipeline pipeline;
18896 };
18897 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
18898
18899 struct ObjectTableDescriptorSetEntryNVX
18900 {
18901 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
18902 : type( type_ )
18903 , flags( flags_ )
18904 , pipelineLayout( pipelineLayout_ )
18905 , descriptorSet( descriptorSet_ )
18906 {
18907 }
18908
18909 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
18910 {
18911 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18912 }
18913
18914 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
18915 {
18916 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18917 return *this;
18918 }
18919
18920 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
18921 {
18922 type = type_;
18923 return *this;
18924 }
18925
18926 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18927 {
18928 flags = flags_;
18929 return *this;
18930 }
18931
18932 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
18933 {
18934 pipelineLayout = pipelineLayout_;
18935 return *this;
18936 }
18937
18938 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
18939 {
18940 descriptorSet = descriptorSet_;
18941 return *this;
18942 }
18943
18944 operator const VkObjectTableDescriptorSetEntryNVX&() const
18945 {
18946 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
18947 }
18948
18949 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18950 {
18951 return ( type == rhs.type )
18952 && ( flags == rhs.flags )
18953 && ( pipelineLayout == rhs.pipelineLayout )
18954 && ( descriptorSet == rhs.descriptorSet );
18955 }
18956
18957 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18958 {
18959 return !operator==( rhs );
18960 }
18961
18962 ObjectEntryTypeNVX type;
18963 ObjectEntryUsageFlagsNVX flags;
18964 PipelineLayout pipelineLayout;
18965 DescriptorSet descriptorSet;
18966 };
18967 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
18968
18969 struct ObjectTableVertexBufferEntryNVX
18970 {
18971 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
18972 : type( type_ )
18973 , flags( flags_ )
18974 , buffer( buffer_ )
18975 {
18976 }
18977
18978 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
18979 {
18980 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18981 }
18982
18983 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
18984 {
18985 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18986 return *this;
18987 }
18988
18989 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
18990 {
18991 type = type_;
18992 return *this;
18993 }
18994
18995 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18996 {
18997 flags = flags_;
18998 return *this;
18999 }
19000
19001 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19002 {
19003 buffer = buffer_;
19004 return *this;
19005 }
19006
19007 operator const VkObjectTableVertexBufferEntryNVX&() const
19008 {
19009 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19010 }
19011
19012 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19013 {
19014 return ( type == rhs.type )
19015 && ( flags == rhs.flags )
19016 && ( buffer == rhs.buffer );
19017 }
19018
19019 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19020 {
19021 return !operator==( rhs );
19022 }
19023
19024 ObjectEntryTypeNVX type;
19025 ObjectEntryUsageFlagsNVX flags;
19026 Buffer buffer;
19027 };
19028 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19029
19030 struct ObjectTableIndexBufferEntryNVX
19031 {
Mark Young39389872017-01-19 21:10:49 -070019032 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019033 : type( type_ )
19034 , flags( flags_ )
19035 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019036 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019037 {
19038 }
19039
19040 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19041 {
19042 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19043 }
19044
19045 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19046 {
19047 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19048 return *this;
19049 }
19050
19051 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19052 {
19053 type = type_;
19054 return *this;
19055 }
19056
19057 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19058 {
19059 flags = flags_;
19060 return *this;
19061 }
19062
19063 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19064 {
19065 buffer = buffer_;
19066 return *this;
19067 }
19068
Mark Young39389872017-01-19 21:10:49 -070019069 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19070 {
19071 indexType = indexType_;
19072 return *this;
19073 }
19074
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019075 operator const VkObjectTableIndexBufferEntryNVX&() const
19076 {
19077 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19078 }
19079
19080 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19081 {
19082 return ( type == rhs.type )
19083 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019084 && ( buffer == rhs.buffer )
19085 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019086 }
19087
19088 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19089 {
19090 return !operator==( rhs );
19091 }
19092
19093 ObjectEntryTypeNVX type;
19094 ObjectEntryUsageFlagsNVX flags;
19095 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019096 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019097 };
19098 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19099
19100 struct ObjectTablePushConstantEntryNVX
19101 {
19102 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19103 : type( type_ )
19104 , flags( flags_ )
19105 , pipelineLayout( pipelineLayout_ )
19106 , stageFlags( stageFlags_ )
19107 {
19108 }
19109
19110 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19111 {
19112 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19113 }
19114
19115 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19116 {
19117 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19118 return *this;
19119 }
19120
19121 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19122 {
19123 type = type_;
19124 return *this;
19125 }
19126
19127 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19128 {
19129 flags = flags_;
19130 return *this;
19131 }
19132
19133 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19134 {
19135 pipelineLayout = pipelineLayout_;
19136 return *this;
19137 }
19138
19139 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19140 {
19141 stageFlags = stageFlags_;
19142 return *this;
19143 }
19144
19145 operator const VkObjectTablePushConstantEntryNVX&() const
19146 {
19147 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19148 }
19149
19150 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19151 {
19152 return ( type == rhs.type )
19153 && ( flags == rhs.flags )
19154 && ( pipelineLayout == rhs.pipelineLayout )
19155 && ( stageFlags == rhs.stageFlags );
19156 }
19157
19158 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19159 {
19160 return !operator==( rhs );
19161 }
19162
19163 ObjectEntryTypeNVX type;
19164 ObjectEntryUsageFlagsNVX flags;
19165 PipelineLayout pipelineLayout;
19166 ShaderStageFlags stageFlags;
19167 };
19168 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19169
Mark Young0f183a82017-02-28 09:58:04 -070019170 enum class DescriptorSetLayoutCreateFlagBits
19171 {
19172 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19173 };
19174
19175 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19176
19177 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19178 {
19179 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19180 }
19181
19182 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19183 {
19184 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19185 }
19186
19187 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19188 {
19189 enum
19190 {
19191 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19192 };
19193 };
19194
19195 struct DescriptorSetLayoutCreateInfo
19196 {
19197 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19198 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19199 , pNext( nullptr )
19200 , flags( flags_ )
19201 , bindingCount( bindingCount_ )
19202 , pBindings( pBindings_ )
19203 {
19204 }
19205
19206 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19207 {
19208 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19209 }
19210
19211 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19212 {
19213 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19214 return *this;
19215 }
19216
19217 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19218 {
19219 pNext = pNext_;
19220 return *this;
19221 }
19222
19223 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19224 {
19225 flags = flags_;
19226 return *this;
19227 }
19228
19229 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19230 {
19231 bindingCount = bindingCount_;
19232 return *this;
19233 }
19234
19235 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19236 {
19237 pBindings = pBindings_;
19238 return *this;
19239 }
19240
19241 operator const VkDescriptorSetLayoutCreateInfo&() const
19242 {
19243 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19244 }
19245
19246 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19247 {
19248 return ( sType == rhs.sType )
19249 && ( pNext == rhs.pNext )
19250 && ( flags == rhs.flags )
19251 && ( bindingCount == rhs.bindingCount )
19252 && ( pBindings == rhs.pBindings );
19253 }
19254
19255 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19256 {
19257 return !operator==( rhs );
19258 }
19259
19260 private:
19261 StructureType sType;
19262
19263 public:
19264 const void* pNext;
19265 DescriptorSetLayoutCreateFlags flags;
19266 uint32_t bindingCount;
19267 const DescriptorSetLayoutBinding* pBindings;
19268 };
19269 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19270
19271 enum class ExternalMemoryHandleTypeFlagBitsKHX
19272 {
19273 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19274 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19275 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19276 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19277 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19278 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19279 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19280 };
19281
19282 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19283
19284 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19285 {
19286 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19287 }
19288
19289 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19290 {
19291 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19292 }
19293
19294 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19295 {
19296 enum
19297 {
19298 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19299 };
19300 };
19301
19302 struct PhysicalDeviceExternalImageFormatInfoKHX
19303 {
19304 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19305 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19306 , pNext( nullptr )
19307 , handleType( handleType_ )
19308 {
19309 }
19310
19311 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19312 {
19313 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19314 }
19315
19316 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19317 {
19318 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19319 return *this;
19320 }
19321
19322 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19323 {
19324 pNext = pNext_;
19325 return *this;
19326 }
19327
19328 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19329 {
19330 handleType = handleType_;
19331 return *this;
19332 }
19333
19334 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19335 {
19336 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19337 }
19338
19339 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19340 {
19341 return ( sType == rhs.sType )
19342 && ( pNext == rhs.pNext )
19343 && ( handleType == rhs.handleType );
19344 }
19345
19346 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19347 {
19348 return !operator==( rhs );
19349 }
19350
19351 private:
19352 StructureType sType;
19353
19354 public:
19355 const void* pNext;
19356 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19357 };
19358 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19359
19360 struct PhysicalDeviceExternalBufferInfoKHX
19361 {
19362 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19363 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19364 , pNext( nullptr )
19365 , flags( flags_ )
19366 , usage( usage_ )
19367 , handleType( handleType_ )
19368 {
19369 }
19370
19371 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19372 {
19373 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19374 }
19375
19376 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19377 {
19378 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19379 return *this;
19380 }
19381
19382 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19383 {
19384 pNext = pNext_;
19385 return *this;
19386 }
19387
19388 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19389 {
19390 flags = flags_;
19391 return *this;
19392 }
19393
19394 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19395 {
19396 usage = usage_;
19397 return *this;
19398 }
19399
19400 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19401 {
19402 handleType = handleType_;
19403 return *this;
19404 }
19405
19406 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19407 {
19408 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19409 }
19410
19411 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19412 {
19413 return ( sType == rhs.sType )
19414 && ( pNext == rhs.pNext )
19415 && ( flags == rhs.flags )
19416 && ( usage == rhs.usage )
19417 && ( handleType == rhs.handleType );
19418 }
19419
19420 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19421 {
19422 return !operator==( rhs );
19423 }
19424
19425 private:
19426 StructureType sType;
19427
19428 public:
19429 const void* pNext;
19430 BufferCreateFlags flags;
19431 BufferUsageFlags usage;
19432 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19433 };
19434 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19435
19436 struct ExternalMemoryImageCreateInfoKHX
19437 {
19438 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19439 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19440 , pNext( nullptr )
19441 , handleTypes( handleTypes_ )
19442 {
19443 }
19444
19445 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19446 {
19447 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19448 }
19449
19450 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19451 {
19452 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19453 return *this;
19454 }
19455
19456 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19457 {
19458 pNext = pNext_;
19459 return *this;
19460 }
19461
19462 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19463 {
19464 handleTypes = handleTypes_;
19465 return *this;
19466 }
19467
19468 operator const VkExternalMemoryImageCreateInfoKHX&() const
19469 {
19470 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19471 }
19472
19473 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19474 {
19475 return ( sType == rhs.sType )
19476 && ( pNext == rhs.pNext )
19477 && ( handleTypes == rhs.handleTypes );
19478 }
19479
19480 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19481 {
19482 return !operator==( rhs );
19483 }
19484
19485 private:
19486 StructureType sType;
19487
19488 public:
19489 const void* pNext;
19490 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19491 };
19492 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19493
19494 struct ExternalMemoryBufferCreateInfoKHX
19495 {
19496 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19497 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19498 , pNext( nullptr )
19499 , handleTypes( handleTypes_ )
19500 {
19501 }
19502
19503 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19504 {
19505 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19506 }
19507
19508 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19509 {
19510 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19511 return *this;
19512 }
19513
19514 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19515 {
19516 pNext = pNext_;
19517 return *this;
19518 }
19519
19520 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19521 {
19522 handleTypes = handleTypes_;
19523 return *this;
19524 }
19525
19526 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19527 {
19528 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19529 }
19530
19531 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19532 {
19533 return ( sType == rhs.sType )
19534 && ( pNext == rhs.pNext )
19535 && ( handleTypes == rhs.handleTypes );
19536 }
19537
19538 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19539 {
19540 return !operator==( rhs );
19541 }
19542
19543 private:
19544 StructureType sType;
19545
19546 public:
19547 const void* pNext;
19548 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19549 };
19550 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19551
19552 struct ExportMemoryAllocateInfoKHX
19553 {
19554 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19555 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19556 , pNext( nullptr )
19557 , handleTypes( handleTypes_ )
19558 {
19559 }
19560
19561 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19562 {
19563 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19564 }
19565
19566 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19567 {
19568 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19569 return *this;
19570 }
19571
19572 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19573 {
19574 pNext = pNext_;
19575 return *this;
19576 }
19577
19578 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19579 {
19580 handleTypes = handleTypes_;
19581 return *this;
19582 }
19583
19584 operator const VkExportMemoryAllocateInfoKHX&() const
19585 {
19586 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19587 }
19588
19589 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19590 {
19591 return ( sType == rhs.sType )
19592 && ( pNext == rhs.pNext )
19593 && ( handleTypes == rhs.handleTypes );
19594 }
19595
19596 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19597 {
19598 return !operator==( rhs );
19599 }
19600
19601 private:
19602 StructureType sType;
19603
19604 public:
19605 const void* pNext;
19606 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19607 };
19608 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19609
19610#ifdef VK_USE_PLATFORM_WIN32_KHR
19611 struct ImportMemoryWin32HandleInfoKHX
19612 {
19613 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19614 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19615 , pNext( nullptr )
19616 , handleType( handleType_ )
19617 , handle( handle_ )
19618 {
19619 }
19620
19621 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19622 {
19623 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19624 }
19625
19626 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19627 {
19628 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19629 return *this;
19630 }
19631
19632 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19633 {
19634 pNext = pNext_;
19635 return *this;
19636 }
19637
19638 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19639 {
19640 handleType = handleType_;
19641 return *this;
19642 }
19643
19644 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19645 {
19646 handle = handle_;
19647 return *this;
19648 }
19649
19650 operator const VkImportMemoryWin32HandleInfoKHX&() const
19651 {
19652 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19653 }
19654
19655 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19656 {
19657 return ( sType == rhs.sType )
19658 && ( pNext == rhs.pNext )
19659 && ( handleType == rhs.handleType )
19660 && ( handle == rhs.handle );
19661 }
19662
19663 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19664 {
19665 return !operator==( rhs );
19666 }
19667
19668 private:
19669 StructureType sType;
19670
19671 public:
19672 const void* pNext;
19673 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19674 HANDLE handle;
19675 };
19676 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
19677#endif /*VK_USE_PLATFORM_WIN32_KHR*/
19678
19679 struct ImportMemoryFdInfoKHX
19680 {
19681 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
19682 : sType( StructureType::eImportMemoryFdInfoKHX )
19683 , pNext( nullptr )
19684 , handleType( handleType_ )
19685 , fd( fd_ )
19686 {
19687 }
19688
19689 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
19690 {
19691 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19692 }
19693
19694 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
19695 {
19696 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19697 return *this;
19698 }
19699
19700 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
19701 {
19702 pNext = pNext_;
19703 return *this;
19704 }
19705
19706 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19707 {
19708 handleType = handleType_;
19709 return *this;
19710 }
19711
19712 ImportMemoryFdInfoKHX& setFd( int fd_ )
19713 {
19714 fd = fd_;
19715 return *this;
19716 }
19717
19718 operator const VkImportMemoryFdInfoKHX&() const
19719 {
19720 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
19721 }
19722
19723 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
19724 {
19725 return ( sType == rhs.sType )
19726 && ( pNext == rhs.pNext )
19727 && ( handleType == rhs.handleType )
19728 && ( fd == rhs.fd );
19729 }
19730
19731 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
19732 {
19733 return !operator==( rhs );
19734 }
19735
19736 private:
19737 StructureType sType;
19738
19739 public:
19740 const void* pNext;
19741 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19742 int fd;
19743 };
19744 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
19745
19746 enum class ExternalMemoryFeatureFlagBitsKHX
19747 {
19748 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
19749 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
19750 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
19751 };
19752
19753 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
19754
19755 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
19756 {
19757 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
19758 }
19759
19760 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
19761 {
19762 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
19763 }
19764
19765 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
19766 {
19767 enum
19768 {
19769 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
19770 };
19771 };
19772
19773 struct ExternalMemoryPropertiesKHX
19774 {
19775 operator const VkExternalMemoryPropertiesKHX&() const
19776 {
19777 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
19778 }
19779
19780 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
19781 {
19782 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19783 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19784 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19785 }
19786
19787 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
19788 {
19789 return !operator==( rhs );
19790 }
19791
19792 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
19793 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
19794 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
19795 };
19796 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
19797
19798 struct ExternalImageFormatPropertiesKHX
19799 {
19800 operator const VkExternalImageFormatPropertiesKHX&() const
19801 {
19802 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
19803 }
19804
19805 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
19806 {
19807 return ( sType == rhs.sType )
19808 && ( pNext == rhs.pNext )
19809 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19810 }
19811
19812 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
19813 {
19814 return !operator==( rhs );
19815 }
19816
19817 private:
19818 StructureType sType;
19819
19820 public:
19821 void* pNext;
19822 ExternalMemoryPropertiesKHX externalMemoryProperties;
19823 };
19824 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
19825
19826 struct ExternalBufferPropertiesKHX
19827 {
19828 operator const VkExternalBufferPropertiesKHX&() const
19829 {
19830 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
19831 }
19832
19833 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
19834 {
19835 return ( sType == rhs.sType )
19836 && ( pNext == rhs.pNext )
19837 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19838 }
19839
19840 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
19841 {
19842 return !operator==( rhs );
19843 }
19844
19845 private:
19846 StructureType sType;
19847
19848 public:
19849 void* pNext;
19850 ExternalMemoryPropertiesKHX externalMemoryProperties;
19851 };
19852 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
19853
19854 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
19855 {
19856 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19857 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19858 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19859 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
19860 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
19861 };
19862
19863 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
19864
19865 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
19866 {
19867 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
19868 }
19869
19870 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
19871 {
19872 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
19873 }
19874
19875 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
19876 {
19877 enum
19878 {
19879 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
19880 };
19881 };
19882
19883 struct PhysicalDeviceExternalSemaphoreInfoKHX
19884 {
19885 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
19886 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
19887 , pNext( nullptr )
19888 , handleType( handleType_ )
19889 {
19890 }
19891
19892 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19893 {
19894 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19895 }
19896
19897 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19898 {
19899 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19900 return *this;
19901 }
19902
19903 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
19904 {
19905 pNext = pNext_;
19906 return *this;
19907 }
19908
19909 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
19910 {
19911 handleType = handleType_;
19912 return *this;
19913 }
19914
19915 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
19916 {
19917 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
19918 }
19919
19920 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19921 {
19922 return ( sType == rhs.sType )
19923 && ( pNext == rhs.pNext )
19924 && ( handleType == rhs.handleType );
19925 }
19926
19927 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19928 {
19929 return !operator==( rhs );
19930 }
19931
19932 private:
19933 StructureType sType;
19934
19935 public:
19936 const void* pNext;
19937 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
19938 };
19939 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
19940
19941 struct ExportSemaphoreCreateInfoKHX
19942 {
19943 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
19944 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
19945 , pNext( nullptr )
19946 , handleTypes( handleTypes_ )
19947 {
19948 }
19949
19950 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
19951 {
19952 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19953 }
19954
19955 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
19956 {
19957 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19958 return *this;
19959 }
19960
19961 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
19962 {
19963 pNext = pNext_;
19964 return *this;
19965 }
19966
19967 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
19968 {
19969 handleTypes = handleTypes_;
19970 return *this;
19971 }
19972
19973 operator const VkExportSemaphoreCreateInfoKHX&() const
19974 {
19975 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
19976 }
19977
19978 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
19979 {
19980 return ( sType == rhs.sType )
19981 && ( pNext == rhs.pNext )
19982 && ( handleTypes == rhs.handleTypes );
19983 }
19984
19985 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
19986 {
19987 return !operator==( rhs );
19988 }
19989
19990 private:
19991 StructureType sType;
19992
19993 public:
19994 const void* pNext;
19995 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
19996 };
19997 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
19998
19999#ifdef VK_USE_PLATFORM_WIN32_KHX
20000 struct ImportSemaphoreWin32HandleInfoKHX
20001 {
20002 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20003 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20004 , pNext( nullptr )
20005 , semaphore( semaphore_ )
20006 , handleType( handleType_ )
20007 , handle( handle_ )
20008 {
20009 }
20010
20011 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20012 {
20013 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20014 }
20015
20016 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20017 {
20018 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20019 return *this;
20020 }
20021
20022 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20023 {
20024 pNext = pNext_;
20025 return *this;
20026 }
20027
20028 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20029 {
20030 semaphore = semaphore_;
20031 return *this;
20032 }
20033
20034 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20035 {
20036 handleType = handleType_;
20037 return *this;
20038 }
20039
20040 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20041 {
20042 handle = handle_;
20043 return *this;
20044 }
20045
20046 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20047 {
20048 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20049 }
20050
20051 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20052 {
20053 return ( sType == rhs.sType )
20054 && ( pNext == rhs.pNext )
20055 && ( semaphore == rhs.semaphore )
20056 && ( handleType == rhs.handleType )
20057 && ( handle == rhs.handle );
20058 }
20059
20060 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20061 {
20062 return !operator==( rhs );
20063 }
20064
20065 private:
20066 StructureType sType;
20067
20068 public:
20069 const void* pNext;
20070 Semaphore semaphore;
20071 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20072 HANDLE handle;
20073 };
20074 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20075#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20076
20077 struct ImportSemaphoreFdInfoKHX
20078 {
20079 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20080 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20081 , pNext( nullptr )
20082 , semaphore( semaphore_ )
20083 , handleType( handleType_ )
20084 , fd( fd_ )
20085 {
20086 }
20087
20088 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20089 {
20090 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20091 }
20092
20093 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20094 {
20095 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20096 return *this;
20097 }
20098
20099 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20100 {
20101 pNext = pNext_;
20102 return *this;
20103 }
20104
20105 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20106 {
20107 semaphore = semaphore_;
20108 return *this;
20109 }
20110
20111 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20112 {
20113 handleType = handleType_;
20114 return *this;
20115 }
20116
20117 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20118 {
20119 fd = fd_;
20120 return *this;
20121 }
20122
20123 operator const VkImportSemaphoreFdInfoKHX&() const
20124 {
20125 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20126 }
20127
20128 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20129 {
20130 return ( sType == rhs.sType )
20131 && ( pNext == rhs.pNext )
20132 && ( semaphore == rhs.semaphore )
20133 && ( handleType == rhs.handleType )
20134 && ( fd == rhs.fd );
20135 }
20136
20137 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20138 {
20139 return !operator==( rhs );
20140 }
20141
20142 private:
20143 StructureType sType;
20144
20145 public:
20146 const void* pNext;
20147 Semaphore semaphore;
20148 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20149 int fd;
20150 };
20151 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20152
20153 enum class ExternalSemaphoreFeatureFlagBitsKHX
20154 {
20155 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20156 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20157 };
20158
20159 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20160
20161 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20162 {
20163 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20164 }
20165
20166 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20167 {
20168 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20169 }
20170
20171 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20172 {
20173 enum
20174 {
20175 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20176 };
20177 };
20178
20179 struct ExternalSemaphorePropertiesKHX
20180 {
20181 operator const VkExternalSemaphorePropertiesKHX&() const
20182 {
20183 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20184 }
20185
20186 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20187 {
20188 return ( sType == rhs.sType )
20189 && ( pNext == rhs.pNext )
20190 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20191 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20192 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20193 }
20194
20195 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20196 {
20197 return !operator==( rhs );
20198 }
20199
20200 private:
20201 StructureType sType;
20202
20203 public:
20204 void* pNext;
20205 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20206 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20207 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20208 };
20209 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20210
Mark Young39389872017-01-19 21:10:49 -070020211 enum class SurfaceCounterFlagBitsEXT
20212 {
20213 eVblankExt = VK_SURFACE_COUNTER_VBLANK_EXT
20214 };
20215
20216 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20217
20218 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20219 {
20220 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20221 }
20222
20223 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20224 {
20225 return ~( SurfaceCounterFlagsEXT( bits ) );
20226 }
20227
20228 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20229 {
20230 enum
20231 {
20232 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblankExt)
20233 };
20234 };
20235
20236 struct SurfaceCapabilities2EXT
20237 {
20238 operator const VkSurfaceCapabilities2EXT&() const
20239 {
20240 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20241 }
20242
20243 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20244 {
20245 return ( sType == rhs.sType )
20246 && ( pNext == rhs.pNext )
20247 && ( minImageCount == rhs.minImageCount )
20248 && ( maxImageCount == rhs.maxImageCount )
20249 && ( currentExtent == rhs.currentExtent )
20250 && ( minImageExtent == rhs.minImageExtent )
20251 && ( maxImageExtent == rhs.maxImageExtent )
20252 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20253 && ( supportedTransforms == rhs.supportedTransforms )
20254 && ( currentTransform == rhs.currentTransform )
20255 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20256 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20257 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20258 }
20259
20260 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20261 {
20262 return !operator==( rhs );
20263 }
20264
20265 private:
20266 StructureType sType;
20267
20268 public:
20269 void* pNext;
20270 uint32_t minImageCount;
20271 uint32_t maxImageCount;
20272 Extent2D currentExtent;
20273 Extent2D minImageExtent;
20274 Extent2D maxImageExtent;
20275 uint32_t maxImageArrayLayers;
20276 SurfaceTransformFlagsKHR supportedTransforms;
20277 SurfaceTransformFlagBitsKHR currentTransform;
20278 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20279 ImageUsageFlags supportedUsageFlags;
20280 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20281 };
20282 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20283
20284 struct SwapchainCounterCreateInfoEXT
20285 {
20286 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20287 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20288 , pNext( nullptr )
20289 , surfaceCounters( surfaceCounters_ )
20290 {
20291 }
20292
20293 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20294 {
20295 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20296 }
20297
20298 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20299 {
20300 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20301 return *this;
20302 }
20303
Mark Young39389872017-01-19 21:10:49 -070020304 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20305 {
20306 pNext = pNext_;
20307 return *this;
20308 }
20309
20310 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20311 {
20312 surfaceCounters = surfaceCounters_;
20313 return *this;
20314 }
20315
20316 operator const VkSwapchainCounterCreateInfoEXT&() const
20317 {
20318 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20319 }
20320
20321 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20322 {
20323 return ( sType == rhs.sType )
20324 && ( pNext == rhs.pNext )
20325 && ( surfaceCounters == rhs.surfaceCounters );
20326 }
20327
20328 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20329 {
20330 return !operator==( rhs );
20331 }
20332
20333 private:
20334 StructureType sType;
20335
20336 public:
20337 const void* pNext;
20338 SurfaceCounterFlagsEXT surfaceCounters;
20339 };
20340 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20341
20342 enum class DisplayPowerStateEXT
20343 {
20344 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20345 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20346 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20347 };
20348
20349 struct DisplayPowerInfoEXT
20350 {
20351 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20352 : sType( StructureType::eDisplayPowerInfoEXT )
20353 , pNext( nullptr )
20354 , powerState( powerState_ )
20355 {
20356 }
20357
20358 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20359 {
20360 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20361 }
20362
20363 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20364 {
20365 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20366 return *this;
20367 }
20368
Mark Young39389872017-01-19 21:10:49 -070020369 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20370 {
20371 pNext = pNext_;
20372 return *this;
20373 }
20374
20375 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20376 {
20377 powerState = powerState_;
20378 return *this;
20379 }
20380
20381 operator const VkDisplayPowerInfoEXT&() const
20382 {
20383 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20384 }
20385
20386 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20387 {
20388 return ( sType == rhs.sType )
20389 && ( pNext == rhs.pNext )
20390 && ( powerState == rhs.powerState );
20391 }
20392
20393 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20394 {
20395 return !operator==( rhs );
20396 }
20397
20398 private:
20399 StructureType sType;
20400
20401 public:
20402 const void* pNext;
20403 DisplayPowerStateEXT powerState;
20404 };
20405 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20406
20407 enum class DeviceEventTypeEXT
20408 {
20409 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20410 };
20411
20412 struct DeviceEventInfoEXT
20413 {
20414 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20415 : sType( StructureType::eDeviceEventInfoEXT )
20416 , pNext( nullptr )
20417 , deviceEvent( deviceEvent_ )
20418 {
20419 }
20420
20421 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20422 {
20423 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20424 }
20425
20426 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20427 {
20428 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20429 return *this;
20430 }
20431
Mark Young39389872017-01-19 21:10:49 -070020432 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20433 {
20434 pNext = pNext_;
20435 return *this;
20436 }
20437
20438 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20439 {
20440 deviceEvent = deviceEvent_;
20441 return *this;
20442 }
20443
20444 operator const VkDeviceEventInfoEXT&() const
20445 {
20446 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20447 }
20448
20449 bool operator==( DeviceEventInfoEXT const& rhs ) const
20450 {
20451 return ( sType == rhs.sType )
20452 && ( pNext == rhs.pNext )
20453 && ( deviceEvent == rhs.deviceEvent );
20454 }
20455
20456 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20457 {
20458 return !operator==( rhs );
20459 }
20460
20461 private:
20462 StructureType sType;
20463
20464 public:
20465 const void* pNext;
20466 DeviceEventTypeEXT deviceEvent;
20467 };
20468 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20469
20470 enum class DisplayEventTypeEXT
20471 {
20472 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20473 };
20474
20475 struct DisplayEventInfoEXT
20476 {
20477 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20478 : sType( StructureType::eDisplayEventInfoEXT )
20479 , pNext( nullptr )
20480 , displayEvent( displayEvent_ )
20481 {
20482 }
20483
20484 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20485 {
20486 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20487 }
20488
20489 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20490 {
20491 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20492 return *this;
20493 }
20494
Mark Young39389872017-01-19 21:10:49 -070020495 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20496 {
20497 pNext = pNext_;
20498 return *this;
20499 }
20500
20501 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20502 {
20503 displayEvent = displayEvent_;
20504 return *this;
20505 }
20506
20507 operator const VkDisplayEventInfoEXT&() const
20508 {
20509 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20510 }
20511
20512 bool operator==( DisplayEventInfoEXT const& rhs ) const
20513 {
20514 return ( sType == rhs.sType )
20515 && ( pNext == rhs.pNext )
20516 && ( displayEvent == rhs.displayEvent );
20517 }
20518
20519 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20520 {
20521 return !operator==( rhs );
20522 }
20523
20524 private:
20525 StructureType sType;
20526
20527 public:
20528 const void* pNext;
20529 DisplayEventTypeEXT displayEvent;
20530 };
20531 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20532
Mark Young0f183a82017-02-28 09:58:04 -070020533 enum class PeerMemoryFeatureFlagBitsKHX
20534 {
20535 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20536 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20537 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20538 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20539 };
20540
20541 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20542
20543 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20544 {
20545 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20546 }
20547
20548 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20549 {
20550 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20551 }
20552
20553 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20554 {
20555 enum
20556 {
20557 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20558 };
20559 };
20560
20561 enum class MemoryAllocateFlagBitsKHX
20562 {
20563 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20564 };
20565
20566 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20567
20568 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20569 {
20570 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20571 }
20572
20573 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20574 {
20575 return ~( MemoryAllocateFlagsKHX( bits ) );
20576 }
20577
20578 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20579 {
20580 enum
20581 {
20582 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20583 };
20584 };
20585
20586 struct MemoryAllocateFlagsInfoKHX
20587 {
20588 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20589 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20590 , pNext( nullptr )
20591 , flags( flags_ )
20592 , deviceMask( deviceMask_ )
20593 {
20594 }
20595
20596 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20597 {
20598 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20599 }
20600
20601 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20602 {
20603 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20604 return *this;
20605 }
20606
20607 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20608 {
20609 pNext = pNext_;
20610 return *this;
20611 }
20612
20613 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20614 {
20615 flags = flags_;
20616 return *this;
20617 }
20618
20619 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20620 {
20621 deviceMask = deviceMask_;
20622 return *this;
20623 }
20624
20625 operator const VkMemoryAllocateFlagsInfoKHX&() const
20626 {
20627 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20628 }
20629
20630 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20631 {
20632 return ( sType == rhs.sType )
20633 && ( pNext == rhs.pNext )
20634 && ( flags == rhs.flags )
20635 && ( deviceMask == rhs.deviceMask );
20636 }
20637
20638 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20639 {
20640 return !operator==( rhs );
20641 }
20642
20643 private:
20644 StructureType sType;
20645
20646 public:
20647 const void* pNext;
20648 MemoryAllocateFlagsKHX flags;
20649 uint32_t deviceMask;
20650 };
20651 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20652
20653 enum class DeviceGroupPresentModeFlagBitsKHX
20654 {
20655 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20656 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20657 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20658 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20659 };
20660
20661 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20662
20663 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20664 {
20665 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20666 }
20667
20668 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20669 {
20670 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
20671 }
20672
20673 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
20674 {
20675 enum
20676 {
20677 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
20678 };
20679 };
20680
20681 struct DeviceGroupPresentCapabilitiesKHX
20682 {
20683 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
20684 {
20685 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
20686 }
20687
20688 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20689 {
20690 return ( sType == rhs.sType )
20691 && ( pNext == rhs.pNext )
20692 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
20693 && ( modes == rhs.modes );
20694 }
20695
20696 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20697 {
20698 return !operator==( rhs );
20699 }
20700
20701 private:
20702 StructureType sType;
20703
20704 public:
20705 const void* pNext;
20706 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
20707 DeviceGroupPresentModeFlagsKHX modes;
20708 };
20709 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
20710
20711 struct DeviceGroupPresentInfoKHX
20712 {
20713 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
20714 : sType( StructureType::eDeviceGroupPresentInfoKHX )
20715 , pNext( nullptr )
20716 , swapchainCount( swapchainCount_ )
20717 , pDeviceMasks( pDeviceMasks_ )
20718 , mode( mode_ )
20719 {
20720 }
20721
20722 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
20723 {
20724 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20725 }
20726
20727 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
20728 {
20729 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20730 return *this;
20731 }
20732
20733 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
20734 {
20735 pNext = pNext_;
20736 return *this;
20737 }
20738
20739 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
20740 {
20741 swapchainCount = swapchainCount_;
20742 return *this;
20743 }
20744
20745 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
20746 {
20747 pDeviceMasks = pDeviceMasks_;
20748 return *this;
20749 }
20750
20751 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
20752 {
20753 mode = mode_;
20754 return *this;
20755 }
20756
20757 operator const VkDeviceGroupPresentInfoKHX&() const
20758 {
20759 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
20760 }
20761
20762 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
20763 {
20764 return ( sType == rhs.sType )
20765 && ( pNext == rhs.pNext )
20766 && ( swapchainCount == rhs.swapchainCount )
20767 && ( pDeviceMasks == rhs.pDeviceMasks )
20768 && ( mode == rhs.mode );
20769 }
20770
20771 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
20772 {
20773 return !operator==( rhs );
20774 }
20775
20776 private:
20777 StructureType sType;
20778
20779 public:
20780 const void* pNext;
20781 uint32_t swapchainCount;
20782 const uint32_t* pDeviceMasks;
20783 DeviceGroupPresentModeFlagBitsKHX mode;
20784 };
20785 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
20786
20787 struct DeviceGroupSwapchainCreateInfoKHX
20788 {
20789 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
20790 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
20791 , pNext( nullptr )
20792 , modes( modes_ )
20793 {
20794 }
20795
20796 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20797 {
20798 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20799 }
20800
20801 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20802 {
20803 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20804 return *this;
20805 }
20806
20807 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
20808 {
20809 pNext = pNext_;
20810 return *this;
20811 }
20812
20813 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
20814 {
20815 modes = modes_;
20816 return *this;
20817 }
20818
20819 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
20820 {
20821 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
20822 }
20823
20824 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20825 {
20826 return ( sType == rhs.sType )
20827 && ( pNext == rhs.pNext )
20828 && ( modes == rhs.modes );
20829 }
20830
20831 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20832 {
20833 return !operator==( rhs );
20834 }
20835
20836 private:
20837 StructureType sType;
20838
20839 public:
20840 const void* pNext;
20841 DeviceGroupPresentModeFlagsKHX modes;
20842 };
20843 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
20844
20845 enum class SwapchainCreateFlagBitsKHR
20846 {
20847 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
20848 };
20849
20850 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
20851
20852 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
20853 {
20854 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
20855 }
20856
20857 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
20858 {
20859 return ~( SwapchainCreateFlagsKHR( bits ) );
20860 }
20861
20862 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
20863 {
20864 enum
20865 {
20866 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
20867 };
20868 };
20869
20870 struct SwapchainCreateInfoKHR
20871 {
20872 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() )
20873 : sType( StructureType::eSwapchainCreateInfoKHR )
20874 , pNext( nullptr )
20875 , flags( flags_ )
20876 , surface( surface_ )
20877 , minImageCount( minImageCount_ )
20878 , imageFormat( imageFormat_ )
20879 , imageColorSpace( imageColorSpace_ )
20880 , imageExtent( imageExtent_ )
20881 , imageArrayLayers( imageArrayLayers_ )
20882 , imageUsage( imageUsage_ )
20883 , imageSharingMode( imageSharingMode_ )
20884 , queueFamilyIndexCount( queueFamilyIndexCount_ )
20885 , pQueueFamilyIndices( pQueueFamilyIndices_ )
20886 , preTransform( preTransform_ )
20887 , compositeAlpha( compositeAlpha_ )
20888 , presentMode( presentMode_ )
20889 , clipped( clipped_ )
20890 , oldSwapchain( oldSwapchain_ )
20891 {
20892 }
20893
20894 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
20895 {
20896 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20897 }
20898
20899 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
20900 {
20901 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20902 return *this;
20903 }
20904
20905 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
20906 {
20907 pNext = pNext_;
20908 return *this;
20909 }
20910
20911 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
20912 {
20913 flags = flags_;
20914 return *this;
20915 }
20916
20917 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
20918 {
20919 surface = surface_;
20920 return *this;
20921 }
20922
20923 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
20924 {
20925 minImageCount = minImageCount_;
20926 return *this;
20927 }
20928
20929 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
20930 {
20931 imageFormat = imageFormat_;
20932 return *this;
20933 }
20934
20935 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
20936 {
20937 imageColorSpace = imageColorSpace_;
20938 return *this;
20939 }
20940
20941 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20942 {
20943 imageExtent = imageExtent_;
20944 return *this;
20945 }
20946
20947 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
20948 {
20949 imageArrayLayers = imageArrayLayers_;
20950 return *this;
20951 }
20952
20953 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
20954 {
20955 imageUsage = imageUsage_;
20956 return *this;
20957 }
20958
20959 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
20960 {
20961 imageSharingMode = imageSharingMode_;
20962 return *this;
20963 }
20964
20965 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
20966 {
20967 queueFamilyIndexCount = queueFamilyIndexCount_;
20968 return *this;
20969 }
20970
20971 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
20972 {
20973 pQueueFamilyIndices = pQueueFamilyIndices_;
20974 return *this;
20975 }
20976
20977 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
20978 {
20979 preTransform = preTransform_;
20980 return *this;
20981 }
20982
20983 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
20984 {
20985 compositeAlpha = compositeAlpha_;
20986 return *this;
20987 }
20988
20989 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
20990 {
20991 presentMode = presentMode_;
20992 return *this;
20993 }
20994
20995 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
20996 {
20997 clipped = clipped_;
20998 return *this;
20999 }
21000
21001 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21002 {
21003 oldSwapchain = oldSwapchain_;
21004 return *this;
21005 }
21006
21007 operator const VkSwapchainCreateInfoKHR&() const
21008 {
21009 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21010 }
21011
21012 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21013 {
21014 return ( sType == rhs.sType )
21015 && ( pNext == rhs.pNext )
21016 && ( flags == rhs.flags )
21017 && ( surface == rhs.surface )
21018 && ( minImageCount == rhs.minImageCount )
21019 && ( imageFormat == rhs.imageFormat )
21020 && ( imageColorSpace == rhs.imageColorSpace )
21021 && ( imageExtent == rhs.imageExtent )
21022 && ( imageArrayLayers == rhs.imageArrayLayers )
21023 && ( imageUsage == rhs.imageUsage )
21024 && ( imageSharingMode == rhs.imageSharingMode )
21025 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21026 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21027 && ( preTransform == rhs.preTransform )
21028 && ( compositeAlpha == rhs.compositeAlpha )
21029 && ( presentMode == rhs.presentMode )
21030 && ( clipped == rhs.clipped )
21031 && ( oldSwapchain == rhs.oldSwapchain );
21032 }
21033
21034 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21035 {
21036 return !operator==( rhs );
21037 }
21038
21039 private:
21040 StructureType sType;
21041
21042 public:
21043 const void* pNext;
21044 SwapchainCreateFlagsKHR flags;
21045 SurfaceKHR surface;
21046 uint32_t minImageCount;
21047 Format imageFormat;
21048 ColorSpaceKHR imageColorSpace;
21049 Extent2D imageExtent;
21050 uint32_t imageArrayLayers;
21051 ImageUsageFlags imageUsage;
21052 SharingMode imageSharingMode;
21053 uint32_t queueFamilyIndexCount;
21054 const uint32_t* pQueueFamilyIndices;
21055 SurfaceTransformFlagBitsKHR preTransform;
21056 CompositeAlphaFlagBitsKHR compositeAlpha;
21057 PresentModeKHR presentMode;
21058 Bool32 clipped;
21059 SwapchainKHR oldSwapchain;
21060 };
21061 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21062
21063 enum class ViewportCoordinateSwizzleNV
21064 {
21065 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21066 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21067 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21068 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21069 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21070 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21071 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21072 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21073 };
21074
21075 struct ViewportSwizzleNV
21076 {
21077 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21078 : x( x_ )
21079 , y( y_ )
21080 , z( z_ )
21081 , w( w_ )
21082 {
21083 }
21084
21085 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21086 {
21087 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21088 }
21089
21090 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21091 {
21092 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21093 return *this;
21094 }
21095
21096 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21097 {
21098 x = x_;
21099 return *this;
21100 }
21101
21102 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21103 {
21104 y = y_;
21105 return *this;
21106 }
21107
21108 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21109 {
21110 z = z_;
21111 return *this;
21112 }
21113
21114 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21115 {
21116 w = w_;
21117 return *this;
21118 }
21119
21120 operator const VkViewportSwizzleNV&() const
21121 {
21122 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21123 }
21124
21125 bool operator==( ViewportSwizzleNV const& rhs ) const
21126 {
21127 return ( x == rhs.x )
21128 && ( y == rhs.y )
21129 && ( z == rhs.z )
21130 && ( w == rhs.w );
21131 }
21132
21133 bool operator!=( ViewportSwizzleNV const& rhs ) const
21134 {
21135 return !operator==( rhs );
21136 }
21137
21138 ViewportCoordinateSwizzleNV x;
21139 ViewportCoordinateSwizzleNV y;
21140 ViewportCoordinateSwizzleNV z;
21141 ViewportCoordinateSwizzleNV w;
21142 };
21143 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21144
21145 struct PipelineViewportSwizzleStateCreateInfoNV
21146 {
21147 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21148 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21149 , pNext( nullptr )
21150 , flags( flags_ )
21151 , viewportCount( viewportCount_ )
21152 , pViewportSwizzles( pViewportSwizzles_ )
21153 {
21154 }
21155
21156 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21157 {
21158 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21159 }
21160
21161 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21162 {
21163 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21164 return *this;
21165 }
21166
21167 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21168 {
21169 pNext = pNext_;
21170 return *this;
21171 }
21172
21173 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21174 {
21175 flags = flags_;
21176 return *this;
21177 }
21178
21179 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21180 {
21181 viewportCount = viewportCount_;
21182 return *this;
21183 }
21184
21185 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21186 {
21187 pViewportSwizzles = pViewportSwizzles_;
21188 return *this;
21189 }
21190
21191 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21192 {
21193 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21194 }
21195
21196 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21197 {
21198 return ( sType == rhs.sType )
21199 && ( pNext == rhs.pNext )
21200 && ( flags == rhs.flags )
21201 && ( viewportCount == rhs.viewportCount )
21202 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21203 }
21204
21205 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21206 {
21207 return !operator==( rhs );
21208 }
21209
21210 private:
21211 StructureType sType;
21212
21213 public:
21214 const void* pNext;
21215 PipelineViewportSwizzleStateCreateFlagsNV flags;
21216 uint32_t viewportCount;
21217 const ViewportSwizzleNV* pViewportSwizzles;
21218 };
21219 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21220
21221 enum class DiscardRectangleModeEXT
21222 {
21223 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21224 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21225 };
21226
21227 struct PipelineDiscardRectangleStateCreateInfoEXT
21228 {
21229 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21230 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21231 , pNext( nullptr )
21232 , flags( flags_ )
21233 , discardRectangleMode( discardRectangleMode_ )
21234 , discardRectangleCount( discardRectangleCount_ )
21235 , pDiscardRectangles( pDiscardRectangles_ )
21236 {
21237 }
21238
21239 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21240 {
21241 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21242 }
21243
21244 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21245 {
21246 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21247 return *this;
21248 }
21249
21250 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21251 {
21252 pNext = pNext_;
21253 return *this;
21254 }
21255
21256 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21257 {
21258 flags = flags_;
21259 return *this;
21260 }
21261
21262 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21263 {
21264 discardRectangleMode = discardRectangleMode_;
21265 return *this;
21266 }
21267
21268 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21269 {
21270 discardRectangleCount = discardRectangleCount_;
21271 return *this;
21272 }
21273
21274 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21275 {
21276 pDiscardRectangles = pDiscardRectangles_;
21277 return *this;
21278 }
21279
21280 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21281 {
21282 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21283 }
21284
21285 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21286 {
21287 return ( sType == rhs.sType )
21288 && ( pNext == rhs.pNext )
21289 && ( flags == rhs.flags )
21290 && ( discardRectangleMode == rhs.discardRectangleMode )
21291 && ( discardRectangleCount == rhs.discardRectangleCount )
21292 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21293 }
21294
21295 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21296 {
21297 return !operator==( rhs );
21298 }
21299
21300 private:
21301 StructureType sType;
21302
21303 public:
21304 const void* pNext;
21305 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21306 DiscardRectangleModeEXT discardRectangleMode;
21307 uint32_t discardRectangleCount;
21308 const Rect2D* pDiscardRectangles;
21309 };
21310 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21311
21312 enum class SubpassDescriptionFlagBits
21313 {
21314 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21315 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21316 };
21317
21318 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21319
21320 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21321 {
21322 return SubpassDescriptionFlags( bit0 ) | bit1;
21323 }
21324
21325 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21326 {
21327 return ~( SubpassDescriptionFlags( bits ) );
21328 }
21329
21330 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21331 {
21332 enum
21333 {
21334 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21335 };
21336 };
21337
21338 struct SubpassDescription
21339 {
21340 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 )
21341 : flags( flags_ )
21342 , pipelineBindPoint( pipelineBindPoint_ )
21343 , inputAttachmentCount( inputAttachmentCount_ )
21344 , pInputAttachments( pInputAttachments_ )
21345 , colorAttachmentCount( colorAttachmentCount_ )
21346 , pColorAttachments( pColorAttachments_ )
21347 , pResolveAttachments( pResolveAttachments_ )
21348 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21349 , preserveAttachmentCount( preserveAttachmentCount_ )
21350 , pPreserveAttachments( pPreserveAttachments_ )
21351 {
21352 }
21353
21354 SubpassDescription( VkSubpassDescription const & rhs )
21355 {
21356 memcpy( this, &rhs, sizeof(SubpassDescription) );
21357 }
21358
21359 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21360 {
21361 memcpy( this, &rhs, sizeof(SubpassDescription) );
21362 return *this;
21363 }
21364
21365 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21366 {
21367 flags = flags_;
21368 return *this;
21369 }
21370
21371 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21372 {
21373 pipelineBindPoint = pipelineBindPoint_;
21374 return *this;
21375 }
21376
21377 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21378 {
21379 inputAttachmentCount = inputAttachmentCount_;
21380 return *this;
21381 }
21382
21383 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21384 {
21385 pInputAttachments = pInputAttachments_;
21386 return *this;
21387 }
21388
21389 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21390 {
21391 colorAttachmentCount = colorAttachmentCount_;
21392 return *this;
21393 }
21394
21395 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21396 {
21397 pColorAttachments = pColorAttachments_;
21398 return *this;
21399 }
21400
21401 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21402 {
21403 pResolveAttachments = pResolveAttachments_;
21404 return *this;
21405 }
21406
21407 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21408 {
21409 pDepthStencilAttachment = pDepthStencilAttachment_;
21410 return *this;
21411 }
21412
21413 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21414 {
21415 preserveAttachmentCount = preserveAttachmentCount_;
21416 return *this;
21417 }
21418
21419 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21420 {
21421 pPreserveAttachments = pPreserveAttachments_;
21422 return *this;
21423 }
21424
21425 operator const VkSubpassDescription&() const
21426 {
21427 return *reinterpret_cast<const VkSubpassDescription*>(this);
21428 }
21429
21430 bool operator==( SubpassDescription const& rhs ) const
21431 {
21432 return ( flags == rhs.flags )
21433 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21434 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21435 && ( pInputAttachments == rhs.pInputAttachments )
21436 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21437 && ( pColorAttachments == rhs.pColorAttachments )
21438 && ( pResolveAttachments == rhs.pResolveAttachments )
21439 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21440 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21441 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21442 }
21443
21444 bool operator!=( SubpassDescription const& rhs ) const
21445 {
21446 return !operator==( rhs );
21447 }
21448
21449 SubpassDescriptionFlags flags;
21450 PipelineBindPoint pipelineBindPoint;
21451 uint32_t inputAttachmentCount;
21452 const AttachmentReference* pInputAttachments;
21453 uint32_t colorAttachmentCount;
21454 const AttachmentReference* pColorAttachments;
21455 const AttachmentReference* pResolveAttachments;
21456 const AttachmentReference* pDepthStencilAttachment;
21457 uint32_t preserveAttachmentCount;
21458 const uint32_t* pPreserveAttachments;
21459 };
21460 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21461
21462 struct RenderPassCreateInfo
21463 {
21464 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 )
21465 : sType( StructureType::eRenderPassCreateInfo )
21466 , pNext( nullptr )
21467 , flags( flags_ )
21468 , attachmentCount( attachmentCount_ )
21469 , pAttachments( pAttachments_ )
21470 , subpassCount( subpassCount_ )
21471 , pSubpasses( pSubpasses_ )
21472 , dependencyCount( dependencyCount_ )
21473 , pDependencies( pDependencies_ )
21474 {
21475 }
21476
21477 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21478 {
21479 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21480 }
21481
21482 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21483 {
21484 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21485 return *this;
21486 }
21487
21488 RenderPassCreateInfo& setPNext( const void* pNext_ )
21489 {
21490 pNext = pNext_;
21491 return *this;
21492 }
21493
21494 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21495 {
21496 flags = flags_;
21497 return *this;
21498 }
21499
21500 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21501 {
21502 attachmentCount = attachmentCount_;
21503 return *this;
21504 }
21505
21506 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21507 {
21508 pAttachments = pAttachments_;
21509 return *this;
21510 }
21511
21512 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21513 {
21514 subpassCount = subpassCount_;
21515 return *this;
21516 }
21517
21518 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21519 {
21520 pSubpasses = pSubpasses_;
21521 return *this;
21522 }
21523
21524 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21525 {
21526 dependencyCount = dependencyCount_;
21527 return *this;
21528 }
21529
21530 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21531 {
21532 pDependencies = pDependencies_;
21533 return *this;
21534 }
21535
21536 operator const VkRenderPassCreateInfo&() const
21537 {
21538 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21539 }
21540
21541 bool operator==( RenderPassCreateInfo const& rhs ) const
21542 {
21543 return ( sType == rhs.sType )
21544 && ( pNext == rhs.pNext )
21545 && ( flags == rhs.flags )
21546 && ( attachmentCount == rhs.attachmentCount )
21547 && ( pAttachments == rhs.pAttachments )
21548 && ( subpassCount == rhs.subpassCount )
21549 && ( pSubpasses == rhs.pSubpasses )
21550 && ( dependencyCount == rhs.dependencyCount )
21551 && ( pDependencies == rhs.pDependencies );
21552 }
21553
21554 bool operator!=( RenderPassCreateInfo const& rhs ) const
21555 {
21556 return !operator==( rhs );
21557 }
21558
21559 private:
21560 StructureType sType;
21561
21562 public:
21563 const void* pNext;
21564 RenderPassCreateFlags flags;
21565 uint32_t attachmentCount;
21566 const AttachmentDescription* pAttachments;
21567 uint32_t subpassCount;
21568 const SubpassDescription* pSubpasses;
21569 uint32_t dependencyCount;
21570 const SubpassDependency* pDependencies;
21571 };
21572 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21573
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021574 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21576 template <typename Allocator = std::allocator<LayerProperties>>
21577 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21579
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021580 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21581 {
21582 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21583 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021585 template <typename Allocator>
21586 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021587 {
21588 std::vector<LayerProperties,Allocator> properties;
21589 uint32_t propertyCount;
21590 Result result;
21591 do
21592 {
21593 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21594 if ( ( result == Result::eSuccess ) && propertyCount )
21595 {
21596 properties.resize( propertyCount );
21597 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21598 }
21599 } while ( result == Result::eIncomplete );
21600 assert( propertyCount <= properties.size() );
21601 properties.resize( propertyCount );
21602 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21603 }
21604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21605
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021606
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021607 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21609 template <typename Allocator = std::allocator<ExtensionProperties>>
21610 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21611#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021613 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21614 {
21615 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21616 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021617#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021618 template <typename Allocator>
21619 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021620 {
21621 std::vector<ExtensionProperties,Allocator> properties;
21622 uint32_t propertyCount;
21623 Result result;
21624 do
21625 {
21626 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21627 if ( ( result == Result::eSuccess ) && propertyCount )
21628 {
21629 properties.resize( propertyCount );
21630 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21631 }
21632 } while ( result == Result::eIncomplete );
21633 assert( propertyCount <= properties.size() );
21634 properties.resize( propertyCount );
21635 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21636 }
21637#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21638
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021640 // forward declarations
21641 struct CmdProcessCommandsInfoNVX;
21642
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021643 class CommandBuffer
21644 {
21645 public:
21646 CommandBuffer()
21647 : m_commandBuffer(VK_NULL_HANDLE)
21648 {}
21649
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021650 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021651 : m_commandBuffer(VK_NULL_HANDLE)
21652 {}
21653
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021654 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021655 : m_commandBuffer(commandBuffer)
21656 {}
21657
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021658#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021659 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
21660 {
21661 m_commandBuffer = commandBuffer;
21662 return *this;
21663 }
21664#endif
21665
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021666 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021667 {
21668 m_commandBuffer = VK_NULL_HANDLE;
21669 return *this;
21670 }
21671
Lenny Komowebf33162016-08-26 14:10:08 -060021672 bool operator==(CommandBuffer const &rhs) const
21673 {
21674 return m_commandBuffer == rhs.m_commandBuffer;
21675 }
21676
21677 bool operator!=(CommandBuffer const &rhs) const
21678 {
21679 return m_commandBuffer != rhs.m_commandBuffer;
21680 }
21681
21682 bool operator<(CommandBuffer const &rhs) const
21683 {
21684 return m_commandBuffer < rhs.m_commandBuffer;
21685 }
21686
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021687 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021689 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21691
21692#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021693 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021694#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021695 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21697
21698#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021699 Result reset( CommandBufferResetFlags flags ) const;
21700#else
21701 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21703
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021704 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021705
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021706 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021708 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021709#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21710
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021711 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021713 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21715
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021716 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021717
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021718 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
21719
21720 void setBlendConstants( const float blendConstants[4] ) const;
21721
21722 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
21723
21724 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
21725
21726 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
21727
21728 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
21729
21730 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 -060021731#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021732 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 -060021733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21734
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021735 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021736
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021737 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021739 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21741
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021742 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021743
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021744 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
21745
21746 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21747
21748 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21749
Mark Young0f183a82017-02-28 09:58:04 -070021750 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021751
21752 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
21753
21754 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021756 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21758
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021759 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021761 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21763
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021764 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 -060021765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021766 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21768
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021769 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021771 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21773
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021774 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021776 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021777#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21778
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021779 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21781 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021782 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21784
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021785 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021786
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021787 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021789 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21791
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021792 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021794 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21796
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021797 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021799 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021800#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21801
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021802 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021803#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021804 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021805#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21806
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021807 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021808
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021809 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
21810
21811 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 -060021812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021813 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 -060021814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21815
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021816 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 -060021817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021818 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 -060021819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21820
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021821 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021822
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021823 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021824
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021825 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021826
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021827 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021828
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021829 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 -060021830
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021831 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021832#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21833 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021834 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21836
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021837 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021838#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021839 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021840#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21841
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021842 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021843
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021844 void endRenderPass() const;
21845
21846 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021848 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21850
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021851 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021853 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021856 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021857
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021858 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021860 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21862
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021863 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021864
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021865 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
21866
21867 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021868#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021869 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021870#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21871
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021872 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021874 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21876
Mark Young0f183a82017-02-28 09:58:04 -070021877 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
21878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21879 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
21880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21881
21882 void setDeviceMaskKHX( uint32_t deviceMask ) const;
21883
21884 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
21885
21886 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
21887
21888 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
21889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21890 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
21891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21892
21893 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
21894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21895 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
21896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21897
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021898 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021899 {
21900 return m_commandBuffer;
21901 }
21902
21903 explicit operator bool() const
21904 {
21905 return m_commandBuffer != VK_NULL_HANDLE;
21906 }
21907
21908 bool operator!() const
21909 {
21910 return m_commandBuffer == VK_NULL_HANDLE;
21911 }
21912
21913 private:
21914 VkCommandBuffer m_commandBuffer;
21915 };
21916 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
21917
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021918 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
21919 {
21920 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
21921 }
21922#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21923 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
21924 {
21925 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
21926 return createResultValue( result, "vk::CommandBuffer::begin" );
21927 }
21928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21929
21930#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21931 VULKAN_HPP_INLINE Result CommandBuffer::end() const
21932 {
21933 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21934 }
21935#else
21936 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
21937 {
21938 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21939 return createResultValue( result, "vk::CommandBuffer::end" );
21940 }
21941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21942
21943#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21944 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
21945 {
21946 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21947 }
21948#else
21949 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
21950 {
21951 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21952 return createResultValue( result, "vk::CommandBuffer::reset" );
21953 }
21954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21955
21956 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
21957 {
21958 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
21959 }
21960
21961 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
21962 {
21963 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
21964 }
21965#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21966 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
21967 {
21968 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
21969 }
21970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21971
21972 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
21973 {
21974 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
21975 }
21976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21977 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
21978 {
21979 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
21980 }
21981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21982
21983 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
21984 {
21985 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
21986 }
21987
21988 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
21989 {
21990 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
21991 }
21992
21993 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
21994 {
21995 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
21996 }
21997
21998 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
21999 {
22000 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22001 }
22002
22003 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22004 {
22005 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22006 }
22007
22008 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22009 {
22010 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22011 }
22012
22013 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22014 {
22015 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22016 }
22017
22018 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
22019 {
22020 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22021 }
22022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22023 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22024 {
22025 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22026 }
22027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22028
22029 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22030 {
22031 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22032 }
22033
22034 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22035 {
22036 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22037 }
22038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22039 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22040 {
22041#ifdef VULKAN_HPP_NO_EXCEPTIONS
22042 assert( buffers.size() == offsets.size() );
22043#else
22044 if ( buffers.size() != offsets.size() )
22045 {
22046 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22047 }
22048#endif // VULKAN_HPP_NO_EXCEPTIONS
22049 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22050 }
22051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22052
22053 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22054 {
22055 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22056 }
22057
22058 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22059 {
22060 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22061 }
22062
22063 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22064 {
22065 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22066 }
22067
22068 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22069 {
22070 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22071 }
22072
Mark Young0f183a82017-02-28 09:58:04 -070022073 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022074 {
Mark Young0f183a82017-02-28 09:58:04 -070022075 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022076 }
22077
22078 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22079 {
22080 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22081 }
22082
22083 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22084 {
22085 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22086 }
22087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22088 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22089 {
22090 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22091 }
22092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22093
22094 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22095 {
22096 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 ) );
22097 }
22098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22099 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22100 {
22101 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() ) );
22102 }
22103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22104
22105 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22106 {
22107 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 ) );
22108 }
22109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22110 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22111 {
22112 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 ) );
22113 }
22114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22115
22116 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22117 {
22118 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22119 }
22120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22121 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22122 {
22123 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22124 }
22125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22126
22127 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22128 {
22129 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22130 }
22131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22132 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22133 {
22134 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22135 }
22136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22137
22138 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22139 {
22140 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22141 }
22142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22143 template <typename T>
22144 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22145 {
22146 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22147 }
22148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22149
22150 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22151 {
22152 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22153 }
22154
22155 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22156 {
22157 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22158 }
22159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22160 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22161 {
22162 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22163 }
22164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22165
22166 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22167 {
22168 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22169 }
22170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22171 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22172 {
22173 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22174 }
22175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22176
22177 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22178 {
22179 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22180 }
22181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22182 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22183 {
22184 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22185 }
22186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22187
22188 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22189 {
22190 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 ) );
22191 }
22192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22193 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22194 {
22195 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() ) );
22196 }
22197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22198
22199 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22200 {
22201 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22202 }
22203
22204 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22205 {
22206 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22207 }
22208
22209 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
22210 {
22211 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 ) );
22212 }
22213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22214 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
22215 {
22216 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() ) );
22217 }
22218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22219
22220 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
22221 {
22222 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 ) );
22223 }
22224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22225 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
22226 {
22227 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() ) );
22228 }
22229#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22230
22231 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22232 {
22233 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22234 }
22235
22236 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22237 {
22238 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22239 }
22240
22241 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22242 {
22243 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22244 }
22245
22246 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22247 {
22248 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22249 }
22250
22251 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22252 {
22253 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22254 }
22255
22256 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22257 {
22258 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22259 }
22260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22261 template <typename T>
22262 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22263 {
22264 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22265 }
22266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22267
22268 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22269 {
22270 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22271 }
22272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22273 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22274 {
22275 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22276 }
22277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22278
22279 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22280 {
22281 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22282 }
22283
22284 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22285 {
22286 vkCmdEndRenderPass( m_commandBuffer );
22287 }
22288
22289 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22290 {
22291 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22292 }
22293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22294 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22295 {
22296 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22297 }
22298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22299
22300 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22301 {
22302 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22303 }
22304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22305 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22306 {
22307 DebugMarkerMarkerInfoEXT markerInfo;
22308 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22309 return markerInfo;
22310 }
22311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22312
22313 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22314 {
22315 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22316 }
22317
22318 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22319 {
22320 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22321 }
22322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22323 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22324 {
22325 DebugMarkerMarkerInfoEXT markerInfo;
22326 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22327 return markerInfo;
22328 }
22329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22330
22331 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22332 {
22333 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22334 }
22335
22336 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22337 {
22338 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22339 }
22340
22341 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22342 {
22343 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22344 }
22345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22346 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22347 {
22348 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22349 }
22350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22351
22352 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22353 {
22354 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22355 }
22356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22357 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22358 {
22359 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22360 }
22361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022362
22363 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22364 {
22365 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22366 }
22367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22368 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22369 {
22370 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22371 }
22372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22373
22374 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22375 {
22376 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22377 }
22378
22379 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
22380 {
22381 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22382 }
22383
22384 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22385 {
22386 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22387 }
22388
22389 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22390 {
22391 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22392 }
22393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22394 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22395 {
22396 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22397 }
22398#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22399
22400 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22401 {
22402 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22403 }
22404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22405 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22406 {
22407 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22408 }
22409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022410
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022411 struct SubmitInfo
22412 {
22413 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 )
22414 : sType( StructureType::eSubmitInfo )
22415 , pNext( nullptr )
22416 , waitSemaphoreCount( waitSemaphoreCount_ )
22417 , pWaitSemaphores( pWaitSemaphores_ )
22418 , pWaitDstStageMask( pWaitDstStageMask_ )
22419 , commandBufferCount( commandBufferCount_ )
22420 , pCommandBuffers( pCommandBuffers_ )
22421 , signalSemaphoreCount( signalSemaphoreCount_ )
22422 , pSignalSemaphores( pSignalSemaphores_ )
22423 {
22424 }
22425
22426 SubmitInfo( VkSubmitInfo const & rhs )
22427 {
22428 memcpy( this, &rhs, sizeof(SubmitInfo) );
22429 }
22430
22431 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22432 {
22433 memcpy( this, &rhs, sizeof(SubmitInfo) );
22434 return *this;
22435 }
22436
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022437 SubmitInfo& setPNext( const void* pNext_ )
22438 {
22439 pNext = pNext_;
22440 return *this;
22441 }
22442
22443 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22444 {
22445 waitSemaphoreCount = waitSemaphoreCount_;
22446 return *this;
22447 }
22448
22449 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22450 {
22451 pWaitSemaphores = pWaitSemaphores_;
22452 return *this;
22453 }
22454
22455 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22456 {
22457 pWaitDstStageMask = pWaitDstStageMask_;
22458 return *this;
22459 }
22460
22461 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22462 {
22463 commandBufferCount = commandBufferCount_;
22464 return *this;
22465 }
22466
22467 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22468 {
22469 pCommandBuffers = pCommandBuffers_;
22470 return *this;
22471 }
22472
22473 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22474 {
22475 signalSemaphoreCount = signalSemaphoreCount_;
22476 return *this;
22477 }
22478
22479 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22480 {
22481 pSignalSemaphores = pSignalSemaphores_;
22482 return *this;
22483 }
22484
22485 operator const VkSubmitInfo&() const
22486 {
22487 return *reinterpret_cast<const VkSubmitInfo*>(this);
22488 }
22489
22490 bool operator==( SubmitInfo const& rhs ) const
22491 {
22492 return ( sType == rhs.sType )
22493 && ( pNext == rhs.pNext )
22494 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22495 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22496 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22497 && ( commandBufferCount == rhs.commandBufferCount )
22498 && ( pCommandBuffers == rhs.pCommandBuffers )
22499 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22500 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22501 }
22502
22503 bool operator!=( SubmitInfo const& rhs ) const
22504 {
22505 return !operator==( rhs );
22506 }
22507
22508 private:
22509 StructureType sType;
22510
22511 public:
22512 const void* pNext;
22513 uint32_t waitSemaphoreCount;
22514 const Semaphore* pWaitSemaphores;
22515 const PipelineStageFlags* pWaitDstStageMask;
22516 uint32_t commandBufferCount;
22517 const CommandBuffer* pCommandBuffers;
22518 uint32_t signalSemaphoreCount;
22519 const Semaphore* pSignalSemaphores;
22520 };
22521 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22522
22523 class Queue
22524 {
22525 public:
22526 Queue()
22527 : m_queue(VK_NULL_HANDLE)
22528 {}
22529
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022530 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022531 : m_queue(VK_NULL_HANDLE)
22532 {}
22533
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022534 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022535 : m_queue(queue)
22536 {}
22537
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022538#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022539 Queue& operator=(VkQueue queue)
22540 {
22541 m_queue = queue;
22542 return *this;
22543 }
22544#endif
22545
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022546 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022547 {
22548 m_queue = VK_NULL_HANDLE;
22549 return *this;
22550 }
22551
Lenny Komowebf33162016-08-26 14:10:08 -060022552 bool operator==(Queue const &rhs) const
22553 {
22554 return m_queue == rhs.m_queue;
22555 }
22556
22557 bool operator!=(Queue const &rhs) const
22558 {
22559 return m_queue != rhs.m_queue;
22560 }
22561
22562 bool operator<(Queue const &rhs) const
22563 {
22564 return m_queue < rhs.m_queue;
22565 }
22566
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022567 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022569 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22571
22572#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022573 Result waitIdle() const;
22574#else
22575 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022576#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22577
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022578 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022580 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22582
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022583 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022585 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22587
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022588 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022589 {
22590 return m_queue;
22591 }
22592
22593 explicit operator bool() const
22594 {
22595 return m_queue != VK_NULL_HANDLE;
22596 }
22597
22598 bool operator!() const
22599 {
22600 return m_queue == VK_NULL_HANDLE;
22601 }
22602
22603 private:
22604 VkQueue m_queue;
22605 };
22606 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22607
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022608 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22609 {
22610 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22611 }
22612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22613 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22614 {
22615 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22616 return createResultValue( result, "vk::Queue::submit" );
22617 }
22618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22619
22620#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22621 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22622 {
22623 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22624 }
22625#else
22626 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22627 {
22628 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22629 return createResultValue( result, "vk::Queue::waitIdle" );
22630 }
22631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22632
22633 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22634 {
22635 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22636 }
22637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22638 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22639 {
22640 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22641 return createResultValue( result, "vk::Queue::bindSparse" );
22642 }
22643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22644
22645 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22646 {
22647 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22648 }
22649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22650 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22651 {
22652 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22653 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22654 }
22655#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022656
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022657#ifndef VULKAN_HPP_NO_SMART_HANDLE
22658 class BufferDeleter;
22659 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22660 class BufferViewDeleter;
22661 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22662 class CommandBufferDeleter;
22663 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22664 class CommandPoolDeleter;
22665 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22666 class DescriptorPoolDeleter;
22667 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22668 class DescriptorSetDeleter;
22669 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22670 class DescriptorSetLayoutDeleter;
22671 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022672 class DescriptorUpdateTemplateKHRDeleter;
22673 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022674 class DeviceMemoryDeleter;
22675 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
22676 class EventDeleter;
22677 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
22678 class FenceDeleter;
22679 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
22680 class FramebufferDeleter;
22681 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
22682 class ImageDeleter;
22683 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
22684 class ImageViewDeleter;
22685 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
22686 class IndirectCommandsLayoutNVXDeleter;
22687 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
22688 class ObjectTableNVXDeleter;
22689 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
22690 class PipelineDeleter;
22691 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
22692 class PipelineCacheDeleter;
22693 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
22694 class PipelineLayoutDeleter;
22695 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
22696 class QueryPoolDeleter;
22697 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
22698 class RenderPassDeleter;
22699 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
22700 class SamplerDeleter;
22701 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
22702 class SemaphoreDeleter;
22703 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
22704 class ShaderModuleDeleter;
22705 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
22706 class SwapchainKHRDeleter;
22707 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
22708#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22709
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022710 class Device
22711 {
22712 public:
22713 Device()
22714 : m_device(VK_NULL_HANDLE)
22715 {}
22716
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022717 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022718 : m_device(VK_NULL_HANDLE)
22719 {}
22720
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022721 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022722 : m_device(device)
22723 {}
22724
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022725#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022726 Device& operator=(VkDevice device)
22727 {
22728 m_device = device;
22729 return *this;
22730 }
22731#endif
22732
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022733 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022734 {
22735 m_device = VK_NULL_HANDLE;
22736 return *this;
22737 }
22738
Lenny Komowebf33162016-08-26 14:10:08 -060022739 bool operator==(Device const &rhs) const
22740 {
22741 return m_device == rhs.m_device;
22742 }
22743
22744 bool operator!=(Device const &rhs) const
22745 {
22746 return m_device != rhs.m_device;
22747 }
22748
22749 bool operator<(Device const &rhs) const
22750 {
22751 return m_device < rhs.m_device;
22752 }
22753
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022754 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022756 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22758
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022759 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022761 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22763
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022764 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022766 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22768
22769#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022770 Result waitIdle() const;
22771#else
22772 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22774
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022775 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022777 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22778#ifndef VULKAN_HPP_NO_SMART_HANDLE
22779 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22780#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22782
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022783 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022785 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22787
22788 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
22789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22790 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
22791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22792
22793 void unmapMemory( DeviceMemory memory ) const;
22794
22795 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22797 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22799
22800 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22802 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22804
22805 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
22806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22807 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
22808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22809
22810 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
22811#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22812 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22814
22815#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022816 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22817#else
22818 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022820
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022821 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022823 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22825
22826#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022827 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
22828#else
22829 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22831
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022832 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022834 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
22835 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22837
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022838 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022839#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022840 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22841#ifndef VULKAN_HPP_NO_SMART_HANDLE
22842 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22843#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022844#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22845
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022846 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022848 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22850
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022851 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022853 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022856 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022857
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022858 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022860 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
22861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22862
22863 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
22864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22865 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22866#ifndef VULKAN_HPP_NO_SMART_HANDLE
22867 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22868#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22870
22871 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
22872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22873 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22875
22876 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
22877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22878 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22879#ifndef VULKAN_HPP_NO_SMART_HANDLE
22880 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22881#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22883
22884 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
22885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22886 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22888
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022889 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022890
22891#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022892 Result setEvent( Event event ) const;
22893#else
22894 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022895#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22896
22897#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022898 Result resetEvent( Event event ) const;
22899#else
22900 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022901#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22902
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022903 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022904#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022905 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22906#ifndef VULKAN_HPP_NO_SMART_HANDLE
22907 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22908#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22910
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022911 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022913 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022914#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22915
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022916 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 -060022917#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22918 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022919 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 -060022920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22921
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022922 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022924 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22925#ifndef VULKAN_HPP_NO_SMART_HANDLE
22926 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22927#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22929
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022930 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022931#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022932 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22934
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022935 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022937 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22938#ifndef VULKAN_HPP_NO_SMART_HANDLE
22939 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22940#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22942
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022943 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022945 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22947
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022948 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022950 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22951#ifndef VULKAN_HPP_NO_SMART_HANDLE
22952 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22953#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22955
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022956 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022958 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22960
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022961 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022963 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022966 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022968 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22969#ifndef VULKAN_HPP_NO_SMART_HANDLE
22970 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22971#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022974 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022976 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022979 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022981 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22982#ifndef VULKAN_HPP_NO_SMART_HANDLE
22983 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22984#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022987 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022989 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22991
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022992 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022994 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22995#ifndef VULKAN_HPP_NO_SMART_HANDLE
22996 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22997#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22999
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023000 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023002 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023005 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023007 template <typename Allocator = std::allocator<uint8_t>>
23008 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23010
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023011 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023013 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23015
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023016 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023017#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023018 template <typename Allocator = std::allocator<Pipeline>>
23019 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23020 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23021#ifndef VULKAN_HPP_NO_SMART_HANDLE
23022 template <typename Allocator = std::allocator<Pipeline>>
23023 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23024 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23025#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023028 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023030 template <typename Allocator = std::allocator<Pipeline>>
23031 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23032 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23033#ifndef VULKAN_HPP_NO_SMART_HANDLE
23034 template <typename Allocator = std::allocator<Pipeline>>
23035 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23036 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23037#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023040 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023042 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23044
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023045 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023047 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23048#ifndef VULKAN_HPP_NO_SMART_HANDLE
23049 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23050#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23052
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023053 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023055 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023058 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023060 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23061#ifndef VULKAN_HPP_NO_SMART_HANDLE
23062 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23063#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023066 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023068 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23070
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023071 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023073 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23074#ifndef VULKAN_HPP_NO_SMART_HANDLE
23075 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23076#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23078
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023079 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023081 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23083
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023084 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023086 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23087#ifndef VULKAN_HPP_NO_SMART_HANDLE
23088 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23089#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23091
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023092 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023094 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23096
23097#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023098 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23099#else
23100 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023103 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023105 template <typename Allocator = std::allocator<DescriptorSet>>
23106 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23107#ifndef VULKAN_HPP_NO_SMART_HANDLE
23108 template <typename Allocator = std::allocator<DescriptorSet>>
23109 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23110#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23112
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023113 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023115 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23117
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023118 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023120 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23122
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023123 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023125 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23126#ifndef VULKAN_HPP_NO_SMART_HANDLE
23127 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23130
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023131 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023133 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023136 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023138 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23139#ifndef VULKAN_HPP_NO_SMART_HANDLE
23140 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23141#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23143
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023144 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023145#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023146 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023149 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023151 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23153
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023154 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023156 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23157#ifndef VULKAN_HPP_NO_SMART_HANDLE
23158 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23161
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023162 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023164 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23166
23167#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023168 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23169#else
23170 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023173 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023175 template <typename Allocator = std::allocator<CommandBuffer>>
23176 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23177#ifndef VULKAN_HPP_NO_SMART_HANDLE
23178 template <typename Allocator = std::allocator<CommandBuffer>>
23179 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23180#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23182
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023183 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023185 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23187
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023188 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023190 template <typename Allocator = std::allocator<SwapchainKHR>>
23191 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23192 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23193#ifndef VULKAN_HPP_NO_SMART_HANDLE
23194 template <typename Allocator = std::allocator<SwapchainKHR>>
23195 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23196 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23197#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23199
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023200 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023202 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23203#ifndef VULKAN_HPP_NO_SMART_HANDLE
23204 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23205#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023208 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023210 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23212
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023213 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023215 template <typename Allocator = std::allocator<Image>>
23216 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23218
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023219 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023221 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023224 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023226 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23228
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023229 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023231 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023232#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23233
Lenny Komow6501c122016-08-31 15:03:49 -060023234#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023235 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23237 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023239#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23240
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023241 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023243 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23244#ifndef VULKAN_HPP_NO_SMART_HANDLE
23245 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23246#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23248
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023249 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023251 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023252#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23253
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023254 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023256 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23257#ifndef VULKAN_HPP_NO_SMART_HANDLE
23258 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23259#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23261
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023262 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023264 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23266
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023267 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023269 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023272 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023274 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23276
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023277#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023278 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023279#else
23280 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023282
Mark Young0f183a82017-02-28 09:58:04 -070023283#ifdef VK_USE_PLATFORM_WIN32_KHR
23284 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23286 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23288#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23289
23290#ifdef VK_USE_PLATFORM_WIN32_KHR
23291 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23292#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23293 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23295#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23296
23297 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23299 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23301
23302 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23304 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23306
23307#ifdef VK_USE_PLATFORM_WIN32_KHX
23308 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23310 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23312#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23313
23314#ifdef VK_USE_PLATFORM_WIN32_KHX
23315 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23317 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23319#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23320
23321 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23323 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23325
23326 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23328 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23330
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023331 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023333 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23335
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023336 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023338 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23340
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023341 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023343 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23345
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023346 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023348 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23350
Mark Young0f183a82017-02-28 09:58:04 -070023351 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23353 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23355
23356 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23358 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23360
23361 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23362#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23363 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23365
23366 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23368 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23370
23371 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23373 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23374#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23375
23376 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23378 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23380
23381 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23382#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23383 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23384#ifndef VULKAN_HPP_NO_SMART_HANDLE
23385 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23386#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23388
23389 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23391 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23392#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23393
23394 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23395
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023396 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23398 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23400
23401 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23403 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23405
23406 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23408 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23409 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23411
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023412 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023413 {
23414 return m_device;
23415 }
23416
23417 explicit operator bool() const
23418 {
23419 return m_device != VK_NULL_HANDLE;
23420 }
23421
23422 bool operator!() const
23423 {
23424 return m_device == VK_NULL_HANDLE;
23425 }
23426
23427 private:
23428 VkDevice m_device;
23429 };
23430 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23431
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023432#ifndef VULKAN_HPP_NO_SMART_HANDLE
23433 class BufferDeleter
23434 {
23435 public:
23436 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23437 : m_device( device )
23438 , m_allocator( allocator )
23439 {}
23440
23441 void operator()( Buffer buffer )
23442 {
23443 m_device.destroyBuffer( buffer, m_allocator );
23444 }
23445
23446 private:
23447 Device m_device;
23448 Optional<const AllocationCallbacks> m_allocator;
23449 };
23450
23451 class BufferViewDeleter
23452 {
23453 public:
23454 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23455 : m_device( device )
23456 , m_allocator( allocator )
23457 {}
23458
23459 void operator()( BufferView bufferView )
23460 {
23461 m_device.destroyBufferView( bufferView, m_allocator );
23462 }
23463
23464 private:
23465 Device m_device;
23466 Optional<const AllocationCallbacks> m_allocator;
23467 };
23468
23469 class CommandBufferDeleter
23470 {
23471 public:
23472 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23473 : m_device( device )
23474 , m_commandPool( commandPool )
23475 {}
23476
23477 void operator()( CommandBuffer commandBuffer )
23478 {
23479 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23480 }
23481
23482 private:
23483 Device m_device;
23484 CommandPool m_commandPool;
23485 };
23486
23487 class CommandPoolDeleter
23488 {
23489 public:
23490 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23491 : m_device( device )
23492 , m_allocator( allocator )
23493 {}
23494
23495 void operator()( CommandPool commandPool )
23496 {
23497 m_device.destroyCommandPool( commandPool, m_allocator );
23498 }
23499
23500 private:
23501 Device m_device;
23502 Optional<const AllocationCallbacks> m_allocator;
23503 };
23504
23505 class DescriptorPoolDeleter
23506 {
23507 public:
23508 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23509 : m_device( device )
23510 , m_allocator( allocator )
23511 {}
23512
23513 void operator()( DescriptorPool descriptorPool )
23514 {
23515 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23516 }
23517
23518 private:
23519 Device m_device;
23520 Optional<const AllocationCallbacks> m_allocator;
23521 };
23522
23523 class DescriptorSetDeleter
23524 {
23525 public:
23526 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23527 : m_device( device )
23528 , m_descriptorPool( descriptorPool )
23529 {}
23530
23531 void operator()( DescriptorSet descriptorSet )
23532 {
23533 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23534 }
23535
23536 private:
23537 Device m_device;
23538 DescriptorPool m_descriptorPool;
23539 };
23540
23541 class DescriptorSetLayoutDeleter
23542 {
23543 public:
23544 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23545 : m_device( device )
23546 , m_allocator( allocator )
23547 {}
23548
23549 void operator()( DescriptorSetLayout descriptorSetLayout )
23550 {
23551 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23552 }
23553
23554 private:
23555 Device m_device;
23556 Optional<const AllocationCallbacks> m_allocator;
23557 };
23558
Mark Young0f183a82017-02-28 09:58:04 -070023559 class DescriptorUpdateTemplateKHRDeleter
23560 {
23561 public:
23562 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23563 : m_device( device )
23564 , m_allocator( allocator )
23565 {}
23566
23567 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23568 {
23569 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23570 }
23571
23572 private:
23573 Device m_device;
23574 Optional<const AllocationCallbacks> m_allocator;
23575 };
23576
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023577 class DeviceMemoryDeleter
23578 {
23579 public:
23580 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23581 : m_device( device )
23582 , m_allocator( allocator )
23583 {}
23584
23585 void operator()( DeviceMemory deviceMemory )
23586 {
23587 m_device.freeMemory( deviceMemory, m_allocator );
23588 }
23589
23590 private:
23591 Device m_device;
23592 Optional<const AllocationCallbacks> m_allocator;
23593 };
23594
23595 class EventDeleter
23596 {
23597 public:
23598 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23599 : m_device( device )
23600 , m_allocator( allocator )
23601 {}
23602
23603 void operator()( Event event )
23604 {
23605 m_device.destroyEvent( event, m_allocator );
23606 }
23607
23608 private:
23609 Device m_device;
23610 Optional<const AllocationCallbacks> m_allocator;
23611 };
23612
23613 class FenceDeleter
23614 {
23615 public:
23616 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23617 : m_device( device )
23618 , m_allocator( allocator )
23619 {}
23620
23621 void operator()( Fence fence )
23622 {
23623 m_device.destroyFence( fence, m_allocator );
23624 }
23625
23626 private:
23627 Device m_device;
23628 Optional<const AllocationCallbacks> m_allocator;
23629 };
23630
23631 class FramebufferDeleter
23632 {
23633 public:
23634 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23635 : m_device( device )
23636 , m_allocator( allocator )
23637 {}
23638
23639 void operator()( Framebuffer framebuffer )
23640 {
23641 m_device.destroyFramebuffer( framebuffer, m_allocator );
23642 }
23643
23644 private:
23645 Device m_device;
23646 Optional<const AllocationCallbacks> m_allocator;
23647 };
23648
23649 class ImageDeleter
23650 {
23651 public:
23652 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23653 : m_device( device )
23654 , m_allocator( allocator )
23655 {}
23656
23657 void operator()( Image image )
23658 {
23659 m_device.destroyImage( image, m_allocator );
23660 }
23661
23662 private:
23663 Device m_device;
23664 Optional<const AllocationCallbacks> m_allocator;
23665 };
23666
23667 class ImageViewDeleter
23668 {
23669 public:
23670 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23671 : m_device( device )
23672 , m_allocator( allocator )
23673 {}
23674
23675 void operator()( ImageView imageView )
23676 {
23677 m_device.destroyImageView( imageView, m_allocator );
23678 }
23679
23680 private:
23681 Device m_device;
23682 Optional<const AllocationCallbacks> m_allocator;
23683 };
23684
23685 class IndirectCommandsLayoutNVXDeleter
23686 {
23687 public:
23688 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23689 : m_device( device )
23690 , m_allocator( allocator )
23691 {}
23692
23693 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
23694 {
23695 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
23696 }
23697
23698 private:
23699 Device m_device;
23700 Optional<const AllocationCallbacks> m_allocator;
23701 };
23702
23703 class ObjectTableNVXDeleter
23704 {
23705 public:
23706 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23707 : m_device( device )
23708 , m_allocator( allocator )
23709 {}
23710
23711 void operator()( ObjectTableNVX objectTableNVX )
23712 {
23713 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
23714 }
23715
23716 private:
23717 Device m_device;
23718 Optional<const AllocationCallbacks> m_allocator;
23719 };
23720
23721 class PipelineDeleter
23722 {
23723 public:
23724 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23725 : m_device( device )
23726 , m_allocator( allocator )
23727 {}
23728
23729 void operator()( Pipeline pipeline )
23730 {
23731 m_device.destroyPipeline( pipeline, m_allocator );
23732 }
23733
23734 private:
23735 Device m_device;
23736 Optional<const AllocationCallbacks> m_allocator;
23737 };
23738
23739 class PipelineCacheDeleter
23740 {
23741 public:
23742 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23743 : m_device( device )
23744 , m_allocator( allocator )
23745 {}
23746
23747 void operator()( PipelineCache pipelineCache )
23748 {
23749 m_device.destroyPipelineCache( pipelineCache, m_allocator );
23750 }
23751
23752 private:
23753 Device m_device;
23754 Optional<const AllocationCallbacks> m_allocator;
23755 };
23756
23757 class PipelineLayoutDeleter
23758 {
23759 public:
23760 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23761 : m_device( device )
23762 , m_allocator( allocator )
23763 {}
23764
23765 void operator()( PipelineLayout pipelineLayout )
23766 {
23767 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
23768 }
23769
23770 private:
23771 Device m_device;
23772 Optional<const AllocationCallbacks> m_allocator;
23773 };
23774
23775 class QueryPoolDeleter
23776 {
23777 public:
23778 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23779 : m_device( device )
23780 , m_allocator( allocator )
23781 {}
23782
23783 void operator()( QueryPool queryPool )
23784 {
23785 m_device.destroyQueryPool( queryPool, m_allocator );
23786 }
23787
23788 private:
23789 Device m_device;
23790 Optional<const AllocationCallbacks> m_allocator;
23791 };
23792
23793 class RenderPassDeleter
23794 {
23795 public:
23796 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23797 : m_device( device )
23798 , m_allocator( allocator )
23799 {}
23800
23801 void operator()( RenderPass renderPass )
23802 {
23803 m_device.destroyRenderPass( renderPass, m_allocator );
23804 }
23805
23806 private:
23807 Device m_device;
23808 Optional<const AllocationCallbacks> m_allocator;
23809 };
23810
23811 class SamplerDeleter
23812 {
23813 public:
23814 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23815 : m_device( device )
23816 , m_allocator( allocator )
23817 {}
23818
23819 void operator()( Sampler sampler )
23820 {
23821 m_device.destroySampler( sampler, m_allocator );
23822 }
23823
23824 private:
23825 Device m_device;
23826 Optional<const AllocationCallbacks> m_allocator;
23827 };
23828
23829 class SemaphoreDeleter
23830 {
23831 public:
23832 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23833 : m_device( device )
23834 , m_allocator( allocator )
23835 {}
23836
23837 void operator()( Semaphore semaphore )
23838 {
23839 m_device.destroySemaphore( semaphore, m_allocator );
23840 }
23841
23842 private:
23843 Device m_device;
23844 Optional<const AllocationCallbacks> m_allocator;
23845 };
23846
23847 class ShaderModuleDeleter
23848 {
23849 public:
23850 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23851 : m_device( device )
23852 , m_allocator( allocator )
23853 {}
23854
23855 void operator()( ShaderModule shaderModule )
23856 {
23857 m_device.destroyShaderModule( shaderModule, m_allocator );
23858 }
23859
23860 private:
23861 Device m_device;
23862 Optional<const AllocationCallbacks> m_allocator;
23863 };
23864
23865 class SwapchainKHRDeleter
23866 {
23867 public:
23868 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23869 : m_device( device )
23870 , m_allocator( allocator )
23871 {}
23872
23873 void operator()( SwapchainKHR swapchainKHR )
23874 {
23875 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
23876 }
23877
23878 private:
23879 Device m_device;
23880 Optional<const AllocationCallbacks> m_allocator;
23881 };
23882#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23883
23884 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
23885 {
23886 return vkGetDeviceProcAddr( m_device, pName );
23887 }
23888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23889 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
23890 {
23891 return vkGetDeviceProcAddr( m_device, name.c_str() );
23892 }
23893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23894
23895 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
23896 {
23897 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23898 }
23899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23900 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
23901 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023902 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023903 }
23904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23905
23906 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
23907 {
23908 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
23909 }
23910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23911 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
23912 {
23913 Queue queue;
23914 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
23915 return queue;
23916 }
23917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23918
23919#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
23920 VULKAN_HPP_INLINE Result Device::waitIdle() const
23921 {
23922 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23923 }
23924#else
23925 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
23926 {
23927 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23928 return createResultValue( result, "vk::Device::waitIdle" );
23929 }
23930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23931
23932 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
23933 {
23934 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
23935 }
23936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23937 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23938 {
23939 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023940 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 -070023941 return createResultValue( result, memory, "vk::Device::allocateMemory" );
23942 }
23943#ifndef VULKAN_HPP_NO_SMART_HANDLE
23944 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23945 {
23946 DeviceMemoryDeleter deleter( *this, allocator );
23947 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
23948 }
23949#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23951
23952 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
23953 {
23954 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23955 }
23956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23957 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
23958 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023959 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023960 }
23961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23962
23963 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
23964 {
23965 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
23966 }
23967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23968 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
23969 {
23970 void* pData;
23971 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
23972 return createResultValue( result, pData, "vk::Device::mapMemory" );
23973 }
23974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23975
23976 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
23977 {
23978 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
23979 }
23980
23981 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23982 {
23983 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23984 }
23985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23986 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23987 {
23988 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
23989 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
23990 }
23991#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23992
23993 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23994 {
23995 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23996 }
23997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23998 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23999 {
24000 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24001 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24002 }
24003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24004
24005 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24006 {
24007 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24008 }
24009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24010 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24011 {
24012 DeviceSize committedMemoryInBytes;
24013 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24014 return committedMemoryInBytes;
24015 }
24016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24017
24018 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24019 {
24020 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24021 }
24022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24023 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24024 {
24025 MemoryRequirements memoryRequirements;
24026 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24027 return memoryRequirements;
24028 }
24029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24030
24031#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24032 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24033 {
24034 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24035 }
24036#else
24037 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24038 {
24039 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24040 return createResultValue( result, "vk::Device::bindBufferMemory" );
24041 }
24042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24043
24044 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24045 {
24046 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24047 }
24048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24049 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24050 {
24051 MemoryRequirements memoryRequirements;
24052 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24053 return memoryRequirements;
24054 }
24055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24056
24057#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24058 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24059 {
24060 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24061 }
24062#else
24063 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24064 {
24065 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24066 return createResultValue( result, "vk::Device::bindImageMemory" );
24067 }
24068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24069
24070 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24071 {
24072 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24073 }
24074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24075 template <typename Allocator>
24076 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24077 {
24078 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24079 uint32_t sparseMemoryRequirementCount;
24080 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24081 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24082 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24083 return sparseMemoryRequirements;
24084 }
24085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24086
24087 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24088 {
24089 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24090 }
24091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24092 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24093 {
24094 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024095 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 -070024096 return createResultValue( result, fence, "vk::Device::createFence" );
24097 }
24098#ifndef VULKAN_HPP_NO_SMART_HANDLE
24099 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24100 {
24101 FenceDeleter deleter( *this, allocator );
24102 return UniqueFence( createFence( createInfo, allocator ), deleter );
24103 }
24104#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24106
24107 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24108 {
24109 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24110 }
24111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24112 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24113 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024114 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024115 }
24116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24117
24118 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24119 {
24120 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24121 }
24122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24123 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24124 {
24125 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24126 return createResultValue( result, "vk::Device::resetFences" );
24127 }
24128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24129
24130#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24131 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24132 {
24133 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24134 }
24135#else
24136 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24137 {
24138 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24139 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24140 }
24141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24142
24143 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24144 {
24145 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24146 }
24147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24148 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24149 {
24150 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24151 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24152 }
24153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24154
24155 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24156 {
24157 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24158 }
24159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24160 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24161 {
24162 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024163 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 -070024164 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24165 }
24166#ifndef VULKAN_HPP_NO_SMART_HANDLE
24167 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24168 {
24169 SemaphoreDeleter deleter( *this, allocator );
24170 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24171 }
24172#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24174
24175 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24176 {
24177 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24178 }
24179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24180 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24181 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024182 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024183 }
24184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24185
24186 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24187 {
24188 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24189 }
24190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24191 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24192 {
24193 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024194 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 -070024195 return createResultValue( result, event, "vk::Device::createEvent" );
24196 }
24197#ifndef VULKAN_HPP_NO_SMART_HANDLE
24198 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24199 {
24200 EventDeleter deleter( *this, allocator );
24201 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24202 }
24203#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24205
24206 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24207 {
24208 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24209 }
24210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24211 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24212 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024213 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024214 }
24215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24216
24217#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24218 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24219 {
24220 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24221 }
24222#else
24223 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24224 {
24225 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24226 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24227 }
24228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24229
24230#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24231 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24232 {
24233 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24234 }
24235#else
24236 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24237 {
24238 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24239 return createResultValue( result, "vk::Device::setEvent" );
24240 }
24241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24242
24243#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24244 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24245 {
24246 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24247 }
24248#else
24249 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24250 {
24251 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24252 return createResultValue( result, "vk::Device::resetEvent" );
24253 }
24254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24255
24256 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24257 {
24258 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24259 }
24260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24261 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24262 {
24263 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024264 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 -070024265 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24266 }
24267#ifndef VULKAN_HPP_NO_SMART_HANDLE
24268 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24269 {
24270 QueryPoolDeleter deleter( *this, allocator );
24271 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24272 }
24273#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24275
24276 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24277 {
24278 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24279 }
24280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24281 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24282 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024283 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024284 }
24285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24286
24287 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24288 {
24289 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24290 }
24291#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24292 template <typename T>
24293 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24294 {
24295 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 ) ) );
24296 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24297 }
24298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24299
24300 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24301 {
24302 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24303 }
24304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24305 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24306 {
24307 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024308 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 -070024309 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24310 }
24311#ifndef VULKAN_HPP_NO_SMART_HANDLE
24312 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24313 {
24314 BufferDeleter deleter( *this, allocator );
24315 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24316 }
24317#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24319
24320 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24321 {
24322 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24323 }
24324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24325 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24326 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024327 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), 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::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24332 {
24333 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24334 }
24335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24336 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24337 {
24338 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024339 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 -070024340 return createResultValue( result, view, "vk::Device::createBufferView" );
24341 }
24342#ifndef VULKAN_HPP_NO_SMART_HANDLE
24343 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24344 {
24345 BufferViewDeleter deleter( *this, allocator );
24346 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24347 }
24348#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24350
24351 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24352 {
24353 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24354 }
24355#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24356 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24357 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024358 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024359 }
24360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24361
24362 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24363 {
24364 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24365 }
24366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24367 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24368 {
24369 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024370 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 -070024371 return createResultValue( result, image, "vk::Device::createImage" );
24372 }
24373#ifndef VULKAN_HPP_NO_SMART_HANDLE
24374 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24375 {
24376 ImageDeleter deleter( *this, allocator );
24377 return UniqueImage( createImage( createInfo, allocator ), deleter );
24378 }
24379#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24381
24382 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24383 {
24384 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24385 }
24386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24387 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24388 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024389 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024390 }
24391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24392
24393 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24394 {
24395 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24396 }
24397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24398 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24399 {
24400 SubresourceLayout layout;
24401 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24402 return layout;
24403 }
24404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24405
24406 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24407 {
24408 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24409 }
24410#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24411 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24412 {
24413 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024414 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 -070024415 return createResultValue( result, view, "vk::Device::createImageView" );
24416 }
24417#ifndef VULKAN_HPP_NO_SMART_HANDLE
24418 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24419 {
24420 ImageViewDeleter deleter( *this, allocator );
24421 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24422 }
24423#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24425
24426 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24427 {
24428 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24429 }
24430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24431 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24432 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024433 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024434 }
24435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24436
24437 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24438 {
24439 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24440 }
24441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24442 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24443 {
24444 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024445 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 -070024446 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24447 }
24448#ifndef VULKAN_HPP_NO_SMART_HANDLE
24449 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24450 {
24451 ShaderModuleDeleter deleter( *this, allocator );
24452 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24453 }
24454#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24455#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24456
24457 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24458 {
24459 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24460 }
24461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24462 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24463 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024464 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024465 }
24466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24467
24468 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24469 {
24470 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24471 }
24472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24473 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24474 {
24475 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024476 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 -070024477 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24478 }
24479#ifndef VULKAN_HPP_NO_SMART_HANDLE
24480 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24481 {
24482 PipelineCacheDeleter deleter( *this, allocator );
24483 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24484 }
24485#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24487
24488 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24489 {
24490 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24491 }
24492#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24493 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24494 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024495 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024496 }
24497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24498
24499 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24500 {
24501 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24502 }
24503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24504 template <typename Allocator>
24505 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24506 {
24507 std::vector<uint8_t,Allocator> data;
24508 size_t dataSize;
24509 Result result;
24510 do
24511 {
24512 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24513 if ( ( result == Result::eSuccess ) && dataSize )
24514 {
24515 data.resize( dataSize );
24516 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24517 }
24518 } while ( result == Result::eIncomplete );
24519 assert( dataSize <= data.size() );
24520 data.resize( dataSize );
24521 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24522 }
24523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24524
24525 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24526 {
24527 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24528 }
24529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24530 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24531 {
24532 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24533 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24534 }
24535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24536
24537 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24538 {
24539 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 ) ) );
24540 }
24541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24542 template <typename Allocator>
24543 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24544 {
24545 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024546 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 -070024547 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24548 }
24549 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24550 {
24551 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024552 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 -070024553 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24554 }
24555#ifndef VULKAN_HPP_NO_SMART_HANDLE
24556 template <typename Allocator>
24557 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24558 {
24559 PipelineDeleter deleter( *this, allocator );
24560 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24561 std::vector<UniquePipeline> uniquePipelines;
24562 uniquePipelines.reserve( pipelines.size() );
24563 for ( auto pipeline : pipelines )
24564 {
24565 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24566 }
24567 return uniquePipelines;
24568 }
24569 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24570 {
24571 PipelineDeleter deleter( *this, allocator );
24572 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24573 }
24574#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24576
24577 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24578 {
24579 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 ) ) );
24580 }
24581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24582 template <typename Allocator>
24583 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24584 {
24585 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024586 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 -070024587 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24588 }
24589 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24590 {
24591 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024592 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 -070024593 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24594 }
24595#ifndef VULKAN_HPP_NO_SMART_HANDLE
24596 template <typename Allocator>
24597 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24598 {
24599 PipelineDeleter deleter( *this, allocator );
24600 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24601 std::vector<UniquePipeline> uniquePipelines;
24602 uniquePipelines.reserve( pipelines.size() );
24603 for ( auto pipeline : pipelines )
24604 {
24605 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24606 }
24607 return uniquePipelines;
24608 }
24609 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24610 {
24611 PipelineDeleter deleter( *this, allocator );
24612 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24613 }
24614#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24615#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24616
24617 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24618 {
24619 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24620 }
24621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24622 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24623 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024624 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024625 }
24626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24627
24628 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24629 {
24630 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24631 }
24632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24633 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24634 {
24635 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024636 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 -070024637 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24638 }
24639#ifndef VULKAN_HPP_NO_SMART_HANDLE
24640 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24641 {
24642 PipelineLayoutDeleter deleter( *this, allocator );
24643 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24644 }
24645#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24646#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24647
24648 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24649 {
24650 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24651 }
24652#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24653 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24654 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024655 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024656 }
24657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24658
24659 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24660 {
24661 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24662 }
24663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24664 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24665 {
24666 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024667 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 -070024668 return createResultValue( result, sampler, "vk::Device::createSampler" );
24669 }
24670#ifndef VULKAN_HPP_NO_SMART_HANDLE
24671 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24672 {
24673 SamplerDeleter deleter( *this, allocator );
24674 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
24675 }
24676#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24678
24679 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
24680 {
24681 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24682 }
24683#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24684 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
24685 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024686 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024687 }
24688#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24689
24690 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
24691 {
24692 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
24693 }
24694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24695 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24696 {
24697 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024698 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 -070024699 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
24700 }
24701#ifndef VULKAN_HPP_NO_SMART_HANDLE
24702 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24703 {
24704 DescriptorSetLayoutDeleter deleter( *this, allocator );
24705 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
24706 }
24707#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24708#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24709
24710 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
24711 {
24712 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24713 }
24714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24715 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
24716 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024717 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024718 }
24719#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24720
24721 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
24722 {
24723 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
24724 }
24725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24726 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24727 {
24728 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024729 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 -070024730 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
24731 }
24732#ifndef VULKAN_HPP_NO_SMART_HANDLE
24733 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24734 {
24735 DescriptorPoolDeleter deleter( *this, allocator );
24736 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
24737 }
24738#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24740
24741 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
24742 {
24743 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24744 }
24745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24746 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
24747 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024748 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024749 }
24750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24751
24752#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24753 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24754 {
24755 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24756 }
24757#else
24758 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24759 {
24760 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24761 return createResultValue( result, "vk::Device::resetDescriptorPool" );
24762 }
24763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24764
24765 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
24766 {
24767 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
24768 }
24769#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24770 template <typename Allocator>
24771 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
24772 {
24773 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
24774 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
24775 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
24776 }
24777#ifndef VULKAN_HPP_NO_SMART_HANDLE
24778 template <typename Allocator>
24779 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
24780 {
24781 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
24782 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
24783 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
24784 uniqueDescriptorSets.reserve( descriptorSets.size() );
24785 for ( auto descriptorSet : descriptorSets )
24786 {
24787 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
24788 }
24789 return uniqueDescriptorSets;
24790 }
24791#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24793
24794 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
24795 {
24796 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
24797 }
24798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24799 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
24800 {
24801 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
24802 return createResultValue( result, "vk::Device::freeDescriptorSets" );
24803 }
24804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24805
24806 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
24807 {
24808 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
24809 }
24810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24811 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
24812 {
24813 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
24814 }
24815#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24816
24817 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
24818 {
24819 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
24820 }
24821#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24822 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24823 {
24824 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024825 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 -070024826 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
24827 }
24828#ifndef VULKAN_HPP_NO_SMART_HANDLE
24829 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24830 {
24831 FramebufferDeleter deleter( *this, allocator );
24832 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
24833 }
24834#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24836
24837 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
24838 {
24839 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24840 }
24841#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24842 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
24843 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024844 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024845 }
24846#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24847
24848 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
24849 {
24850 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
24851 }
24852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24853 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24854 {
24855 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024856 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 -070024857 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
24858 }
24859#ifndef VULKAN_HPP_NO_SMART_HANDLE
24860 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24861 {
24862 RenderPassDeleter deleter( *this, allocator );
24863 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
24864 }
24865#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24867
24868 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
24869 {
24870 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24871 }
24872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24873 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
24874 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024875 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024876 }
24877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24878
24879 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
24880 {
24881 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
24882 }
24883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24884 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
24885 {
24886 Extent2D granularity;
24887 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
24888 return granularity;
24889 }
24890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24891
24892 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
24893 {
24894 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
24895 }
24896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24897 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24898 {
24899 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024900 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 -070024901 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
24902 }
24903#ifndef VULKAN_HPP_NO_SMART_HANDLE
24904 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24905 {
24906 CommandPoolDeleter deleter( *this, allocator );
24907 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
24908 }
24909#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24911
24912 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
24913 {
24914 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24915 }
24916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24917 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
24918 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024919 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024920 }
24921#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24922
24923#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24924 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24925 {
24926 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24927 }
24928#else
24929 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24930 {
24931 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24932 return createResultValue( result, "vk::Device::resetCommandPool" );
24933 }
24934#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24935
24936 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
24937 {
24938 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
24939 }
24940#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24941 template <typename Allocator>
24942 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
24943 {
24944 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
24945 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
24946 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
24947 }
24948#ifndef VULKAN_HPP_NO_SMART_HANDLE
24949 template <typename Allocator>
24950 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
24951 {
24952 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
24953 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
24954 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
24955 uniqueCommandBuffers.reserve( commandBuffers.size() );
24956 for ( auto commandBuffer : commandBuffers )
24957 {
24958 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
24959 }
24960 return uniqueCommandBuffers;
24961 }
24962#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24964
24965 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
24966 {
24967 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
24968 }
24969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24970 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
24971 {
24972 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
24973 }
24974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24975
24976 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
24977 {
24978 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
24979 }
24980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24981 template <typename Allocator>
24982 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24983 {
24984 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024985 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 -070024986 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
24987 }
24988 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
24989 {
24990 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024991 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 -070024992 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
24993 }
24994#ifndef VULKAN_HPP_NO_SMART_HANDLE
24995 template <typename Allocator>
24996 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24997 {
24998 SwapchainKHRDeleter deleter( *this, allocator );
24999 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25000 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25001 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25002 for ( auto swapchainKHR : swapchainKHRs )
25003 {
25004 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25005 }
25006 return uniqueSwapchainKHRs;
25007 }
25008 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25009 {
25010 SwapchainKHRDeleter deleter( *this, allocator );
25011 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25012 }
25013#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25015
25016 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25017 {
25018 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25019 }
25020#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25021 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25022 {
25023 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025024 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 -070025025 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25026 }
25027#ifndef VULKAN_HPP_NO_SMART_HANDLE
25028 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25029 {
25030 SwapchainKHRDeleter deleter( *this, allocator );
25031 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25032 }
25033#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25034#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25035
25036 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25037 {
25038 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25039 }
25040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25041 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25042 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025043 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025044 }
25045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25046
25047 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25048 {
25049 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25050 }
25051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25052 template <typename Allocator>
25053 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25054 {
25055 std::vector<Image,Allocator> swapchainImages;
25056 uint32_t swapchainImageCount;
25057 Result result;
25058 do
25059 {
25060 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25061 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25062 {
25063 swapchainImages.resize( swapchainImageCount );
25064 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25065 }
25066 } while ( result == Result::eIncomplete );
25067 assert( swapchainImageCount <= swapchainImages.size() );
25068 swapchainImages.resize( swapchainImageCount );
25069 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25070 }
25071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25072
25073 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25074 {
25075 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25076 }
25077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25078 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25079 {
25080 uint32_t imageIndex;
25081 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25082 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25083 }
25084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25085
25086 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25087 {
25088 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25089 }
25090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25091 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25092 {
25093 DebugMarkerObjectNameInfoEXT nameInfo;
25094 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25095 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25096 }
25097#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25098
25099 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25100 {
25101 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25102 }
25103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25104 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25105 {
25106 DebugMarkerObjectTagInfoEXT tagInfo;
25107 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25108 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25109 }
25110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25111
25112#ifdef VK_USE_PLATFORM_WIN32_KHR
25113 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25114 {
25115 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25116 }
25117#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25118 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25119 {
25120 HANDLE handle;
25121 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25122 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25123 }
25124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25125#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25126
25127 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25128 {
25129 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25130 }
25131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25132 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25133 {
25134 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025135 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 -070025136 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25137 }
25138#ifndef VULKAN_HPP_NO_SMART_HANDLE
25139 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25140 {
25141 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25142 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25143 }
25144#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25146
25147 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25148 {
25149 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25150 }
25151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25152 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25153 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025154 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025155 }
25156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25157
25158 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25159 {
25160 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25161 }
25162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25163 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25164 {
25165 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025166 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 -070025167 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25168 }
25169#ifndef VULKAN_HPP_NO_SMART_HANDLE
25170 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25171 {
25172 ObjectTableNVXDeleter deleter( *this, allocator );
25173 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25174 }
25175#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25177
25178 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25179 {
25180 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25181 }
25182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25183 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25184 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025185 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025186 }
25187#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25188
25189 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25190 {
25191 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25192 }
25193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25194 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25195 {
25196#ifdef VULKAN_HPP_NO_EXCEPTIONS
25197 assert( pObjectTableEntries.size() == objectIndices.size() );
25198#else
25199 if ( pObjectTableEntries.size() != objectIndices.size() )
25200 {
25201 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25202 }
25203#endif // VULKAN_HPP_NO_EXCEPTIONS
25204 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25205 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25206 }
25207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25208
25209 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25210 {
25211 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25212 }
25213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25214 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25215 {
25216#ifdef VULKAN_HPP_NO_EXCEPTIONS
25217 assert( objectEntryTypes.size() == objectIndices.size() );
25218#else
25219 if ( objectEntryTypes.size() != objectIndices.size() )
25220 {
25221 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25222 }
25223#endif // VULKAN_HPP_NO_EXCEPTIONS
25224 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25225 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25226 }
25227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25228
25229 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25230 {
25231 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25232 }
25233
Mark Young0f183a82017-02-28 09:58:04 -070025234#ifdef VK_USE_PLATFORM_WIN32_KHR
25235 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25236 {
25237 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25238 }
25239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25240 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25241 {
25242 HANDLE handle;
25243 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25244 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25245 }
25246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25247#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25248
25249#ifdef VK_USE_PLATFORM_WIN32_KHR
25250 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25251 {
25252 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25253 }
25254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25255 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25256 {
25257 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25258 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25259 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25260 }
25261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25262#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25263
25264 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25265 {
25266 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25267 }
25268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25269 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25270 {
25271 int fd;
25272 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25273 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25274 }
25275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25276
25277 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25278 {
25279 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25280 }
25281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25282 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25283 {
25284 MemoryFdPropertiesKHX memoryFdProperties;
25285 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25286 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25287 }
25288#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25289
25290#ifdef VK_USE_PLATFORM_WIN32_KHX
25291 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25292 {
25293 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25294 }
25295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25296 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25297 {
25298 HANDLE handle;
25299 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25300 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25301 }
25302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25303#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25304
25305#ifdef VK_USE_PLATFORM_WIN32_KHX
25306 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25307 {
25308 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25309 }
25310#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25311 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25312 {
25313 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25314 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25315 }
25316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25317#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25318
25319 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25320 {
25321 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25322 }
25323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25324 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25325 {
25326 int fd;
25327 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25328 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25329 }
25330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25331
25332 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25333 {
25334 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25335 }
25336#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25337 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25338 {
25339 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25340 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25341 }
25342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25343
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025344 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25345 {
25346 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25347 }
25348#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25349 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25350 {
25351 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25352 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25353 }
25354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25355
25356 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25357 {
25358 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25359 }
25360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25361 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25362 {
25363 Fence fence;
25364 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25365 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25366 }
25367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25368
25369 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25370 {
25371 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 ) ) );
25372 }
25373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25374 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25375 {
25376 Fence fence;
25377 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 ) ) );
25378 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25379 }
25380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25381
25382 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25383 {
25384 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25385 }
25386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25387 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25388 {
25389 uint64_t counterValue;
25390 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25391 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25392 }
25393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025394
25395 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25396 {
25397 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25398 }
25399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25400 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25401 {
25402 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25403 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25404 return peerMemoryFeatures;
25405 }
25406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25407
25408 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25409 {
25410 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25411 }
25412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25413 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25414 {
25415 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25416 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25417 }
25418#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25419
25420 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25421 {
25422 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25423 }
25424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25425 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25426 {
25427 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25428 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25429 }
25430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25431
25432 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25433 {
25434 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25435 }
25436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25437 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25438 {
25439 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25440 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25441 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25442 }
25443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25444
25445 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25446 {
25447 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25448 }
25449#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25450 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25451 {
25452 DeviceGroupPresentModeFlagsKHX modes;
25453 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25454 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25455 }
25456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25457
25458 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25459 {
25460 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25461 }
25462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25463 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25464 {
25465 uint32_t imageIndex;
25466 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25467 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25468 }
25469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25470
25471 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25472 {
25473 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25474 }
25475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25476 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25477 {
25478 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025479 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 -070025480 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25481 }
25482#ifndef VULKAN_HPP_NO_SMART_HANDLE
25483 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25484 {
25485 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25486 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25487 }
25488#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25489#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25490
25491 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25492 {
25493 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25494 }
25495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25496 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25497 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025498 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025499 }
25500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25501
25502 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25503 {
25504 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25505 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025506
25507 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25508 {
25509 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25510 }
25511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25512 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25513 {
25514#ifdef VULKAN_HPP_NO_EXCEPTIONS
25515 assert( swapchains.size() == metadata.size() );
25516#else
25517 if ( swapchains.size() != metadata.size() )
25518 {
25519 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25520 }
25521#endif // VULKAN_HPP_NO_EXCEPTIONS
25522 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25523 }
25524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25525
25526 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25527 {
25528 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25529 }
25530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25531 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25532 {
25533 RefreshCycleDurationGOOGLE displayTimingProperties;
25534 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25535 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25536 }
25537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25538
25539 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25540 {
25541 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25542 }
25543#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25544 template <typename Allocator>
25545 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25546 {
25547 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25548 uint32_t presentationTimingCount;
25549 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25550 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25551 {
25552 presentationTimings.resize( presentationTimingCount );
25553 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25554 }
25555 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25556 }
25557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25558
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025559#ifndef VULKAN_HPP_NO_SMART_HANDLE
25560 class DeviceDeleter;
25561 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25562#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25563
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025564 class PhysicalDevice
25565 {
25566 public:
25567 PhysicalDevice()
25568 : m_physicalDevice(VK_NULL_HANDLE)
25569 {}
25570
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025571 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025572 : m_physicalDevice(VK_NULL_HANDLE)
25573 {}
25574
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025575 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025576 : m_physicalDevice(physicalDevice)
25577 {}
25578
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025579#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025580 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25581 {
25582 m_physicalDevice = physicalDevice;
25583 return *this;
25584 }
25585#endif
25586
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025587 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025588 {
25589 m_physicalDevice = VK_NULL_HANDLE;
25590 return *this;
25591 }
25592
Lenny Komowebf33162016-08-26 14:10:08 -060025593 bool operator==(PhysicalDevice const &rhs) const
25594 {
25595 return m_physicalDevice == rhs.m_physicalDevice;
25596 }
25597
25598 bool operator!=(PhysicalDevice const &rhs) const
25599 {
25600 return m_physicalDevice != rhs.m_physicalDevice;
25601 }
25602
25603 bool operator<(PhysicalDevice const &rhs) const
25604 {
25605 return m_physicalDevice < rhs.m_physicalDevice;
25606 }
25607
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025608 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025610 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025611#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25612
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025613 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025614#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025615 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25616 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25618
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025619 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025621 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25623
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025624 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025626 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25628
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025629 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025630#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025631 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25633
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025634 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025635#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025636 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025637#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25638
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025639 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025640#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025641 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25642#ifndef VULKAN_HPP_NO_SMART_HANDLE
25643 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25644#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25646
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025647 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025649 template <typename Allocator = std::allocator<LayerProperties>>
25650 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25652
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025653 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025655 template <typename Allocator = std::allocator<ExtensionProperties>>
25656 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25658
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025659 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 -060025660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025661 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
25662 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25664
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025665 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025666#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025667 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
25668 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025669#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25670
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025671 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025672#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025673 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
25674 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25676
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025677 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025679 template <typename Allocator = std::allocator<DisplayKHR>>
25680 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25682
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025683 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025684#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025685 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
25686 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25688
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025689 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025691 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25693
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025694 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025695#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025696 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25698
25699#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025700 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
25701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25702 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
25703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025704#endif /*VK_USE_PLATFORM_MIR_KHR*/
25705
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025706 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025708 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025709#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25710
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025711 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025713 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25715
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025716 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025718 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
25719 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025720#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25721
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025722 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025724 template <typename Allocator = std::allocator<PresentModeKHR>>
25725 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25727
25728#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025729 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
25730#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25731 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
25732#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025733#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
25734
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025735#ifdef VK_USE_PLATFORM_WIN32_KHR
25736 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
25737#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25738
25739#ifdef VK_USE_PLATFORM_XLIB_KHR
25740 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025742 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
25743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25744#endif /*VK_USE_PLATFORM_XLIB_KHR*/
25745
25746#ifdef VK_USE_PLATFORM_XCB_KHR
25747 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
25748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25749 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
25750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25751#endif /*VK_USE_PLATFORM_XCB_KHR*/
25752
25753 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
25754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25755 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
25756#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25757
25758 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
25759#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25760 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
25761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25762
25763 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
25764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25765 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
25766#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25767
25768 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
25769#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25770 PhysicalDeviceProperties2KHR getProperties2KHR() const;
25771#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25772
25773 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
25774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25775 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
25776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25777
25778 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
25779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25780 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
25781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25782
25783 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
25784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25785 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
25786 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
25787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25788
25789 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
25790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25791 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
25792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25793
25794 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
25795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25796 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
25797 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25799
Mark Young0f183a82017-02-28 09:58:04 -070025800 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
25801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25802 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
25803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25804
25805 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
25806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25807 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
25808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25809
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025810#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025811 Result releaseDisplayEXT( DisplayKHR display ) const;
25812#else
25813 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25815
25816#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025817 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025819 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025820#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070025821#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
25822
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025823#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
25824 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070025825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025826 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070025827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025828#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070025829
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025830 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070025831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025832 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070025833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25834
Mark Young0f183a82017-02-28 09:58:04 -070025835 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
25836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25837 template <typename Allocator = std::allocator<Rect2D>>
25838 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
25839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25840
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025841 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025842 {
25843 return m_physicalDevice;
25844 }
25845
25846 explicit operator bool() const
25847 {
25848 return m_physicalDevice != VK_NULL_HANDLE;
25849 }
25850
25851 bool operator!() const
25852 {
25853 return m_physicalDevice == VK_NULL_HANDLE;
25854 }
25855
25856 private:
25857 VkPhysicalDevice m_physicalDevice;
25858 };
25859 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
25860
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025861#ifndef VULKAN_HPP_NO_SMART_HANDLE
25862 class DeviceDeleter
25863 {
25864 public:
25865 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
25866 : m_allocator( allocator )
25867 {}
25868
25869 void operator()( Device device )
25870 {
25871 device.destroy( m_allocator );
25872 }
25873
25874 private:
25875 Optional<const AllocationCallbacks> m_allocator;
25876 };
25877#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25878
25879 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
25880 {
25881 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
25882 }
25883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25884 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
25885 {
25886 PhysicalDeviceProperties properties;
25887 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
25888 return properties;
25889 }
25890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25891
25892 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
25893 {
25894 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
25895 }
25896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25897 template <typename Allocator>
25898 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
25899 {
25900 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
25901 uint32_t queueFamilyPropertyCount;
25902 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
25903 queueFamilyProperties.resize( queueFamilyPropertyCount );
25904 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
25905 return queueFamilyProperties;
25906 }
25907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25908
25909 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
25910 {
25911 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
25912 }
25913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25914 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
25915 {
25916 PhysicalDeviceMemoryProperties memoryProperties;
25917 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
25918 return memoryProperties;
25919 }
25920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25921
25922 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
25923 {
25924 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
25925 }
25926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25927 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
25928 {
25929 PhysicalDeviceFeatures features;
25930 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
25931 return features;
25932 }
25933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25934
25935 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
25936 {
25937 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
25938 }
25939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25940 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
25941 {
25942 FormatProperties formatProperties;
25943 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
25944 return formatProperties;
25945 }
25946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25947
25948 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
25949 {
25950 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 ) ) );
25951 }
25952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25953 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
25954 {
25955 ImageFormatProperties imageFormatProperties;
25956 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 ) ) );
25957 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
25958 }
25959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25960
25961 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
25962 {
25963 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
25964 }
25965#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25966 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25967 {
25968 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025969 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 -070025970 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
25971 }
25972#ifndef VULKAN_HPP_NO_SMART_HANDLE
25973 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25974 {
25975 DeviceDeleter deleter( allocator );
25976 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
25977 }
25978#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25980
25981 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
25982 {
25983 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25984 }
25985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25986 template <typename Allocator>
25987 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
25988 {
25989 std::vector<LayerProperties,Allocator> properties;
25990 uint32_t propertyCount;
25991 Result result;
25992 do
25993 {
25994 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
25995 if ( ( result == Result::eSuccess ) && propertyCount )
25996 {
25997 properties.resize( propertyCount );
25998 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25999 }
26000 } while ( result == Result::eIncomplete );
26001 assert( propertyCount <= properties.size() );
26002 properties.resize( propertyCount );
26003 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26004 }
26005#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26006
26007 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26008 {
26009 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26010 }
26011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26012 template <typename Allocator>
26013 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26014 {
26015 std::vector<ExtensionProperties,Allocator> properties;
26016 uint32_t propertyCount;
26017 Result result;
26018 do
26019 {
26020 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26021 if ( ( result == Result::eSuccess ) && propertyCount )
26022 {
26023 properties.resize( propertyCount );
26024 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26025 }
26026 } while ( result == Result::eIncomplete );
26027 assert( propertyCount <= properties.size() );
26028 properties.resize( propertyCount );
26029 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26030 }
26031#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26032
26033 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26034 {
26035 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 ) );
26036 }
26037#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26038 template <typename Allocator>
26039 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26040 {
26041 std::vector<SparseImageFormatProperties,Allocator> properties;
26042 uint32_t propertyCount;
26043 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 );
26044 properties.resize( propertyCount );
26045 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() ) );
26046 return properties;
26047 }
26048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26049
26050 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26051 {
26052 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26053 }
26054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26055 template <typename Allocator>
26056 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26057 {
26058 std::vector<DisplayPropertiesKHR,Allocator> properties;
26059 uint32_t propertyCount;
26060 Result result;
26061 do
26062 {
26063 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26064 if ( ( result == Result::eSuccess ) && propertyCount )
26065 {
26066 properties.resize( propertyCount );
26067 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26068 }
26069 } while ( result == Result::eIncomplete );
26070 assert( propertyCount <= properties.size() );
26071 properties.resize( propertyCount );
26072 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26073 }
26074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26075
26076 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26077 {
26078 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26079 }
26080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26081 template <typename Allocator>
26082 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26083 {
26084 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26085 uint32_t propertyCount;
26086 Result result;
26087 do
26088 {
26089 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26090 if ( ( result == Result::eSuccess ) && propertyCount )
26091 {
26092 properties.resize( propertyCount );
26093 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26094 }
26095 } while ( result == Result::eIncomplete );
26096 assert( propertyCount <= properties.size() );
26097 properties.resize( propertyCount );
26098 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26099 }
26100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26101
26102 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26103 {
26104 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26105 }
26106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26107 template <typename Allocator>
26108 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26109 {
26110 std::vector<DisplayKHR,Allocator> displays;
26111 uint32_t displayCount;
26112 Result result;
26113 do
26114 {
26115 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26116 if ( ( result == Result::eSuccess ) && displayCount )
26117 {
26118 displays.resize( displayCount );
26119 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26120 }
26121 } while ( result == Result::eIncomplete );
26122 assert( displayCount <= displays.size() );
26123 displays.resize( displayCount );
26124 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26125 }
26126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26127
26128 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26129 {
26130 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26131 }
26132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26133 template <typename Allocator>
26134 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26135 {
26136 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26137 uint32_t propertyCount;
26138 Result result;
26139 do
26140 {
26141 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26142 if ( ( result == Result::eSuccess ) && propertyCount )
26143 {
26144 properties.resize( propertyCount );
26145 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26146 }
26147 } while ( result == Result::eIncomplete );
26148 assert( propertyCount <= properties.size() );
26149 properties.resize( propertyCount );
26150 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26151 }
26152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26153
26154 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26155 {
26156 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 ) ) );
26157 }
26158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26159 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26160 {
26161 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026162 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 -070026163 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26164 }
26165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26166
26167 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26168 {
26169 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26170 }
26171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26172 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26173 {
26174 DisplayPlaneCapabilitiesKHR capabilities;
26175 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26176 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26177 }
26178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26179
26180#ifdef VK_USE_PLATFORM_MIR_KHR
26181 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26182 {
26183 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26184 }
26185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26186 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26187 {
26188 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26189 }
26190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26191#endif /*VK_USE_PLATFORM_MIR_KHR*/
26192
26193 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26194 {
26195 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26196 }
26197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26198 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26199 {
26200 Bool32 supported;
26201 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26202 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26203 }
26204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26205
26206 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26207 {
26208 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26209 }
26210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26211 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26212 {
26213 SurfaceCapabilitiesKHR surfaceCapabilities;
26214 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26215 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26216 }
26217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26218
26219 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26220 {
26221 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26222 }
26223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26224 template <typename Allocator>
26225 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26226 {
26227 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26228 uint32_t surfaceFormatCount;
26229 Result result;
26230 do
26231 {
26232 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26233 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26234 {
26235 surfaceFormats.resize( surfaceFormatCount );
26236 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26237 }
26238 } while ( result == Result::eIncomplete );
26239 assert( surfaceFormatCount <= surfaceFormats.size() );
26240 surfaceFormats.resize( surfaceFormatCount );
26241 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26242 }
26243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26244
26245 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26246 {
26247 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26248 }
26249#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26250 template <typename Allocator>
26251 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26252 {
26253 std::vector<PresentModeKHR,Allocator> presentModes;
26254 uint32_t presentModeCount;
26255 Result result;
26256 do
26257 {
26258 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26259 if ( ( result == Result::eSuccess ) && presentModeCount )
26260 {
26261 presentModes.resize( presentModeCount );
26262 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26263 }
26264 } while ( result == Result::eIncomplete );
26265 assert( presentModeCount <= presentModes.size() );
26266 presentModes.resize( presentModeCount );
26267 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26268 }
26269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26270
26271#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26272 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26273 {
26274 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26275 }
26276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26277 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26278 {
26279 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26280 }
26281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26282#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26283
26284#ifdef VK_USE_PLATFORM_WIN32_KHR
26285 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26286 {
26287 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26288 }
26289#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26290
26291#ifdef VK_USE_PLATFORM_XLIB_KHR
26292 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26293 {
26294 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26295 }
26296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26297 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26298 {
26299 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26300 }
26301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26302#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26303
26304#ifdef VK_USE_PLATFORM_XCB_KHR
26305 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26306 {
26307 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26308 }
26309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26310 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26311 {
26312 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26313 }
26314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26315#endif /*VK_USE_PLATFORM_XCB_KHR*/
26316
26317 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26318 {
26319 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 ) ) );
26320 }
26321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26322 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26323 {
26324 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26325 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 ) ) );
26326 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26327 }
26328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26329
26330 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26331 {
26332 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26333 }
26334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26335 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26336 {
26337 DeviceGeneratedCommandsLimitsNVX limits;
26338 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26339 return limits;
26340 }
26341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26342
26343 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26344 {
26345 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26346 }
26347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26348 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26349 {
26350 PhysicalDeviceFeatures2KHR features;
26351 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26352 return features;
26353 }
26354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26355
26356 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26357 {
26358 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26359 }
26360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26361 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26362 {
26363 PhysicalDeviceProperties2KHR properties;
26364 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26365 return properties;
26366 }
26367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26368
26369 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26370 {
26371 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26372 }
26373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26374 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26375 {
26376 FormatProperties2KHR formatProperties;
26377 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26378 return formatProperties;
26379 }
26380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26381
26382 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26383 {
26384 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26385 }
26386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26387 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26388 {
26389 ImageFormatProperties2KHR imageFormatProperties;
26390 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26391 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26392 }
26393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26394
26395 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26396 {
26397 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26398 }
26399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26400 template <typename Allocator>
26401 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26402 {
26403 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26404 uint32_t queueFamilyPropertyCount;
26405 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26406 queueFamilyProperties.resize( queueFamilyPropertyCount );
26407 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26408 return queueFamilyProperties;
26409 }
26410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26411
26412 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26413 {
26414 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26415 }
26416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26417 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26418 {
26419 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26420 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26421 return memoryProperties;
26422 }
26423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26424
26425 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26426 {
26427 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26428 }
26429#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26430 template <typename Allocator>
26431 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26432 {
26433 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26434 uint32_t propertyCount;
26435 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26436 properties.resize( propertyCount );
26437 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26438 return properties;
26439 }
26440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26441
Mark Young0f183a82017-02-28 09:58:04 -070026442 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26443 {
26444 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26445 }
26446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26447 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26448 {
26449 ExternalBufferPropertiesKHX externalBufferProperties;
26450 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26451 return externalBufferProperties;
26452 }
26453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26454
26455 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26456 {
26457 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26458 }
26459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26460 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26461 {
26462 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26463 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26464 return externalSemaphoreProperties;
26465 }
26466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26467
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026468#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26469 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26470 {
26471 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26472 }
26473#else
26474 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26475 {
26476 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26477 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26478 }
26479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26480
26481#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26482 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26483 {
26484 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26485 }
26486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26487 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26488 {
26489 Display dpy;
26490 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26491 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26492 }
26493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26494#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26495
26496#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26497 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26498 {
26499 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26500 }
26501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26502 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26503 {
26504 DisplayKHR display;
26505 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26506 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26507 }
26508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26509#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26510
26511 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26512 {
26513 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26514 }
26515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26516 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26517 {
26518 SurfaceCapabilities2EXT surfaceCapabilities;
26519 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26520 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26521 }
26522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026523
26524 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26525 {
26526 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26527 }
26528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26529 template <typename Allocator>
26530 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26531 {
26532 std::vector<Rect2D,Allocator> rects;
26533 uint32_t rectCount;
26534 Result result;
26535 do
26536 {
26537 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26538 if ( ( result == Result::eSuccess ) && rectCount )
26539 {
26540 rects.resize( rectCount );
26541 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26542 }
26543 } while ( result == Result::eIncomplete );
26544 assert( rectCount <= rects.size() );
26545 rects.resize( rectCount );
26546 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26547 }
26548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026549
Mark Young0f183a82017-02-28 09:58:04 -070026550 struct CmdProcessCommandsInfoNVX
26551 {
26552 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 )
26553 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26554 , pNext( nullptr )
26555 , objectTable( objectTable_ )
26556 , indirectCommandsLayout( indirectCommandsLayout_ )
26557 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26558 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26559 , maxSequencesCount( maxSequencesCount_ )
26560 , targetCommandBuffer( targetCommandBuffer_ )
26561 , sequencesCountBuffer( sequencesCountBuffer_ )
26562 , sequencesCountOffset( sequencesCountOffset_ )
26563 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26564 , sequencesIndexOffset( sequencesIndexOffset_ )
26565 {
26566 }
26567
26568 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26569 {
26570 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26571 }
26572
26573 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26574 {
26575 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26576 return *this;
26577 }
26578
26579 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26580 {
26581 pNext = pNext_;
26582 return *this;
26583 }
26584
26585 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26586 {
26587 objectTable = objectTable_;
26588 return *this;
26589 }
26590
26591 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26592 {
26593 indirectCommandsLayout = indirectCommandsLayout_;
26594 return *this;
26595 }
26596
26597 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26598 {
26599 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26600 return *this;
26601 }
26602
26603 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
26604 {
26605 pIndirectCommandsTokens = pIndirectCommandsTokens_;
26606 return *this;
26607 }
26608
26609 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
26610 {
26611 maxSequencesCount = maxSequencesCount_;
26612 return *this;
26613 }
26614
26615 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
26616 {
26617 targetCommandBuffer = targetCommandBuffer_;
26618 return *this;
26619 }
26620
26621 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
26622 {
26623 sequencesCountBuffer = sequencesCountBuffer_;
26624 return *this;
26625 }
26626
26627 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
26628 {
26629 sequencesCountOffset = sequencesCountOffset_;
26630 return *this;
26631 }
26632
26633 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
26634 {
26635 sequencesIndexBuffer = sequencesIndexBuffer_;
26636 return *this;
26637 }
26638
26639 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
26640 {
26641 sequencesIndexOffset = sequencesIndexOffset_;
26642 return *this;
26643 }
26644
26645 operator const VkCmdProcessCommandsInfoNVX&() const
26646 {
26647 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
26648 }
26649
26650 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
26651 {
26652 return ( sType == rhs.sType )
26653 && ( pNext == rhs.pNext )
26654 && ( objectTable == rhs.objectTable )
26655 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
26656 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
26657 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
26658 && ( maxSequencesCount == rhs.maxSequencesCount )
26659 && ( targetCommandBuffer == rhs.targetCommandBuffer )
26660 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
26661 && ( sequencesCountOffset == rhs.sequencesCountOffset )
26662 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
26663 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
26664 }
26665
26666 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
26667 {
26668 return !operator==( rhs );
26669 }
26670
26671 private:
26672 StructureType sType;
26673
26674 public:
26675 const void* pNext;
26676 ObjectTableNVX objectTable;
26677 IndirectCommandsLayoutNVX indirectCommandsLayout;
26678 uint32_t indirectCommandsTokenCount;
26679 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
26680 uint32_t maxSequencesCount;
26681 CommandBuffer targetCommandBuffer;
26682 Buffer sequencesCountBuffer;
26683 DeviceSize sequencesCountOffset;
26684 Buffer sequencesIndexBuffer;
26685 DeviceSize sequencesIndexOffset;
26686 };
26687 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
26688
26689 struct PhysicalDeviceGroupPropertiesKHX
26690 {
26691 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
26692 {
26693 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
26694 }
26695
26696 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26697 {
26698 return ( sType == rhs.sType )
26699 && ( pNext == rhs.pNext )
26700 && ( physicalDeviceCount == rhs.physicalDeviceCount )
26701 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
26702 && ( subsetAllocation == rhs.subsetAllocation );
26703 }
26704
26705 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26706 {
26707 return !operator==( rhs );
26708 }
26709
26710 private:
26711 StructureType sType;
26712
26713 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060026714 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070026715 uint32_t physicalDeviceCount;
26716 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
26717 Bool32 subsetAllocation;
26718 };
26719 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
26720
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026721#ifndef VULKAN_HPP_NO_SMART_HANDLE
26722 class DebugReportCallbackEXTDeleter;
26723 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
26724 class SurfaceKHRDeleter;
26725 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
26726#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26727
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026728 class Instance
26729 {
26730 public:
26731 Instance()
26732 : m_instance(VK_NULL_HANDLE)
26733 {}
26734
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026735 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026736 : m_instance(VK_NULL_HANDLE)
26737 {}
26738
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026739 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026740 : m_instance(instance)
26741 {}
26742
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026743#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026744 Instance& operator=(VkInstance instance)
26745 {
26746 m_instance = instance;
26747 return *this;
26748 }
26749#endif
26750
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026751 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026752 {
26753 m_instance = VK_NULL_HANDLE;
26754 return *this;
26755 }
26756
Lenny Komowebf33162016-08-26 14:10:08 -060026757 bool operator==(Instance const &rhs) const
26758 {
26759 return m_instance == rhs.m_instance;
26760 }
26761
26762 bool operator!=(Instance const &rhs) const
26763 {
26764 return m_instance != rhs.m_instance;
26765 }
26766
26767 bool operator<(Instance const &rhs) const
26768 {
26769 return m_instance < rhs.m_instance;
26770 }
26771
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026772 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026774 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26776
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026777 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026779 template <typename Allocator = std::allocator<PhysicalDevice>>
26780 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26782
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026783 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026785 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26787
26788#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026789 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026791 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26792#ifndef VULKAN_HPP_NO_SMART_HANDLE
26793 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26794#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026796#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026797
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026798 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026800 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26801#ifndef VULKAN_HPP_NO_SMART_HANDLE
26802 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26803#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26805
26806#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026807 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026809 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26810#ifndef VULKAN_HPP_NO_SMART_HANDLE
26811 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26812#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026814#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026815
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026816 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026818 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26820
Mark Young39389872017-01-19 21:10:49 -070026821#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026822 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26824 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26825#ifndef VULKAN_HPP_NO_SMART_HANDLE
26826 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26827#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026829#endif /*VK_USE_PLATFORM_VI_NN*/
26830
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026831#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026832 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26834 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26835#ifndef VULKAN_HPP_NO_SMART_HANDLE
26836 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26837#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026839#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26840
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026841#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026842 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26844 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26845#ifndef VULKAN_HPP_NO_SMART_HANDLE
26846 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26847#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026849#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26850
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026851#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026852 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26854 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26855#ifndef VULKAN_HPP_NO_SMART_HANDLE
26856 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26857#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026859#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26860
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026861#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026862 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26864 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26865#ifndef VULKAN_HPP_NO_SMART_HANDLE
26866 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26867#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26868#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026869#endif /*VK_USE_PLATFORM_XCB_KHR*/
26870
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026871 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026873 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26874#ifndef VULKAN_HPP_NO_SMART_HANDLE
26875 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26876#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26878
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026879 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026881 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26883
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026884 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 -060026885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026886 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 -060026887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26888
Mark Young0f183a82017-02-28 09:58:04 -070026889 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
26890#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26891 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
26892 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
26893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26894
26895#ifdef VK_USE_PLATFORM_IOS_MVK
26896 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26898 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26899#ifndef VULKAN_HPP_NO_SMART_HANDLE
26900 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26901#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26903#endif /*VK_USE_PLATFORM_IOS_MVK*/
26904
26905#ifdef VK_USE_PLATFORM_MACOS_MVK
26906 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26908 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26909#ifndef VULKAN_HPP_NO_SMART_HANDLE
26910 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26911#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26913#endif /*VK_USE_PLATFORM_MACOS_MVK*/
26914
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026915 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026916 {
26917 return m_instance;
26918 }
26919
26920 explicit operator bool() const
26921 {
26922 return m_instance != VK_NULL_HANDLE;
26923 }
26924
26925 bool operator!() const
26926 {
26927 return m_instance == VK_NULL_HANDLE;
26928 }
26929
26930 private:
26931 VkInstance m_instance;
26932 };
26933 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
26934
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026935#ifndef VULKAN_HPP_NO_SMART_HANDLE
26936 class DebugReportCallbackEXTDeleter
26937 {
26938 public:
26939 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26940 : m_instance( instance )
26941 , m_allocator( allocator )
26942 {}
26943
26944 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
26945 {
26946 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
26947 }
26948
26949 private:
26950 Instance m_instance;
26951 Optional<const AllocationCallbacks> m_allocator;
26952 };
26953
26954 class SurfaceKHRDeleter
26955 {
26956 public:
26957 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26958 : m_instance( instance )
26959 , m_allocator( allocator )
26960 {}
26961
26962 void operator()( SurfaceKHR surfaceKHR )
26963 {
26964 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
26965 }
26966
26967 private:
26968 Instance m_instance;
26969 Optional<const AllocationCallbacks> m_allocator;
26970 };
26971#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26972
26973 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
26974 {
26975 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26976 }
26977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26978 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
26979 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026980 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026981 }
26982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26983
26984 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
26985 {
26986 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
26987 }
26988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26989 template <typename Allocator>
26990 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
26991 {
26992 std::vector<PhysicalDevice,Allocator> physicalDevices;
26993 uint32_t physicalDeviceCount;
26994 Result result;
26995 do
26996 {
26997 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
26998 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
26999 {
27000 physicalDevices.resize( physicalDeviceCount );
27001 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27002 }
27003 } while ( result == Result::eIncomplete );
27004 assert( physicalDeviceCount <= physicalDevices.size() );
27005 physicalDevices.resize( physicalDeviceCount );
27006 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27007 }
27008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27009
27010 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27011 {
27012 return vkGetInstanceProcAddr( m_instance, pName );
27013 }
27014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27015 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27016 {
27017 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27018 }
27019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27020
27021#ifdef VK_USE_PLATFORM_ANDROID_KHR
27022 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27023 {
27024 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27025 }
27026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27027 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27028 {
27029 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027030 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 -070027031 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27032 }
27033#ifndef VULKAN_HPP_NO_SMART_HANDLE
27034 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27035 {
27036 SurfaceKHRDeleter deleter( *this, allocator );
27037 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27038 }
27039#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27041#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27042
27043 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27044 {
27045 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27046 }
27047#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27048 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27049 {
27050 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027051 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 -070027052 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27053 }
27054#ifndef VULKAN_HPP_NO_SMART_HANDLE
27055 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27056 {
27057 SurfaceKHRDeleter deleter( *this, allocator );
27058 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27059 }
27060#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27062
27063#ifdef VK_USE_PLATFORM_MIR_KHR
27064 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27065 {
27066 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27067 }
27068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27069 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27070 {
27071 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027072 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 -070027073 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27074 }
27075#ifndef VULKAN_HPP_NO_SMART_HANDLE
27076 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27077 {
27078 SurfaceKHRDeleter deleter( *this, allocator );
27079 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27080 }
27081#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27083#endif /*VK_USE_PLATFORM_MIR_KHR*/
27084
27085 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27086 {
27087 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27088 }
27089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27090 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27091 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027092 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027093 }
27094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27095
27096#ifdef VK_USE_PLATFORM_VI_NN
27097 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27098 {
27099 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27100 }
27101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27102 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27103 {
27104 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027105 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 -070027106 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27107 }
27108#ifndef VULKAN_HPP_NO_SMART_HANDLE
27109 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27110 {
27111 SurfaceKHRDeleter deleter( *this, allocator );
27112 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27113 }
27114#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27116#endif /*VK_USE_PLATFORM_VI_NN*/
27117
27118#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27119 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27120 {
27121 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27122 }
27123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27124 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27125 {
27126 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027127 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 -070027128 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27129 }
27130#ifndef VULKAN_HPP_NO_SMART_HANDLE
27131 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27132 {
27133 SurfaceKHRDeleter deleter( *this, allocator );
27134 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27135 }
27136#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27138#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27139
27140#ifdef VK_USE_PLATFORM_WIN32_KHR
27141 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27142 {
27143 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27144 }
27145#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27146 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27147 {
27148 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027149 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 -070027150 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27151 }
27152#ifndef VULKAN_HPP_NO_SMART_HANDLE
27153 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27154 {
27155 SurfaceKHRDeleter deleter( *this, allocator );
27156 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27157 }
27158#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27160#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27161
27162#ifdef VK_USE_PLATFORM_XLIB_KHR
27163 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27164 {
27165 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27166 }
27167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27168 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27169 {
27170 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027171 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 -070027172 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27173 }
27174#ifndef VULKAN_HPP_NO_SMART_HANDLE
27175 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27176 {
27177 SurfaceKHRDeleter deleter( *this, allocator );
27178 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27179 }
27180#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27182#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27183
27184#ifdef VK_USE_PLATFORM_XCB_KHR
27185 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27186 {
27187 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27188 }
27189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27190 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27191 {
27192 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027193 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 -070027194 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27195 }
27196#ifndef VULKAN_HPP_NO_SMART_HANDLE
27197 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27198 {
27199 SurfaceKHRDeleter deleter( *this, allocator );
27200 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27201 }
27202#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27203#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27204#endif /*VK_USE_PLATFORM_XCB_KHR*/
27205
27206 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27207 {
27208 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27209 }
27210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27211 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27212 {
27213 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027214 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 -070027215 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27216 }
27217#ifndef VULKAN_HPP_NO_SMART_HANDLE
27218 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27219 {
27220 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27221 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27222 }
27223#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27225
27226 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27227 {
27228 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27229 }
27230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27231 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27232 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027233 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027234 }
27235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27236
27237 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
27238 {
27239 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27240 }
27241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27242 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
27243 {
27244#ifdef VULKAN_HPP_NO_EXCEPTIONS
27245 assert( layerPrefix.size() == message.size() );
27246#else
27247 if ( layerPrefix.size() != message.size() )
27248 {
27249 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27250 }
27251#endif // VULKAN_HPP_NO_EXCEPTIONS
27252 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27253 }
27254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027255
27256 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027257 {
Mark Young0f183a82017-02-28 09:58:04 -070027258 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27259 }
27260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27261 template <typename Allocator>
27262 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27263 {
27264 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27265 uint32_t physicalDeviceGroupCount;
27266 Result result;
27267 do
27268 {
27269 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27270 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27271 {
27272 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27273 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27274 }
27275 } while ( result == Result::eIncomplete );
27276 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27277 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27278 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27279 }
27280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27281
27282#ifdef VK_USE_PLATFORM_IOS_MVK
27283 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27284 {
27285 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27286 }
27287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27288 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27289 {
27290 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027291 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 -070027292 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27293 }
27294#ifndef VULKAN_HPP_NO_SMART_HANDLE
27295 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27296 {
27297 SurfaceKHRDeleter deleter( *this, allocator );
27298 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27299 }
27300#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27302#endif /*VK_USE_PLATFORM_IOS_MVK*/
27303
27304#ifdef VK_USE_PLATFORM_MACOS_MVK
27305 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27306 {
27307 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27308 }
27309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27310 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27311 {
27312 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027313 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 -070027314 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27315 }
27316#ifndef VULKAN_HPP_NO_SMART_HANDLE
27317 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27318 {
27319 SurfaceKHRDeleter deleter( *this, allocator );
27320 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27321 }
27322#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27324#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027325
Mark Young0f183a82017-02-28 09:58:04 -070027326 struct DeviceGroupDeviceCreateInfoKHX
27327 {
27328 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27329 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027330 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027331 , physicalDeviceCount( physicalDeviceCount_ )
27332 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027333 {
27334 }
27335
Mark Young0f183a82017-02-28 09:58:04 -070027336 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027337 {
Mark Young0f183a82017-02-28 09:58:04 -070027338 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027339 }
27340
Mark Young0f183a82017-02-28 09:58:04 -070027341 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027342 {
Mark Young0f183a82017-02-28 09:58:04 -070027343 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027344 return *this;
27345 }
27346
Mark Young0f183a82017-02-28 09:58:04 -070027347 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027348 {
27349 pNext = pNext_;
27350 return *this;
27351 }
27352
Mark Young0f183a82017-02-28 09:58:04 -070027353 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027354 {
Mark Young0f183a82017-02-28 09:58:04 -070027355 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027356 return *this;
27357 }
27358
Mark Young0f183a82017-02-28 09:58:04 -070027359 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027360 {
Mark Young0f183a82017-02-28 09:58:04 -070027361 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027362 return *this;
27363 }
27364
Mark Young0f183a82017-02-28 09:58:04 -070027365 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027366 {
Mark Young0f183a82017-02-28 09:58:04 -070027367 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027368 }
27369
Mark Young0f183a82017-02-28 09:58:04 -070027370 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027371 {
27372 return ( sType == rhs.sType )
27373 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027374 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27375 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027376 }
27377
Mark Young0f183a82017-02-28 09:58:04 -070027378 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027379 {
27380 return !operator==( rhs );
27381 }
27382
27383 private:
27384 StructureType sType;
27385
27386 public:
27387 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027388 uint32_t physicalDeviceCount;
27389 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027390 };
Mark Young0f183a82017-02-28 09:58:04 -070027391 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027392
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027393#ifndef VULKAN_HPP_NO_SMART_HANDLE
27394 class InstanceDeleter;
27395 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27396#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27397
27398 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27400 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27401#ifndef VULKAN_HPP_NO_SMART_HANDLE
27402 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27403#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27405
27406#ifndef VULKAN_HPP_NO_SMART_HANDLE
27407 class InstanceDeleter
27408 {
27409 public:
27410 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27411 : m_allocator( allocator )
27412 {}
27413
27414 void operator()( Instance instance )
27415 {
27416 instance.destroy( m_allocator );
27417 }
27418
27419 private:
27420 Optional<const AllocationCallbacks> m_allocator;
27421 };
27422#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27423
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027424 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027425 {
27426 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27427 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027428#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027429 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027430 {
27431 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027432 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 -060027433 return createResultValue( result, instance, "vk::createInstance" );
27434 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027435#ifndef VULKAN_HPP_NO_SMART_HANDLE
27436 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27437 {
27438 InstanceDeleter deleter( allocator );
27439 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27440 }
27441#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27443
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027444
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027445 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027446 {
27447 return "(void)";
27448 }
27449
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027450 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027451 {
27452 return "{}";
27453 }
27454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027455 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027456 {
27457 return "(void)";
27458 }
27459
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027460 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027461 {
27462 return "{}";
27463 }
27464
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027465 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027466 {
27467 return "(void)";
27468 }
27469
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027470 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027471 {
27472 return "{}";
27473 }
27474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027475 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027476 {
27477 return "(void)";
27478 }
27479
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027480 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027481 {
27482 return "{}";
27483 }
27484
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027485 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027486 {
27487 return "(void)";
27488 }
27489
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027490 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027491 {
27492 return "{}";
27493 }
27494
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027495 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027496 {
27497 return "(void)";
27498 }
27499
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027500 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027501 {
27502 return "{}";
27503 }
27504
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027505 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027506 {
27507 return "(void)";
27508 }
27509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027510 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027511 {
27512 return "{}";
27513 }
27514
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027515 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027516 {
27517 return "(void)";
27518 }
27519
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027520 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027521 {
27522 return "{}";
27523 }
27524
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027525 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027526 {
27527 return "(void)";
27528 }
27529
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027530 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027531 {
27532 return "{}";
27533 }
27534
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027535 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027536 {
27537 return "(void)";
27538 }
27539
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027540 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027541 {
27542 return "{}";
27543 }
27544
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027545 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027546 {
27547 return "(void)";
27548 }
27549
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027550 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027551 {
27552 return "{}";
27553 }
27554
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027555 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027556 {
27557 return "(void)";
27558 }
27559
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027560 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027561 {
27562 return "{}";
27563 }
27564
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027565 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027566 {
27567 return "(void)";
27568 }
27569
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027570 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027571 {
27572 return "{}";
27573 }
27574
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027575 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027576 {
27577 return "(void)";
27578 }
27579
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027580 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027581 {
27582 return "{}";
27583 }
27584
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027585 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027586 {
27587 return "(void)";
27588 }
27589
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027590 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027591 {
27592 return "{}";
27593 }
27594
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027595 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027596 {
27597 return "(void)";
27598 }
27599
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027600 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027601 {
27602 return "{}";
27603 }
27604
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027605 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027606 {
27607 return "(void)";
27608 }
27609
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027610 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027611 {
27612 return "{}";
27613 }
27614
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027615 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027616 {
27617 return "(void)";
27618 }
27619
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027620 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027621 {
27622 return "{}";
27623 }
27624
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027625 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027626 {
27627 return "(void)";
27628 }
27629
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027630 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027631 {
27632 return "{}";
27633 }
27634
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027635 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027636 {
27637 return "(void)";
27638 }
27639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027640 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027641 {
27642 return "{}";
27643 }
27644
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027645 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027646 {
27647 return "(void)";
27648 }
27649
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027650 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027651 {
27652 return "{}";
27653 }
27654
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027655 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027656 {
27657 return "(void)";
27658 }
27659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027660 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027661 {
27662 return "{}";
27663 }
27664
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027665 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027666 {
27667 return "(void)";
27668 }
27669
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027670 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027671 {
27672 return "{}";
27673 }
27674
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027675 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027676 {
27677 return "(void)";
27678 }
27679
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027680 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027681 {
27682 return "{}";
27683 }
27684
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027685 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027686 {
27687 return "(void)";
27688 }
27689
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027690 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027691 {
27692 return "{}";
27693 }
27694
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027695 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027696 {
27697 return "(void)";
27698 }
27699
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027700 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027701 {
27702 return "{}";
27703 }
27704
Mark Young0f183a82017-02-28 09:58:04 -070027705 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027706 {
27707 return "(void)";
27708 }
27709
Mark Young0f183a82017-02-28 09:58:04 -070027710 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027711 {
27712 return "{}";
27713 }
27714
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027715 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027716 {
27717 return "(void)";
27718 }
27719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027720 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027721 {
27722 return "{}";
27723 }
27724
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027725 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027726 {
27727 return "(void)";
27728 }
27729
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027730 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027731 {
27732 return "{}";
27733 }
27734
27735#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027736 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027737 {
27738 return "(void)";
27739 }
27740#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27741
27742#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027743 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027744 {
27745 return "{}";
27746 }
27747#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27748
27749#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027750 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027751 {
27752 return "(void)";
27753 }
27754#endif /*VK_USE_PLATFORM_MIR_KHR*/
27755
27756#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027757 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027758 {
27759 return "{}";
27760 }
27761#endif /*VK_USE_PLATFORM_MIR_KHR*/
27762
Mark Young39389872017-01-19 21:10:49 -070027763#ifdef VK_USE_PLATFORM_VI_NN
27764 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
27765 {
27766 return "(void)";
27767 }
27768#endif /*VK_USE_PLATFORM_VI_NN*/
27769
27770#ifdef VK_USE_PLATFORM_VI_NN
27771 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
27772 {
27773 return "{}";
27774 }
27775#endif /*VK_USE_PLATFORM_VI_NN*/
27776
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027777#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027778 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027779 {
27780 return "(void)";
27781 }
27782#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27783
27784#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027785 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027786 {
27787 return "{}";
27788 }
27789#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27790
27791#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027792 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027793 {
27794 return "(void)";
27795 }
27796#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27797
27798#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027799 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027800 {
27801 return "{}";
27802 }
27803#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27804
27805#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027806 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027807 {
27808 return "(void)";
27809 }
27810#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27811
27812#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027813 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027814 {
27815 return "{}";
27816 }
27817#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27818
27819#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027820 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027821 {
27822 return "(void)";
27823 }
27824#endif /*VK_USE_PLATFORM_XCB_KHR*/
27825
27826#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027827 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027828 {
27829 return "{}";
27830 }
27831#endif /*VK_USE_PLATFORM_XCB_KHR*/
27832
Mark Young0f183a82017-02-28 09:58:04 -070027833#ifdef VK_USE_PLATFORM_IOS_MVK
27834 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
27835 {
27836 return "(void)";
27837 }
27838#endif /*VK_USE_PLATFORM_IOS_MVK*/
27839
27840#ifdef VK_USE_PLATFORM_IOS_MVK
27841 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
27842 {
27843 return "{}";
27844 }
27845#endif /*VK_USE_PLATFORM_IOS_MVK*/
27846
27847#ifdef VK_USE_PLATFORM_MACOS_MVK
27848 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
27849 {
27850 return "(void)";
27851 }
27852#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27853
27854#ifdef VK_USE_PLATFORM_MACOS_MVK
27855 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
27856 {
27857 return "{}";
27858 }
27859#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27860
Mark Young39389872017-01-19 21:10:49 -070027861 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
27862 {
27863 return "(void)";
27864 }
27865
27866 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
27867 {
27868 return "{}";
27869 }
27870
Mark Young0f183a82017-02-28 09:58:04 -070027871 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
27872 {
27873 return "(void)";
27874 }
27875
27876 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
27877 {
27878 return "{}";
27879 }
27880
27881 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
27882 {
27883 return "(void)";
27884 }
27885
27886 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
27887 {
27888 return "{}";
27889 }
27890
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027891 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027892 {
27893 switch (value)
27894 {
27895 case ImageLayout::eUndefined: return "Undefined";
27896 case ImageLayout::eGeneral: return "General";
27897 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
27898 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
27899 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
27900 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
27901 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
27902 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
27903 case ImageLayout::ePreinitialized: return "Preinitialized";
27904 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
27905 default: return "invalid";
27906 }
27907 }
27908
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027909 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027910 {
27911 switch (value)
27912 {
27913 case AttachmentLoadOp::eLoad: return "Load";
27914 case AttachmentLoadOp::eClear: return "Clear";
27915 case AttachmentLoadOp::eDontCare: return "DontCare";
27916 default: return "invalid";
27917 }
27918 }
27919
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027920 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027921 {
27922 switch (value)
27923 {
27924 case AttachmentStoreOp::eStore: return "Store";
27925 case AttachmentStoreOp::eDontCare: return "DontCare";
27926 default: return "invalid";
27927 }
27928 }
27929
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027930 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027931 {
27932 switch (value)
27933 {
27934 case ImageType::e1D: return "1D";
27935 case ImageType::e2D: return "2D";
27936 case ImageType::e3D: return "3D";
27937 default: return "invalid";
27938 }
27939 }
27940
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027941 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027942 {
27943 switch (value)
27944 {
27945 case ImageTiling::eOptimal: return "Optimal";
27946 case ImageTiling::eLinear: return "Linear";
27947 default: return "invalid";
27948 }
27949 }
27950
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027951 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027952 {
27953 switch (value)
27954 {
27955 case ImageViewType::e1D: return "1D";
27956 case ImageViewType::e2D: return "2D";
27957 case ImageViewType::e3D: return "3D";
27958 case ImageViewType::eCube: return "Cube";
27959 case ImageViewType::e1DArray: return "1DArray";
27960 case ImageViewType::e2DArray: return "2DArray";
27961 case ImageViewType::eCubeArray: return "CubeArray";
27962 default: return "invalid";
27963 }
27964 }
27965
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027966 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027967 {
27968 switch (value)
27969 {
27970 case CommandBufferLevel::ePrimary: return "Primary";
27971 case CommandBufferLevel::eSecondary: return "Secondary";
27972 default: return "invalid";
27973 }
27974 }
27975
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027976 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027977 {
27978 switch (value)
27979 {
27980 case ComponentSwizzle::eIdentity: return "Identity";
27981 case ComponentSwizzle::eZero: return "Zero";
27982 case ComponentSwizzle::eOne: return "One";
27983 case ComponentSwizzle::eR: return "R";
27984 case ComponentSwizzle::eG: return "G";
27985 case ComponentSwizzle::eB: return "B";
27986 case ComponentSwizzle::eA: return "A";
27987 default: return "invalid";
27988 }
27989 }
27990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027991 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027992 {
27993 switch (value)
27994 {
27995 case DescriptorType::eSampler: return "Sampler";
27996 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
27997 case DescriptorType::eSampledImage: return "SampledImage";
27998 case DescriptorType::eStorageImage: return "StorageImage";
27999 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28000 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28001 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28002 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28003 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28004 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28005 case DescriptorType::eInputAttachment: return "InputAttachment";
28006 default: return "invalid";
28007 }
28008 }
28009
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028010 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028011 {
28012 switch (value)
28013 {
28014 case QueryType::eOcclusion: return "Occlusion";
28015 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28016 case QueryType::eTimestamp: return "Timestamp";
28017 default: return "invalid";
28018 }
28019 }
28020
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028021 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028022 {
28023 switch (value)
28024 {
28025 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28026 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28027 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28028 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28029 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28030 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28031 default: return "invalid";
28032 }
28033 }
28034
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028035 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028036 {
28037 switch (value)
28038 {
28039 case PipelineBindPoint::eGraphics: return "Graphics";
28040 case PipelineBindPoint::eCompute: return "Compute";
28041 default: return "invalid";
28042 }
28043 }
28044
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028045 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028046 {
28047 switch (value)
28048 {
28049 case PipelineCacheHeaderVersion::eOne: return "One";
28050 default: return "invalid";
28051 }
28052 }
28053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028054 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028055 {
28056 switch (value)
28057 {
28058 case PrimitiveTopology::ePointList: return "PointList";
28059 case PrimitiveTopology::eLineList: return "LineList";
28060 case PrimitiveTopology::eLineStrip: return "LineStrip";
28061 case PrimitiveTopology::eTriangleList: return "TriangleList";
28062 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28063 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28064 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28065 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28066 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28067 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28068 case PrimitiveTopology::ePatchList: return "PatchList";
28069 default: return "invalid";
28070 }
28071 }
28072
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028073 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028074 {
28075 switch (value)
28076 {
28077 case SharingMode::eExclusive: return "Exclusive";
28078 case SharingMode::eConcurrent: return "Concurrent";
28079 default: return "invalid";
28080 }
28081 }
28082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028083 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028084 {
28085 switch (value)
28086 {
28087 case IndexType::eUint16: return "Uint16";
28088 case IndexType::eUint32: return "Uint32";
28089 default: return "invalid";
28090 }
28091 }
28092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028093 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028094 {
28095 switch (value)
28096 {
28097 case Filter::eNearest: return "Nearest";
28098 case Filter::eLinear: return "Linear";
28099 case Filter::eCubicIMG: return "CubicIMG";
28100 default: return "invalid";
28101 }
28102 }
28103
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028104 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028105 {
28106 switch (value)
28107 {
28108 case SamplerMipmapMode::eNearest: return "Nearest";
28109 case SamplerMipmapMode::eLinear: return "Linear";
28110 default: return "invalid";
28111 }
28112 }
28113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028114 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028115 {
28116 switch (value)
28117 {
28118 case SamplerAddressMode::eRepeat: return "Repeat";
28119 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28120 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28121 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28122 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28123 default: return "invalid";
28124 }
28125 }
28126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028127 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028128 {
28129 switch (value)
28130 {
28131 case CompareOp::eNever: return "Never";
28132 case CompareOp::eLess: return "Less";
28133 case CompareOp::eEqual: return "Equal";
28134 case CompareOp::eLessOrEqual: return "LessOrEqual";
28135 case CompareOp::eGreater: return "Greater";
28136 case CompareOp::eNotEqual: return "NotEqual";
28137 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28138 case CompareOp::eAlways: return "Always";
28139 default: return "invalid";
28140 }
28141 }
28142
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028143 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028144 {
28145 switch (value)
28146 {
28147 case PolygonMode::eFill: return "Fill";
28148 case PolygonMode::eLine: return "Line";
28149 case PolygonMode::ePoint: return "Point";
28150 default: return "invalid";
28151 }
28152 }
28153
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028154 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028155 {
28156 switch (value)
28157 {
28158 case CullModeFlagBits::eNone: return "None";
28159 case CullModeFlagBits::eFront: return "Front";
28160 case CullModeFlagBits::eBack: return "Back";
28161 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28162 default: return "invalid";
28163 }
28164 }
28165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028166 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028167 {
28168 if (!value) return "{}";
28169 std::string result;
28170 if (value & CullModeFlagBits::eNone) result += "None | ";
28171 if (value & CullModeFlagBits::eFront) result += "Front | ";
28172 if (value & CullModeFlagBits::eBack) result += "Back | ";
28173 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28174 return "{" + result.substr(0, result.size() - 3) + "}";
28175 }
28176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028177 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028178 {
28179 switch (value)
28180 {
28181 case FrontFace::eCounterClockwise: return "CounterClockwise";
28182 case FrontFace::eClockwise: return "Clockwise";
28183 default: return "invalid";
28184 }
28185 }
28186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028187 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028188 {
28189 switch (value)
28190 {
28191 case BlendFactor::eZero: return "Zero";
28192 case BlendFactor::eOne: return "One";
28193 case BlendFactor::eSrcColor: return "SrcColor";
28194 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28195 case BlendFactor::eDstColor: return "DstColor";
28196 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28197 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28198 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28199 case BlendFactor::eDstAlpha: return "DstAlpha";
28200 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28201 case BlendFactor::eConstantColor: return "ConstantColor";
28202 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28203 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28204 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28205 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28206 case BlendFactor::eSrc1Color: return "Src1Color";
28207 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28208 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28209 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28210 default: return "invalid";
28211 }
28212 }
28213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028214 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028215 {
28216 switch (value)
28217 {
28218 case BlendOp::eAdd: return "Add";
28219 case BlendOp::eSubtract: return "Subtract";
28220 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28221 case BlendOp::eMin: return "Min";
28222 case BlendOp::eMax: return "Max";
28223 default: return "invalid";
28224 }
28225 }
28226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028227 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028228 {
28229 switch (value)
28230 {
28231 case StencilOp::eKeep: return "Keep";
28232 case StencilOp::eZero: return "Zero";
28233 case StencilOp::eReplace: return "Replace";
28234 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28235 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28236 case StencilOp::eInvert: return "Invert";
28237 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28238 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28239 default: return "invalid";
28240 }
28241 }
28242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028243 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028244 {
28245 switch (value)
28246 {
28247 case LogicOp::eClear: return "Clear";
28248 case LogicOp::eAnd: return "And";
28249 case LogicOp::eAndReverse: return "AndReverse";
28250 case LogicOp::eCopy: return "Copy";
28251 case LogicOp::eAndInverted: return "AndInverted";
28252 case LogicOp::eNoOp: return "NoOp";
28253 case LogicOp::eXor: return "Xor";
28254 case LogicOp::eOr: return "Or";
28255 case LogicOp::eNor: return "Nor";
28256 case LogicOp::eEquivalent: return "Equivalent";
28257 case LogicOp::eInvert: return "Invert";
28258 case LogicOp::eOrReverse: return "OrReverse";
28259 case LogicOp::eCopyInverted: return "CopyInverted";
28260 case LogicOp::eOrInverted: return "OrInverted";
28261 case LogicOp::eNand: return "Nand";
28262 case LogicOp::eSet: return "Set";
28263 default: return "invalid";
28264 }
28265 }
28266
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028267 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028268 {
28269 switch (value)
28270 {
28271 case InternalAllocationType::eExecutable: return "Executable";
28272 default: return "invalid";
28273 }
28274 }
28275
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028276 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028277 {
28278 switch (value)
28279 {
28280 case SystemAllocationScope::eCommand: return "Command";
28281 case SystemAllocationScope::eObject: return "Object";
28282 case SystemAllocationScope::eCache: return "Cache";
28283 case SystemAllocationScope::eDevice: return "Device";
28284 case SystemAllocationScope::eInstance: return "Instance";
28285 default: return "invalid";
28286 }
28287 }
28288
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028289 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028290 {
28291 switch (value)
28292 {
28293 case PhysicalDeviceType::eOther: return "Other";
28294 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28295 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28296 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28297 case PhysicalDeviceType::eCpu: return "Cpu";
28298 default: return "invalid";
28299 }
28300 }
28301
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028302 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028303 {
28304 switch (value)
28305 {
28306 case VertexInputRate::eVertex: return "Vertex";
28307 case VertexInputRate::eInstance: return "Instance";
28308 default: return "invalid";
28309 }
28310 }
28311
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028312 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028313 {
28314 switch (value)
28315 {
28316 case Format::eUndefined: return "Undefined";
28317 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28318 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28319 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28320 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28321 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28322 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28323 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28324 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28325 case Format::eR8Unorm: return "R8Unorm";
28326 case Format::eR8Snorm: return "R8Snorm";
28327 case Format::eR8Uscaled: return "R8Uscaled";
28328 case Format::eR8Sscaled: return "R8Sscaled";
28329 case Format::eR8Uint: return "R8Uint";
28330 case Format::eR8Sint: return "R8Sint";
28331 case Format::eR8Srgb: return "R8Srgb";
28332 case Format::eR8G8Unorm: return "R8G8Unorm";
28333 case Format::eR8G8Snorm: return "R8G8Snorm";
28334 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28335 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28336 case Format::eR8G8Uint: return "R8G8Uint";
28337 case Format::eR8G8Sint: return "R8G8Sint";
28338 case Format::eR8G8Srgb: return "R8G8Srgb";
28339 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28340 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28341 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28342 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28343 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28344 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28345 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28346 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28347 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28348 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28349 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28350 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28351 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28352 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28353 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28354 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28355 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28356 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28357 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28358 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28359 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28360 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28361 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28362 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28363 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28364 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28365 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28366 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28367 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28368 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28369 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28370 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28371 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28372 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28373 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28374 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28375 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28376 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28377 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28378 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28379 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28380 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28381 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28382 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28383 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28384 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28385 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28386 case Format::eR16Unorm: return "R16Unorm";
28387 case Format::eR16Snorm: return "R16Snorm";
28388 case Format::eR16Uscaled: return "R16Uscaled";
28389 case Format::eR16Sscaled: return "R16Sscaled";
28390 case Format::eR16Uint: return "R16Uint";
28391 case Format::eR16Sint: return "R16Sint";
28392 case Format::eR16Sfloat: return "R16Sfloat";
28393 case Format::eR16G16Unorm: return "R16G16Unorm";
28394 case Format::eR16G16Snorm: return "R16G16Snorm";
28395 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28396 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28397 case Format::eR16G16Uint: return "R16G16Uint";
28398 case Format::eR16G16Sint: return "R16G16Sint";
28399 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28400 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28401 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28402 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28403 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28404 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28405 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28406 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28407 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28408 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28409 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28410 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28411 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28412 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28413 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28414 case Format::eR32Uint: return "R32Uint";
28415 case Format::eR32Sint: return "R32Sint";
28416 case Format::eR32Sfloat: return "R32Sfloat";
28417 case Format::eR32G32Uint: return "R32G32Uint";
28418 case Format::eR32G32Sint: return "R32G32Sint";
28419 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28420 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28421 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28422 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28423 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28424 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28425 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28426 case Format::eR64Uint: return "R64Uint";
28427 case Format::eR64Sint: return "R64Sint";
28428 case Format::eR64Sfloat: return "R64Sfloat";
28429 case Format::eR64G64Uint: return "R64G64Uint";
28430 case Format::eR64G64Sint: return "R64G64Sint";
28431 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28432 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28433 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28434 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28435 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28436 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28437 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28438 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28439 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28440 case Format::eD16Unorm: return "D16Unorm";
28441 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28442 case Format::eD32Sfloat: return "D32Sfloat";
28443 case Format::eS8Uint: return "S8Uint";
28444 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28445 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28446 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28447 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28448 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28449 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28450 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28451 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28452 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28453 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28454 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28455 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28456 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28457 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28458 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28459 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28460 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28461 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28462 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28463 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28464 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28465 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28466 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28467 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28468 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28469 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28470 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28471 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28472 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28473 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28474 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28475 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28476 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28477 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28478 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28479 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28480 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28481 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28482 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28483 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28484 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28485 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28486 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28487 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28488 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28489 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28490 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28491 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28492 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28493 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28494 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28495 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28496 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28497 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28498 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28499 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28500 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028501 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28502 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28503 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28504 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28505 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28506 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28507 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28508 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028509 default: return "invalid";
28510 }
28511 }
28512
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028513 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028514 {
28515 switch (value)
28516 {
28517 case StructureType::eApplicationInfo: return "ApplicationInfo";
28518 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28519 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28520 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28521 case StructureType::eSubmitInfo: return "SubmitInfo";
28522 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28523 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28524 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28525 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28526 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28527 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28528 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28529 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28530 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28531 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28532 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28533 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28534 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28535 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28536 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28537 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28538 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28539 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28540 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28541 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28542 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28543 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28544 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28545 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28546 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28547 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28548 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28549 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28550 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28551 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28552 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28553 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28554 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28555 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28556 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28557 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28558 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28559 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28560 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28561 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28562 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28563 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28564 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28565 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28566 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28567 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28568 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28569 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28570 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28571 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28572 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28573 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28574 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28575 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28576 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28577 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28578 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28579 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28580 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28581 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28582 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28583 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28584 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070028585 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28586 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28587 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028588 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28589 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28590 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28591 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28592 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028593 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28594 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28595 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28596 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28597 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28598 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
28599 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
28600 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
28601 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070028602 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
28603 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
28604 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
28605 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
28606 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
28607 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
28608 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
28609 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
28610 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
28611 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
28612 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
28613 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
28614 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060028615 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070028616 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070028617 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
28618 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
28619 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
28620 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
28621 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
28622 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
28623 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060028624 case StructureType::ePhysicalDeviceProperties2KHX: return "PhysicalDeviceProperties2KHX";
28625 case StructureType::eImageFormatProperties2KHX: return "ImageFormatProperties2KHX";
28626 case StructureType::ePhysicalDeviceImageFormatInfo2KHX: return "PhysicalDeviceImageFormatInfo2KHX";
Mark Young0f183a82017-02-28 09:58:04 -070028627 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
28628 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
28629 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
28630 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
28631 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
28632 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
28633 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
28634 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
28635 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
28636 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
28637 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
28638 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
28639 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
28640 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
28641 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
28642 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
28643 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
28644 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028645 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
28646 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
28647 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
28648 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
28649 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
28650 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070028651 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028652 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
28653 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
28654 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
28655 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
28656 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028657 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070028658 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
28659 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
28660 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
28661 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028662 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Young0f183a82017-02-28 09:58:04 -070028663 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
28664 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028665 default: return "invalid";
28666 }
28667 }
28668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028669 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028670 {
28671 switch (value)
28672 {
28673 case SubpassContents::eInline: return "Inline";
28674 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
28675 default: return "invalid";
28676 }
28677 }
28678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028679 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028680 {
28681 switch (value)
28682 {
28683 case DynamicState::eViewport: return "Viewport";
28684 case DynamicState::eScissor: return "Scissor";
28685 case DynamicState::eLineWidth: return "LineWidth";
28686 case DynamicState::eDepthBias: return "DepthBias";
28687 case DynamicState::eBlendConstants: return "BlendConstants";
28688 case DynamicState::eDepthBounds: return "DepthBounds";
28689 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
28690 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
28691 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070028692 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
28693 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
28694 default: return "invalid";
28695 }
28696 }
28697
28698 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
28699 {
28700 switch (value)
28701 {
28702 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
28703 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028704 default: return "invalid";
28705 }
28706 }
28707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028708 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028709 {
28710 switch (value)
28711 {
28712 case QueueFlagBits::eGraphics: return "Graphics";
28713 case QueueFlagBits::eCompute: return "Compute";
28714 case QueueFlagBits::eTransfer: return "Transfer";
28715 case QueueFlagBits::eSparseBinding: return "SparseBinding";
28716 default: return "invalid";
28717 }
28718 }
28719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028720 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028721 {
28722 if (!value) return "{}";
28723 std::string result;
28724 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
28725 if (value & QueueFlagBits::eCompute) result += "Compute | ";
28726 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
28727 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
28728 return "{" + result.substr(0, result.size() - 3) + "}";
28729 }
28730
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028731 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028732 {
28733 switch (value)
28734 {
28735 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
28736 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
28737 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
28738 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
28739 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
28740 default: return "invalid";
28741 }
28742 }
28743
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028744 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028745 {
28746 if (!value) return "{}";
28747 std::string result;
28748 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
28749 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
28750 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
28751 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
28752 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
28753 return "{" + result.substr(0, result.size() - 3) + "}";
28754 }
28755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028756 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028757 {
28758 switch (value)
28759 {
28760 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070028761 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028762 default: return "invalid";
28763 }
28764 }
28765
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028766 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028767 {
28768 if (!value) return "{}";
28769 std::string result;
28770 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070028771 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028772 return "{" + result.substr(0, result.size() - 3) + "}";
28773 }
28774
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028775 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028776 {
28777 switch (value)
28778 {
28779 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
28780 case AccessFlagBits::eIndexRead: return "IndexRead";
28781 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
28782 case AccessFlagBits::eUniformRead: return "UniformRead";
28783 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
28784 case AccessFlagBits::eShaderRead: return "ShaderRead";
28785 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
28786 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
28787 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
28788 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
28789 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
28790 case AccessFlagBits::eTransferRead: return "TransferRead";
28791 case AccessFlagBits::eTransferWrite: return "TransferWrite";
28792 case AccessFlagBits::eHostRead: return "HostRead";
28793 case AccessFlagBits::eHostWrite: return "HostWrite";
28794 case AccessFlagBits::eMemoryRead: return "MemoryRead";
28795 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028796 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
28797 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028798 default: return "invalid";
28799 }
28800 }
28801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028802 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028803 {
28804 if (!value) return "{}";
28805 std::string result;
28806 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
28807 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
28808 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
28809 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
28810 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
28811 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
28812 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
28813 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
28814 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
28815 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
28816 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
28817 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
28818 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
28819 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
28820 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
28821 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
28822 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028823 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
28824 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028825 return "{" + result.substr(0, result.size() - 3) + "}";
28826 }
28827
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028828 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028829 {
28830 switch (value)
28831 {
28832 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
28833 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
28834 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
28835 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
28836 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
28837 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
28838 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
28839 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
28840 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
28841 default: return "invalid";
28842 }
28843 }
28844
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028845 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028846 {
28847 if (!value) return "{}";
28848 std::string result;
28849 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28850 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
28851 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
28852 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
28853 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
28854 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
28855 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
28856 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
28857 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
28858 return "{" + result.substr(0, result.size() - 3) + "}";
28859 }
28860
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028861 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028862 {
28863 switch (value)
28864 {
28865 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
28866 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
28867 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
28868 default: return "invalid";
28869 }
28870 }
28871
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028872 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028873 {
28874 if (!value) return "{}";
28875 std::string result;
28876 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28877 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28878 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28879 return "{" + result.substr(0, result.size() - 3) + "}";
28880 }
28881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028882 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028883 {
28884 switch (value)
28885 {
28886 case ShaderStageFlagBits::eVertex: return "Vertex";
28887 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
28888 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
28889 case ShaderStageFlagBits::eGeometry: return "Geometry";
28890 case ShaderStageFlagBits::eFragment: return "Fragment";
28891 case ShaderStageFlagBits::eCompute: return "Compute";
28892 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
28893 case ShaderStageFlagBits::eAll: return "All";
28894 default: return "invalid";
28895 }
28896 }
28897
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028898 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028899 {
28900 if (!value) return "{}";
28901 std::string result;
28902 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
28903 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
28904 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
28905 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
28906 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
28907 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
28908 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
28909 if (value & ShaderStageFlagBits::eAll) result += "All | ";
28910 return "{" + result.substr(0, result.size() - 3) + "}";
28911 }
28912
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028913 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028914 {
28915 switch (value)
28916 {
28917 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
28918 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
28919 case ImageUsageFlagBits::eSampled: return "Sampled";
28920 case ImageUsageFlagBits::eStorage: return "Storage";
28921 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
28922 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
28923 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
28924 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
28925 default: return "invalid";
28926 }
28927 }
28928
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028929 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028930 {
28931 if (!value) return "{}";
28932 std::string result;
28933 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28934 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
28935 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
28936 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
28937 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
28938 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
28939 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
28940 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
28941 return "{" + result.substr(0, result.size() - 3) + "}";
28942 }
28943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028944 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028945 {
28946 switch (value)
28947 {
28948 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
28949 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
28950 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
28951 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
28952 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070028953 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070028954 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028955 default: return "invalid";
28956 }
28957 }
28958
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028959 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028960 {
28961 if (!value) return "{}";
28962 std::string result;
28963 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28964 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28965 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28966 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
28967 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070028968 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070028969 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028970 return "{" + result.substr(0, result.size() - 3) + "}";
28971 }
28972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028973 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028974 {
28975 switch (value)
28976 {
28977 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
28978 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
28979 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070028980 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
28981 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028982 default: return "invalid";
28983 }
28984 }
28985
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028986 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028987 {
28988 if (!value) return "{}";
28989 std::string result;
28990 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
28991 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
28992 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070028993 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
28994 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028995 return "{" + result.substr(0, result.size() - 3) + "}";
28996 }
28997
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028998 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028999 {
29000 switch (value)
29001 {
29002 case ColorComponentFlagBits::eR: return "R";
29003 case ColorComponentFlagBits::eG: return "G";
29004 case ColorComponentFlagBits::eB: return "B";
29005 case ColorComponentFlagBits::eA: return "A";
29006 default: return "invalid";
29007 }
29008 }
29009
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029010 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029011 {
29012 if (!value) return "{}";
29013 std::string result;
29014 if (value & ColorComponentFlagBits::eR) result += "R | ";
29015 if (value & ColorComponentFlagBits::eG) result += "G | ";
29016 if (value & ColorComponentFlagBits::eB) result += "B | ";
29017 if (value & ColorComponentFlagBits::eA) result += "A | ";
29018 return "{" + result.substr(0, result.size() - 3) + "}";
29019 }
29020
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029021 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029022 {
29023 switch (value)
29024 {
29025 case FenceCreateFlagBits::eSignaled: return "Signaled";
29026 default: return "invalid";
29027 }
29028 }
29029
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029030 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029031 {
29032 if (!value) return "{}";
29033 std::string result;
29034 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29035 return "{" + result.substr(0, result.size() - 3) + "}";
29036 }
29037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029038 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029039 {
29040 switch (value)
29041 {
29042 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29043 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29044 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29045 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29046 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29047 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29048 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29049 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29050 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29051 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29052 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29053 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29054 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29055 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029056 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29057 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029058 default: return "invalid";
29059 }
29060 }
29061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029062 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029063 {
29064 if (!value) return "{}";
29065 std::string result;
29066 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29067 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29068 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29069 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29070 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29071 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29072 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29073 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29074 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29075 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29076 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29077 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29078 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29079 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029080 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29081 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029082 return "{" + result.substr(0, result.size() - 3) + "}";
29083 }
29084
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029085 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029086 {
29087 switch (value)
29088 {
29089 case QueryControlFlagBits::ePrecise: return "Precise";
29090 default: return "invalid";
29091 }
29092 }
29093
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029094 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029095 {
29096 if (!value) return "{}";
29097 std::string result;
29098 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29099 return "{" + result.substr(0, result.size() - 3) + "}";
29100 }
29101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029102 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029103 {
29104 switch (value)
29105 {
29106 case QueryResultFlagBits::e64: return "64";
29107 case QueryResultFlagBits::eWait: return "Wait";
29108 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29109 case QueryResultFlagBits::ePartial: return "Partial";
29110 default: return "invalid";
29111 }
29112 }
29113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029114 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029115 {
29116 if (!value) return "{}";
29117 std::string result;
29118 if (value & QueryResultFlagBits::e64) result += "64 | ";
29119 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29120 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29121 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29122 return "{" + result.substr(0, result.size() - 3) + "}";
29123 }
29124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029125 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029126 {
29127 switch (value)
29128 {
29129 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29130 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29131 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29132 default: return "invalid";
29133 }
29134 }
29135
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029136 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029137 {
29138 if (!value) return "{}";
29139 std::string result;
29140 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29141 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29142 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29143 return "{" + result.substr(0, result.size() - 3) + "}";
29144 }
29145
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029146 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029147 {
29148 switch (value)
29149 {
29150 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29151 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29152 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29153 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29154 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29155 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29156 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29157 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29158 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29159 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29160 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29161 default: return "invalid";
29162 }
29163 }
29164
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029165 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029166 {
29167 if (!value) return "{}";
29168 std::string result;
29169 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29170 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29171 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29172 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29173 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29174 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29175 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29176 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29177 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29178 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29179 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29180 return "{" + result.substr(0, result.size() - 3) + "}";
29181 }
29182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029183 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029184 {
29185 switch (value)
29186 {
29187 case ImageAspectFlagBits::eColor: return "Color";
29188 case ImageAspectFlagBits::eDepth: return "Depth";
29189 case ImageAspectFlagBits::eStencil: return "Stencil";
29190 case ImageAspectFlagBits::eMetadata: return "Metadata";
29191 default: return "invalid";
29192 }
29193 }
29194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029195 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029196 {
29197 if (!value) return "{}";
29198 std::string result;
29199 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29200 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29201 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29202 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29203 return "{" + result.substr(0, result.size() - 3) + "}";
29204 }
29205
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029206 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029207 {
29208 switch (value)
29209 {
29210 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29211 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29212 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29213 default: return "invalid";
29214 }
29215 }
29216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029217 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029218 {
29219 if (!value) return "{}";
29220 std::string result;
29221 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29222 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29223 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29224 return "{" + result.substr(0, result.size() - 3) + "}";
29225 }
29226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029227 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029228 {
29229 switch (value)
29230 {
29231 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29232 default: return "invalid";
29233 }
29234 }
29235
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029236 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029237 {
29238 if (!value) return "{}";
29239 std::string result;
29240 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29241 return "{" + result.substr(0, result.size() - 3) + "}";
29242 }
29243
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029244 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029245 {
29246 switch (value)
29247 {
29248 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29249 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29250 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29251 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29252 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29253 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29254 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29255 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29256 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29257 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29258 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29259 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29260 case PipelineStageFlagBits::eTransfer: return "Transfer";
29261 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29262 case PipelineStageFlagBits::eHost: return "Host";
29263 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29264 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029265 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029266 default: return "invalid";
29267 }
29268 }
29269
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029270 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029271 {
29272 if (!value) return "{}";
29273 std::string result;
29274 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29275 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29276 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29277 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29278 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29279 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29280 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29281 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29282 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29283 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29284 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29285 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29286 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29287 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29288 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29289 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29290 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029291 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029292 return "{" + result.substr(0, result.size() - 3) + "}";
29293 }
29294
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029295 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029296 {
29297 switch (value)
29298 {
29299 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29300 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29301 default: return "invalid";
29302 }
29303 }
29304
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029305 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029306 {
29307 if (!value) return "{}";
29308 std::string result;
29309 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29310 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29311 return "{" + result.substr(0, result.size() - 3) + "}";
29312 }
29313
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029314 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029315 {
29316 switch (value)
29317 {
29318 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29319 default: return "invalid";
29320 }
29321 }
29322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029323 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029324 {
29325 if (!value) return "{}";
29326 std::string result;
29327 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29328 return "{" + result.substr(0, result.size() - 3) + "}";
29329 }
29330
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029331 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029332 {
29333 switch (value)
29334 {
29335 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29336 default: return "invalid";
29337 }
29338 }
29339
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029340 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029341 {
29342 if (!value) return "{}";
29343 std::string result;
29344 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29345 return "{" + result.substr(0, result.size() - 3) + "}";
29346 }
29347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029348 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029349 {
29350 switch (value)
29351 {
29352 case SampleCountFlagBits::e1: return "1";
29353 case SampleCountFlagBits::e2: return "2";
29354 case SampleCountFlagBits::e4: return "4";
29355 case SampleCountFlagBits::e8: return "8";
29356 case SampleCountFlagBits::e16: return "16";
29357 case SampleCountFlagBits::e32: return "32";
29358 case SampleCountFlagBits::e64: return "64";
29359 default: return "invalid";
29360 }
29361 }
29362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029363 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029364 {
29365 if (!value) return "{}";
29366 std::string result;
29367 if (value & SampleCountFlagBits::e1) result += "1 | ";
29368 if (value & SampleCountFlagBits::e2) result += "2 | ";
29369 if (value & SampleCountFlagBits::e4) result += "4 | ";
29370 if (value & SampleCountFlagBits::e8) result += "8 | ";
29371 if (value & SampleCountFlagBits::e16) result += "16 | ";
29372 if (value & SampleCountFlagBits::e32) result += "32 | ";
29373 if (value & SampleCountFlagBits::e64) result += "64 | ";
29374 return "{" + result.substr(0, result.size() - 3) + "}";
29375 }
29376
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029377 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029378 {
29379 switch (value)
29380 {
29381 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29382 default: return "invalid";
29383 }
29384 }
29385
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029386 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029387 {
29388 if (!value) return "{}";
29389 std::string result;
29390 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29391 return "{" + result.substr(0, result.size() - 3) + "}";
29392 }
29393
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029394 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029395 {
29396 switch (value)
29397 {
29398 case StencilFaceFlagBits::eFront: return "Front";
29399 case StencilFaceFlagBits::eBack: return "Back";
29400 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29401 default: return "invalid";
29402 }
29403 }
29404
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029405 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029406 {
29407 if (!value) return "{}";
29408 std::string result;
29409 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29410 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29411 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29412 return "{" + result.substr(0, result.size() - 3) + "}";
29413 }
29414
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029415 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029416 {
29417 switch (value)
29418 {
29419 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29420 default: return "invalid";
29421 }
29422 }
29423
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029424 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029425 {
29426 if (!value) return "{}";
29427 std::string result;
29428 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29429 return "{" + result.substr(0, result.size() - 3) + "}";
29430 }
29431
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029432 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029433 {
29434 switch (value)
29435 {
29436 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029437 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29438 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029439 default: return "invalid";
29440 }
29441 }
29442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029443 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029444 {
29445 if (!value) return "{}";
29446 std::string result;
29447 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029448 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29449 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029450 return "{" + result.substr(0, result.size() - 3) + "}";
29451 }
29452
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029453 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029454 {
29455 switch (value)
29456 {
29457 case PresentModeKHR::eImmediate: return "Immediate";
29458 case PresentModeKHR::eMailbox: return "Mailbox";
29459 case PresentModeKHR::eFifo: return "Fifo";
29460 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
29461 default: return "invalid";
29462 }
29463 }
29464
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029465 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029466 {
29467 switch (value)
29468 {
29469 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029470 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
29471 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
29472 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
29473 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
29474 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
29475 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
29476 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
29477 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
29478 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
29479 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
29480 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
29481 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
29482 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029483 default: return "invalid";
29484 }
29485 }
29486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029487 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029488 {
29489 switch (value)
29490 {
29491 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29492 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29493 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29494 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29495 default: return "invalid";
29496 }
29497 }
29498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029499 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029500 {
29501 if (!value) return "{}";
29502 std::string result;
29503 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29504 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29505 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29506 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29507 return "{" + result.substr(0, result.size() - 3) + "}";
29508 }
29509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029510 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029511 {
29512 switch (value)
29513 {
29514 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29515 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29516 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29517 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29518 default: return "invalid";
29519 }
29520 }
29521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029522 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029523 {
29524 if (!value) return "{}";
29525 std::string result;
29526 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29527 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29528 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29529 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29530 return "{" + result.substr(0, result.size() - 3) + "}";
29531 }
29532
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029533 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029534 {
29535 switch (value)
29536 {
29537 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29538 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29539 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29540 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29541 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29542 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29543 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29544 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29545 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29546 default: return "invalid";
29547 }
29548 }
29549
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029550 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029551 {
29552 if (!value) return "{}";
29553 std::string result;
29554 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
29555 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
29556 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
29557 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
29558 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
29559 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
29560 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
29561 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
29562 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
29563 return "{" + result.substr(0, result.size() - 3) + "}";
29564 }
29565
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029566 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029567 {
29568 switch (value)
29569 {
29570 case DebugReportFlagBitsEXT::eInformation: return "Information";
29571 case DebugReportFlagBitsEXT::eWarning: return "Warning";
29572 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
29573 case DebugReportFlagBitsEXT::eError: return "Error";
29574 case DebugReportFlagBitsEXT::eDebug: return "Debug";
29575 default: return "invalid";
29576 }
29577 }
29578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029579 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029580 {
29581 if (!value) return "{}";
29582 std::string result;
29583 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
29584 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
29585 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
29586 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
29587 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
29588 return "{" + result.substr(0, result.size() - 3) + "}";
29589 }
29590
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029591 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029592 {
29593 switch (value)
29594 {
29595 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
29596 case DebugReportObjectTypeEXT::eInstance: return "Instance";
29597 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
29598 case DebugReportObjectTypeEXT::eDevice: return "Device";
29599 case DebugReportObjectTypeEXT::eQueue: return "Queue";
29600 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
29601 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
29602 case DebugReportObjectTypeEXT::eFence: return "Fence";
29603 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
29604 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
29605 case DebugReportObjectTypeEXT::eImage: return "Image";
29606 case DebugReportObjectTypeEXT::eEvent: return "Event";
29607 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
29608 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
29609 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
29610 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
29611 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
29612 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
29613 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
29614 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
29615 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
29616 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
29617 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
29618 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
29619 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
29620 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
29621 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
29622 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
29623 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029624 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
29625 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
29626 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
29627 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029628 default: return "invalid";
29629 }
29630 }
29631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029632 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029633 {
29634 switch (value)
29635 {
29636 case DebugReportErrorEXT::eNone: return "None";
29637 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
29638 default: return "invalid";
29639 }
29640 }
29641
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029642 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029643 {
29644 switch (value)
29645 {
29646 case RasterizationOrderAMD::eStrict: return "Strict";
29647 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
29648 default: return "invalid";
29649 }
29650 }
29651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029652 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029653 {
29654 switch (value)
29655 {
29656 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
29657 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29658 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
29659 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
29660 default: return "invalid";
29661 }
29662 }
29663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029664 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029665 {
29666 if (!value) return "{}";
29667 std::string result;
29668 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
29669 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29670 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
29671 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
29672 return "{" + result.substr(0, result.size() - 3) + "}";
29673 }
29674
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029675 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029676 {
29677 switch (value)
29678 {
29679 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
29680 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
29681 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
29682 default: return "invalid";
29683 }
29684 }
29685
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029686 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029687 {
29688 if (!value) return "{}";
29689 std::string result;
29690 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
29691 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
29692 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
29693 return "{" + result.substr(0, result.size() - 3) + "}";
29694 }
29695
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029696 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060029697 {
29698 switch (value)
29699 {
29700 case ValidationCheckEXT::eAll: return "All";
29701 default: return "invalid";
29702 }
29703 }
29704
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029705 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
29706 {
29707 switch (value)
29708 {
29709 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
29710 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
29711 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
29712 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
29713 default: return "invalid";
29714 }
29715 }
29716
29717 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
29718 {
29719 if (!value) return "{}";
29720 std::string result;
29721 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
29722 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
29723 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
29724 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
29725 return "{" + result.substr(0, result.size() - 3) + "}";
29726 }
29727
29728 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
29729 {
29730 switch (value)
29731 {
29732 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
29733 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
29734 default: return "invalid";
29735 }
29736 }
29737
29738 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
29739 {
29740 if (!value) return "{}";
29741 std::string result;
29742 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
29743 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
29744 return "{" + result.substr(0, result.size() - 3) + "}";
29745 }
29746
29747 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
29748 {
29749 switch (value)
29750 {
29751 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
29752 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
29753 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
29754 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
29755 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
29756 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
29757 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
29758 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
29759 default: return "invalid";
29760 }
29761 }
29762
29763 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
29764 {
29765 switch (value)
29766 {
29767 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
29768 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
29769 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
29770 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
29771 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
29772 default: return "invalid";
29773 }
29774 }
29775
Mark Young0f183a82017-02-28 09:58:04 -070029776 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
29777 {
29778 switch (value)
29779 {
29780 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
29781 default: return "invalid";
29782 }
29783 }
29784
29785 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
29786 {
29787 if (!value) return "{}";
29788 std::string result;
29789 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
29790 return "{" + result.substr(0, result.size() - 3) + "}";
29791 }
29792
29793 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
29794 {
29795 switch (value)
29796 {
29797 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29798 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29799 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29800 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
29801 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
29802 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
29803 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
29804 default: return "invalid";
29805 }
29806 }
29807
29808 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
29809 {
29810 if (!value) return "{}";
29811 std::string result;
29812 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29813 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29814 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29815 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
29816 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
29817 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
29818 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
29819 return "{" + result.substr(0, result.size() - 3) + "}";
29820 }
29821
29822 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
29823 {
29824 switch (value)
29825 {
29826 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
29827 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
29828 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
29829 default: return "invalid";
29830 }
29831 }
29832
29833 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
29834 {
29835 if (!value) return "{}";
29836 std::string result;
29837 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
29838 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29839 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29840 return "{" + result.substr(0, result.size() - 3) + "}";
29841 }
29842
29843 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
29844 {
29845 switch (value)
29846 {
29847 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29848 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29849 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29850 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
29851 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
29852 default: return "invalid";
29853 }
29854 }
29855
29856 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
29857 {
29858 if (!value) return "{}";
29859 std::string result;
29860 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29861 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29862 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29863 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
29864 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
29865 return "{" + result.substr(0, result.size() - 3) + "}";
29866 }
29867
29868 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
29869 {
29870 switch (value)
29871 {
29872 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
29873 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
29874 default: return "invalid";
29875 }
29876 }
29877
29878 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
29879 {
29880 if (!value) return "{}";
29881 std::string result;
29882 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29883 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29884 return "{" + result.substr(0, result.size() - 3) + "}";
29885 }
29886
Mark Young39389872017-01-19 21:10:49 -070029887 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
29888 {
29889 switch (value)
29890 {
29891 case SurfaceCounterFlagBitsEXT::eVblankExt: return "VblankExt";
29892 default: return "invalid";
29893 }
29894 }
29895
29896 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
29897 {
29898 if (!value) return "{}";
29899 std::string result;
29900 if (value & SurfaceCounterFlagBitsEXT::eVblankExt) result += "VblankExt | ";
29901 return "{" + result.substr(0, result.size() - 3) + "}";
29902 }
29903
29904 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
29905 {
29906 switch (value)
29907 {
29908 case DisplayPowerStateEXT::eOff: return "Off";
29909 case DisplayPowerStateEXT::eSuspend: return "Suspend";
29910 case DisplayPowerStateEXT::eOn: return "On";
29911 default: return "invalid";
29912 }
29913 }
29914
29915 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
29916 {
29917 switch (value)
29918 {
29919 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
29920 default: return "invalid";
29921 }
29922 }
29923
29924 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
29925 {
29926 switch (value)
29927 {
29928 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
29929 default: return "invalid";
29930 }
29931 }
29932
Mark Young0f183a82017-02-28 09:58:04 -070029933 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
29934 {
29935 switch (value)
29936 {
29937 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
29938 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
29939 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
29940 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
29941 default: return "invalid";
29942 }
29943 }
29944
29945 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
29946 {
29947 if (!value) return "{}";
29948 std::string result;
29949 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
29950 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
29951 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
29952 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
29953 return "{" + result.substr(0, result.size() - 3) + "}";
29954 }
29955
29956 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
29957 {
29958 switch (value)
29959 {
29960 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
29961 default: return "invalid";
29962 }
29963 }
29964
29965 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
29966 {
29967 if (!value) return "{}";
29968 std::string result;
29969 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
29970 return "{" + result.substr(0, result.size() - 3) + "}";
29971 }
29972
29973 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
29974 {
29975 switch (value)
29976 {
29977 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
29978 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
29979 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
29980 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
29981 default: return "invalid";
29982 }
29983 }
29984
29985 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
29986 {
29987 if (!value) return "{}";
29988 std::string result;
29989 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
29990 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
29991 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
29992 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
29993 return "{" + result.substr(0, result.size() - 3) + "}";
29994 }
29995
29996 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
29997 {
29998 switch (value)
29999 {
30000 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
30001 default: return "invalid";
30002 }
30003 }
30004
30005 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
30006 {
30007 if (!value) return "{}";
30008 std::string result;
30009 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
30010 return "{" + result.substr(0, result.size() - 3) + "}";
30011 }
30012
30013 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
30014 {
30015 switch (value)
30016 {
30017 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
30018 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
30019 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
30020 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
30021 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
30022 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
30023 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
30024 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
30025 default: return "invalid";
30026 }
30027 }
30028
30029 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30030 {
30031 switch (value)
30032 {
30033 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30034 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30035 default: return "invalid";
30036 }
30037 }
30038
30039 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30040 {
30041 switch (value)
30042 {
30043 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30044 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30045 default: return "invalid";
30046 }
30047 }
30048
30049 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30050 {
30051 if (!value) return "{}";
30052 std::string result;
30053 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30054 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30055 return "{" + result.substr(0, result.size() - 3) + "}";
30056 }
30057
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030058} // namespace vk
30059
30060#endif