blob: efcf39e279ca8a24e8c312fec82902bbd123cea5 [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 Lobodzinskibc54f2c2017-03-21 10:12:31 -060045static_assert( VK_HEADER_VERSION == 44 , "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 Young0f183a82017-02-28 09:58:04 -07006232 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6233 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6234 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6235 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6236 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6237 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6238 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6239 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6240 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6241 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6242 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6243 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6244 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6245 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6246 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6247 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6248 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
6249 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006250 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6251 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6252 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6253 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6254 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006255 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006256 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006257 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6258 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6259 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6260 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006261 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006262 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006263 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6264 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6265 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6266 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006267 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006268 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6269 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006270 };
6271
6272 struct ApplicationInfo
6273 {
6274 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6275 : sType( StructureType::eApplicationInfo )
6276 , pNext( nullptr )
6277 , pApplicationName( pApplicationName_ )
6278 , applicationVersion( applicationVersion_ )
6279 , pEngineName( pEngineName_ )
6280 , engineVersion( engineVersion_ )
6281 , apiVersion( apiVersion_ )
6282 {
6283 }
6284
6285 ApplicationInfo( VkApplicationInfo const & rhs )
6286 {
6287 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6288 }
6289
6290 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6291 {
6292 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6293 return *this;
6294 }
6295
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006296 ApplicationInfo& setPNext( const void* pNext_ )
6297 {
6298 pNext = pNext_;
6299 return *this;
6300 }
6301
6302 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6303 {
6304 pApplicationName = pApplicationName_;
6305 return *this;
6306 }
6307
6308 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6309 {
6310 applicationVersion = applicationVersion_;
6311 return *this;
6312 }
6313
6314 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6315 {
6316 pEngineName = pEngineName_;
6317 return *this;
6318 }
6319
6320 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6321 {
6322 engineVersion = engineVersion_;
6323 return *this;
6324 }
6325
6326 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6327 {
6328 apiVersion = apiVersion_;
6329 return *this;
6330 }
6331
6332 operator const VkApplicationInfo&() const
6333 {
6334 return *reinterpret_cast<const VkApplicationInfo*>(this);
6335 }
6336
6337 bool operator==( ApplicationInfo const& rhs ) const
6338 {
6339 return ( sType == rhs.sType )
6340 && ( pNext == rhs.pNext )
6341 && ( pApplicationName == rhs.pApplicationName )
6342 && ( applicationVersion == rhs.applicationVersion )
6343 && ( pEngineName == rhs.pEngineName )
6344 && ( engineVersion == rhs.engineVersion )
6345 && ( apiVersion == rhs.apiVersion );
6346 }
6347
6348 bool operator!=( ApplicationInfo const& rhs ) const
6349 {
6350 return !operator==( rhs );
6351 }
6352
6353 private:
6354 StructureType sType;
6355
6356 public:
6357 const void* pNext;
6358 const char* pApplicationName;
6359 uint32_t applicationVersion;
6360 const char* pEngineName;
6361 uint32_t engineVersion;
6362 uint32_t apiVersion;
6363 };
6364 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6365
6366 struct DeviceQueueCreateInfo
6367 {
6368 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6369 : sType( StructureType::eDeviceQueueCreateInfo )
6370 , pNext( nullptr )
6371 , flags( flags_ )
6372 , queueFamilyIndex( queueFamilyIndex_ )
6373 , queueCount( queueCount_ )
6374 , pQueuePriorities( pQueuePriorities_ )
6375 {
6376 }
6377
6378 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6379 {
6380 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6381 }
6382
6383 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6384 {
6385 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6386 return *this;
6387 }
6388
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006389 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6390 {
6391 pNext = pNext_;
6392 return *this;
6393 }
6394
6395 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6396 {
6397 flags = flags_;
6398 return *this;
6399 }
6400
6401 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6402 {
6403 queueFamilyIndex = queueFamilyIndex_;
6404 return *this;
6405 }
6406
6407 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6408 {
6409 queueCount = queueCount_;
6410 return *this;
6411 }
6412
6413 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6414 {
6415 pQueuePriorities = pQueuePriorities_;
6416 return *this;
6417 }
6418
6419 operator const VkDeviceQueueCreateInfo&() const
6420 {
6421 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6422 }
6423
6424 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6425 {
6426 return ( sType == rhs.sType )
6427 && ( pNext == rhs.pNext )
6428 && ( flags == rhs.flags )
6429 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6430 && ( queueCount == rhs.queueCount )
6431 && ( pQueuePriorities == rhs.pQueuePriorities );
6432 }
6433
6434 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6435 {
6436 return !operator==( rhs );
6437 }
6438
6439 private:
6440 StructureType sType;
6441
6442 public:
6443 const void* pNext;
6444 DeviceQueueCreateFlags flags;
6445 uint32_t queueFamilyIndex;
6446 uint32_t queueCount;
6447 const float* pQueuePriorities;
6448 };
6449 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6450
6451 struct DeviceCreateInfo
6452 {
6453 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 )
6454 : sType( StructureType::eDeviceCreateInfo )
6455 , pNext( nullptr )
6456 , flags( flags_ )
6457 , queueCreateInfoCount( queueCreateInfoCount_ )
6458 , pQueueCreateInfos( pQueueCreateInfos_ )
6459 , enabledLayerCount( enabledLayerCount_ )
6460 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6461 , enabledExtensionCount( enabledExtensionCount_ )
6462 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6463 , pEnabledFeatures( pEnabledFeatures_ )
6464 {
6465 }
6466
6467 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6468 {
6469 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6470 }
6471
6472 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6473 {
6474 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6475 return *this;
6476 }
6477
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006478 DeviceCreateInfo& setPNext( const void* pNext_ )
6479 {
6480 pNext = pNext_;
6481 return *this;
6482 }
6483
6484 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6485 {
6486 flags = flags_;
6487 return *this;
6488 }
6489
6490 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6491 {
6492 queueCreateInfoCount = queueCreateInfoCount_;
6493 return *this;
6494 }
6495
6496 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6497 {
6498 pQueueCreateInfos = pQueueCreateInfos_;
6499 return *this;
6500 }
6501
6502 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6503 {
6504 enabledLayerCount = enabledLayerCount_;
6505 return *this;
6506 }
6507
6508 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6509 {
6510 ppEnabledLayerNames = ppEnabledLayerNames_;
6511 return *this;
6512 }
6513
6514 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6515 {
6516 enabledExtensionCount = enabledExtensionCount_;
6517 return *this;
6518 }
6519
6520 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6521 {
6522 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6523 return *this;
6524 }
6525
6526 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6527 {
6528 pEnabledFeatures = pEnabledFeatures_;
6529 return *this;
6530 }
6531
6532 operator const VkDeviceCreateInfo&() const
6533 {
6534 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6535 }
6536
6537 bool operator==( DeviceCreateInfo const& rhs ) const
6538 {
6539 return ( sType == rhs.sType )
6540 && ( pNext == rhs.pNext )
6541 && ( flags == rhs.flags )
6542 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6543 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6544 && ( enabledLayerCount == rhs.enabledLayerCount )
6545 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6546 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6547 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6548 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6549 }
6550
6551 bool operator!=( DeviceCreateInfo const& rhs ) const
6552 {
6553 return !operator==( rhs );
6554 }
6555
6556 private:
6557 StructureType sType;
6558
6559 public:
6560 const void* pNext;
6561 DeviceCreateFlags flags;
6562 uint32_t queueCreateInfoCount;
6563 const DeviceQueueCreateInfo* pQueueCreateInfos;
6564 uint32_t enabledLayerCount;
6565 const char* const* ppEnabledLayerNames;
6566 uint32_t enabledExtensionCount;
6567 const char* const* ppEnabledExtensionNames;
6568 const PhysicalDeviceFeatures* pEnabledFeatures;
6569 };
6570 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6571
6572 struct InstanceCreateInfo
6573 {
6574 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 )
6575 : sType( StructureType::eInstanceCreateInfo )
6576 , pNext( nullptr )
6577 , flags( flags_ )
6578 , pApplicationInfo( pApplicationInfo_ )
6579 , enabledLayerCount( enabledLayerCount_ )
6580 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6581 , enabledExtensionCount( enabledExtensionCount_ )
6582 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6583 {
6584 }
6585
6586 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6587 {
6588 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6589 }
6590
6591 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6592 {
6593 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6594 return *this;
6595 }
6596
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006597 InstanceCreateInfo& setPNext( const void* pNext_ )
6598 {
6599 pNext = pNext_;
6600 return *this;
6601 }
6602
6603 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6604 {
6605 flags = flags_;
6606 return *this;
6607 }
6608
6609 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6610 {
6611 pApplicationInfo = pApplicationInfo_;
6612 return *this;
6613 }
6614
6615 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6616 {
6617 enabledLayerCount = enabledLayerCount_;
6618 return *this;
6619 }
6620
6621 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6622 {
6623 ppEnabledLayerNames = ppEnabledLayerNames_;
6624 return *this;
6625 }
6626
6627 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6628 {
6629 enabledExtensionCount = enabledExtensionCount_;
6630 return *this;
6631 }
6632
6633 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6634 {
6635 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6636 return *this;
6637 }
6638
6639 operator const VkInstanceCreateInfo&() const
6640 {
6641 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6642 }
6643
6644 bool operator==( InstanceCreateInfo const& rhs ) const
6645 {
6646 return ( sType == rhs.sType )
6647 && ( pNext == rhs.pNext )
6648 && ( flags == rhs.flags )
6649 && ( pApplicationInfo == rhs.pApplicationInfo )
6650 && ( enabledLayerCount == rhs.enabledLayerCount )
6651 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6652 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6653 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6654 }
6655
6656 bool operator!=( InstanceCreateInfo const& rhs ) const
6657 {
6658 return !operator==( rhs );
6659 }
6660
6661 private:
6662 StructureType sType;
6663
6664 public:
6665 const void* pNext;
6666 InstanceCreateFlags flags;
6667 const ApplicationInfo* pApplicationInfo;
6668 uint32_t enabledLayerCount;
6669 const char* const* ppEnabledLayerNames;
6670 uint32_t enabledExtensionCount;
6671 const char* const* ppEnabledExtensionNames;
6672 };
6673 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6674
6675 struct MemoryAllocateInfo
6676 {
6677 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6678 : sType( StructureType::eMemoryAllocateInfo )
6679 , pNext( nullptr )
6680 , allocationSize( allocationSize_ )
6681 , memoryTypeIndex( memoryTypeIndex_ )
6682 {
6683 }
6684
6685 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6686 {
6687 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6688 }
6689
6690 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6691 {
6692 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6693 return *this;
6694 }
6695
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006696 MemoryAllocateInfo& setPNext( const void* pNext_ )
6697 {
6698 pNext = pNext_;
6699 return *this;
6700 }
6701
6702 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6703 {
6704 allocationSize = allocationSize_;
6705 return *this;
6706 }
6707
6708 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6709 {
6710 memoryTypeIndex = memoryTypeIndex_;
6711 return *this;
6712 }
6713
6714 operator const VkMemoryAllocateInfo&() const
6715 {
6716 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6717 }
6718
6719 bool operator==( MemoryAllocateInfo const& rhs ) const
6720 {
6721 return ( sType == rhs.sType )
6722 && ( pNext == rhs.pNext )
6723 && ( allocationSize == rhs.allocationSize )
6724 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6725 }
6726
6727 bool operator!=( MemoryAllocateInfo const& rhs ) const
6728 {
6729 return !operator==( rhs );
6730 }
6731
6732 private:
6733 StructureType sType;
6734
6735 public:
6736 const void* pNext;
6737 DeviceSize allocationSize;
6738 uint32_t memoryTypeIndex;
6739 };
6740 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6741
6742 struct MappedMemoryRange
6743 {
6744 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6745 : sType( StructureType::eMappedMemoryRange )
6746 , pNext( nullptr )
6747 , memory( memory_ )
6748 , offset( offset_ )
6749 , size( size_ )
6750 {
6751 }
6752
6753 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6754 {
6755 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6756 }
6757
6758 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6759 {
6760 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6761 return *this;
6762 }
6763
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006764 MappedMemoryRange& setPNext( const void* pNext_ )
6765 {
6766 pNext = pNext_;
6767 return *this;
6768 }
6769
6770 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6771 {
6772 memory = memory_;
6773 return *this;
6774 }
6775
6776 MappedMemoryRange& setOffset( DeviceSize offset_ )
6777 {
6778 offset = offset_;
6779 return *this;
6780 }
6781
6782 MappedMemoryRange& setSize( DeviceSize size_ )
6783 {
6784 size = size_;
6785 return *this;
6786 }
6787
6788 operator const VkMappedMemoryRange&() const
6789 {
6790 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6791 }
6792
6793 bool operator==( MappedMemoryRange const& rhs ) const
6794 {
6795 return ( sType == rhs.sType )
6796 && ( pNext == rhs.pNext )
6797 && ( memory == rhs.memory )
6798 && ( offset == rhs.offset )
6799 && ( size == rhs.size );
6800 }
6801
6802 bool operator!=( MappedMemoryRange const& rhs ) const
6803 {
6804 return !operator==( rhs );
6805 }
6806
6807 private:
6808 StructureType sType;
6809
6810 public:
6811 const void* pNext;
6812 DeviceMemory memory;
6813 DeviceSize offset;
6814 DeviceSize size;
6815 };
6816 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6817
6818 struct WriteDescriptorSet
6819 {
6820 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 )
6821 : sType( StructureType::eWriteDescriptorSet )
6822 , pNext( nullptr )
6823 , dstSet( dstSet_ )
6824 , dstBinding( dstBinding_ )
6825 , dstArrayElement( dstArrayElement_ )
6826 , descriptorCount( descriptorCount_ )
6827 , descriptorType( descriptorType_ )
6828 , pImageInfo( pImageInfo_ )
6829 , pBufferInfo( pBufferInfo_ )
6830 , pTexelBufferView( pTexelBufferView_ )
6831 {
6832 }
6833
6834 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6835 {
6836 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6837 }
6838
6839 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6840 {
6841 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6842 return *this;
6843 }
6844
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006845 WriteDescriptorSet& setPNext( const void* pNext_ )
6846 {
6847 pNext = pNext_;
6848 return *this;
6849 }
6850
6851 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6852 {
6853 dstSet = dstSet_;
6854 return *this;
6855 }
6856
6857 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6858 {
6859 dstBinding = dstBinding_;
6860 return *this;
6861 }
6862
6863 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6864 {
6865 dstArrayElement = dstArrayElement_;
6866 return *this;
6867 }
6868
6869 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6870 {
6871 descriptorCount = descriptorCount_;
6872 return *this;
6873 }
6874
6875 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6876 {
6877 descriptorType = descriptorType_;
6878 return *this;
6879 }
6880
6881 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
6882 {
6883 pImageInfo = pImageInfo_;
6884 return *this;
6885 }
6886
6887 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
6888 {
6889 pBufferInfo = pBufferInfo_;
6890 return *this;
6891 }
6892
6893 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
6894 {
6895 pTexelBufferView = pTexelBufferView_;
6896 return *this;
6897 }
6898
6899 operator const VkWriteDescriptorSet&() const
6900 {
6901 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
6902 }
6903
6904 bool operator==( WriteDescriptorSet const& rhs ) const
6905 {
6906 return ( sType == rhs.sType )
6907 && ( pNext == rhs.pNext )
6908 && ( dstSet == rhs.dstSet )
6909 && ( dstBinding == rhs.dstBinding )
6910 && ( dstArrayElement == rhs.dstArrayElement )
6911 && ( descriptorCount == rhs.descriptorCount )
6912 && ( descriptorType == rhs.descriptorType )
6913 && ( pImageInfo == rhs.pImageInfo )
6914 && ( pBufferInfo == rhs.pBufferInfo )
6915 && ( pTexelBufferView == rhs.pTexelBufferView );
6916 }
6917
6918 bool operator!=( WriteDescriptorSet const& rhs ) const
6919 {
6920 return !operator==( rhs );
6921 }
6922
6923 private:
6924 StructureType sType;
6925
6926 public:
6927 const void* pNext;
6928 DescriptorSet dstSet;
6929 uint32_t dstBinding;
6930 uint32_t dstArrayElement;
6931 uint32_t descriptorCount;
6932 DescriptorType descriptorType;
6933 const DescriptorImageInfo* pImageInfo;
6934 const DescriptorBufferInfo* pBufferInfo;
6935 const BufferView* pTexelBufferView;
6936 };
6937 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
6938
6939 struct CopyDescriptorSet
6940 {
6941 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 )
6942 : sType( StructureType::eCopyDescriptorSet )
6943 , pNext( nullptr )
6944 , srcSet( srcSet_ )
6945 , srcBinding( srcBinding_ )
6946 , srcArrayElement( srcArrayElement_ )
6947 , dstSet( dstSet_ )
6948 , dstBinding( dstBinding_ )
6949 , dstArrayElement( dstArrayElement_ )
6950 , descriptorCount( descriptorCount_ )
6951 {
6952 }
6953
6954 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
6955 {
6956 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6957 }
6958
6959 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
6960 {
6961 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6962 return *this;
6963 }
6964
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006965 CopyDescriptorSet& setPNext( const void* pNext_ )
6966 {
6967 pNext = pNext_;
6968 return *this;
6969 }
6970
6971 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
6972 {
6973 srcSet = srcSet_;
6974 return *this;
6975 }
6976
6977 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
6978 {
6979 srcBinding = srcBinding_;
6980 return *this;
6981 }
6982
6983 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
6984 {
6985 srcArrayElement = srcArrayElement_;
6986 return *this;
6987 }
6988
6989 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6990 {
6991 dstSet = dstSet_;
6992 return *this;
6993 }
6994
6995 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6996 {
6997 dstBinding = dstBinding_;
6998 return *this;
6999 }
7000
7001 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7002 {
7003 dstArrayElement = dstArrayElement_;
7004 return *this;
7005 }
7006
7007 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7008 {
7009 descriptorCount = descriptorCount_;
7010 return *this;
7011 }
7012
7013 operator const VkCopyDescriptorSet&() const
7014 {
7015 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7016 }
7017
7018 bool operator==( CopyDescriptorSet const& rhs ) const
7019 {
7020 return ( sType == rhs.sType )
7021 && ( pNext == rhs.pNext )
7022 && ( srcSet == rhs.srcSet )
7023 && ( srcBinding == rhs.srcBinding )
7024 && ( srcArrayElement == rhs.srcArrayElement )
7025 && ( dstSet == rhs.dstSet )
7026 && ( dstBinding == rhs.dstBinding )
7027 && ( dstArrayElement == rhs.dstArrayElement )
7028 && ( descriptorCount == rhs.descriptorCount );
7029 }
7030
7031 bool operator!=( CopyDescriptorSet const& rhs ) const
7032 {
7033 return !operator==( rhs );
7034 }
7035
7036 private:
7037 StructureType sType;
7038
7039 public:
7040 const void* pNext;
7041 DescriptorSet srcSet;
7042 uint32_t srcBinding;
7043 uint32_t srcArrayElement;
7044 DescriptorSet dstSet;
7045 uint32_t dstBinding;
7046 uint32_t dstArrayElement;
7047 uint32_t descriptorCount;
7048 };
7049 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7050
7051 struct BufferViewCreateInfo
7052 {
7053 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7054 : sType( StructureType::eBufferViewCreateInfo )
7055 , pNext( nullptr )
7056 , flags( flags_ )
7057 , buffer( buffer_ )
7058 , format( format_ )
7059 , offset( offset_ )
7060 , range( range_ )
7061 {
7062 }
7063
7064 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7065 {
7066 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7067 }
7068
7069 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7070 {
7071 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7072 return *this;
7073 }
7074
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007075 BufferViewCreateInfo& setPNext( const void* pNext_ )
7076 {
7077 pNext = pNext_;
7078 return *this;
7079 }
7080
7081 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7082 {
7083 flags = flags_;
7084 return *this;
7085 }
7086
7087 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7088 {
7089 buffer = buffer_;
7090 return *this;
7091 }
7092
7093 BufferViewCreateInfo& setFormat( Format format_ )
7094 {
7095 format = format_;
7096 return *this;
7097 }
7098
7099 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7100 {
7101 offset = offset_;
7102 return *this;
7103 }
7104
7105 BufferViewCreateInfo& setRange( DeviceSize range_ )
7106 {
7107 range = range_;
7108 return *this;
7109 }
7110
7111 operator const VkBufferViewCreateInfo&() const
7112 {
7113 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7114 }
7115
7116 bool operator==( BufferViewCreateInfo const& rhs ) const
7117 {
7118 return ( sType == rhs.sType )
7119 && ( pNext == rhs.pNext )
7120 && ( flags == rhs.flags )
7121 && ( buffer == rhs.buffer )
7122 && ( format == rhs.format )
7123 && ( offset == rhs.offset )
7124 && ( range == rhs.range );
7125 }
7126
7127 bool operator!=( BufferViewCreateInfo const& rhs ) const
7128 {
7129 return !operator==( rhs );
7130 }
7131
7132 private:
7133 StructureType sType;
7134
7135 public:
7136 const void* pNext;
7137 BufferViewCreateFlags flags;
7138 Buffer buffer;
7139 Format format;
7140 DeviceSize offset;
7141 DeviceSize range;
7142 };
7143 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7144
7145 struct ShaderModuleCreateInfo
7146 {
7147 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7148 : sType( StructureType::eShaderModuleCreateInfo )
7149 , pNext( nullptr )
7150 , flags( flags_ )
7151 , codeSize( codeSize_ )
7152 , pCode( pCode_ )
7153 {
7154 }
7155
7156 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7157 {
7158 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7159 }
7160
7161 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7162 {
7163 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7164 return *this;
7165 }
7166
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007167 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7168 {
7169 pNext = pNext_;
7170 return *this;
7171 }
7172
7173 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7174 {
7175 flags = flags_;
7176 return *this;
7177 }
7178
7179 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7180 {
7181 codeSize = codeSize_;
7182 return *this;
7183 }
7184
7185 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7186 {
7187 pCode = pCode_;
7188 return *this;
7189 }
7190
7191 operator const VkShaderModuleCreateInfo&() const
7192 {
7193 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7194 }
7195
7196 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7197 {
7198 return ( sType == rhs.sType )
7199 && ( pNext == rhs.pNext )
7200 && ( flags == rhs.flags )
7201 && ( codeSize == rhs.codeSize )
7202 && ( pCode == rhs.pCode );
7203 }
7204
7205 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7206 {
7207 return !operator==( rhs );
7208 }
7209
7210 private:
7211 StructureType sType;
7212
7213 public:
7214 const void* pNext;
7215 ShaderModuleCreateFlags flags;
7216 size_t codeSize;
7217 const uint32_t* pCode;
7218 };
7219 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7220
7221 struct DescriptorSetAllocateInfo
7222 {
7223 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7224 : sType( StructureType::eDescriptorSetAllocateInfo )
7225 , pNext( nullptr )
7226 , descriptorPool( descriptorPool_ )
7227 , descriptorSetCount( descriptorSetCount_ )
7228 , pSetLayouts( pSetLayouts_ )
7229 {
7230 }
7231
7232 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7233 {
7234 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7235 }
7236
7237 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7238 {
7239 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7240 return *this;
7241 }
7242
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007243 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7244 {
7245 pNext = pNext_;
7246 return *this;
7247 }
7248
7249 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7250 {
7251 descriptorPool = descriptorPool_;
7252 return *this;
7253 }
7254
7255 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7256 {
7257 descriptorSetCount = descriptorSetCount_;
7258 return *this;
7259 }
7260
7261 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7262 {
7263 pSetLayouts = pSetLayouts_;
7264 return *this;
7265 }
7266
7267 operator const VkDescriptorSetAllocateInfo&() const
7268 {
7269 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7270 }
7271
7272 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7273 {
7274 return ( sType == rhs.sType )
7275 && ( pNext == rhs.pNext )
7276 && ( descriptorPool == rhs.descriptorPool )
7277 && ( descriptorSetCount == rhs.descriptorSetCount )
7278 && ( pSetLayouts == rhs.pSetLayouts );
7279 }
7280
7281 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7282 {
7283 return !operator==( rhs );
7284 }
7285
7286 private:
7287 StructureType sType;
7288
7289 public:
7290 const void* pNext;
7291 DescriptorPool descriptorPool;
7292 uint32_t descriptorSetCount;
7293 const DescriptorSetLayout* pSetLayouts;
7294 };
7295 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7296
7297 struct PipelineVertexInputStateCreateInfo
7298 {
7299 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7300 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7301 , pNext( nullptr )
7302 , flags( flags_ )
7303 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7304 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7305 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7306 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7307 {
7308 }
7309
7310 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7311 {
7312 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7313 }
7314
7315 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7316 {
7317 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7318 return *this;
7319 }
7320
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007321 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7322 {
7323 pNext = pNext_;
7324 return *this;
7325 }
7326
7327 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7328 {
7329 flags = flags_;
7330 return *this;
7331 }
7332
7333 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7334 {
7335 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7336 return *this;
7337 }
7338
7339 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7340 {
7341 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7342 return *this;
7343 }
7344
7345 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7346 {
7347 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7348 return *this;
7349 }
7350
7351 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7352 {
7353 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7354 return *this;
7355 }
7356
7357 operator const VkPipelineVertexInputStateCreateInfo&() const
7358 {
7359 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7360 }
7361
7362 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7363 {
7364 return ( sType == rhs.sType )
7365 && ( pNext == rhs.pNext )
7366 && ( flags == rhs.flags )
7367 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7368 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7369 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7370 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7371 }
7372
7373 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7374 {
7375 return !operator==( rhs );
7376 }
7377
7378 private:
7379 StructureType sType;
7380
7381 public:
7382 const void* pNext;
7383 PipelineVertexInputStateCreateFlags flags;
7384 uint32_t vertexBindingDescriptionCount;
7385 const VertexInputBindingDescription* pVertexBindingDescriptions;
7386 uint32_t vertexAttributeDescriptionCount;
7387 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7388 };
7389 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7390
7391 struct PipelineInputAssemblyStateCreateInfo
7392 {
7393 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7394 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7395 , pNext( nullptr )
7396 , flags( flags_ )
7397 , topology( topology_ )
7398 , primitiveRestartEnable( primitiveRestartEnable_ )
7399 {
7400 }
7401
7402 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7403 {
7404 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7405 }
7406
7407 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7408 {
7409 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7410 return *this;
7411 }
7412
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007413 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7414 {
7415 pNext = pNext_;
7416 return *this;
7417 }
7418
7419 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7420 {
7421 flags = flags_;
7422 return *this;
7423 }
7424
7425 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7426 {
7427 topology = topology_;
7428 return *this;
7429 }
7430
7431 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7432 {
7433 primitiveRestartEnable = primitiveRestartEnable_;
7434 return *this;
7435 }
7436
7437 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7438 {
7439 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7440 }
7441
7442 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7443 {
7444 return ( sType == rhs.sType )
7445 && ( pNext == rhs.pNext )
7446 && ( flags == rhs.flags )
7447 && ( topology == rhs.topology )
7448 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7449 }
7450
7451 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7452 {
7453 return !operator==( rhs );
7454 }
7455
7456 private:
7457 StructureType sType;
7458
7459 public:
7460 const void* pNext;
7461 PipelineInputAssemblyStateCreateFlags flags;
7462 PrimitiveTopology topology;
7463 Bool32 primitiveRestartEnable;
7464 };
7465 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7466
7467 struct PipelineTessellationStateCreateInfo
7468 {
7469 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7470 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7471 , pNext( nullptr )
7472 , flags( flags_ )
7473 , patchControlPoints( patchControlPoints_ )
7474 {
7475 }
7476
7477 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7478 {
7479 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7480 }
7481
7482 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7483 {
7484 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7485 return *this;
7486 }
7487
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007488 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7489 {
7490 pNext = pNext_;
7491 return *this;
7492 }
7493
7494 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7495 {
7496 flags = flags_;
7497 return *this;
7498 }
7499
7500 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7501 {
7502 patchControlPoints = patchControlPoints_;
7503 return *this;
7504 }
7505
7506 operator const VkPipelineTessellationStateCreateInfo&() const
7507 {
7508 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7509 }
7510
7511 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7512 {
7513 return ( sType == rhs.sType )
7514 && ( pNext == rhs.pNext )
7515 && ( flags == rhs.flags )
7516 && ( patchControlPoints == rhs.patchControlPoints );
7517 }
7518
7519 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7520 {
7521 return !operator==( rhs );
7522 }
7523
7524 private:
7525 StructureType sType;
7526
7527 public:
7528 const void* pNext;
7529 PipelineTessellationStateCreateFlags flags;
7530 uint32_t patchControlPoints;
7531 };
7532 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7533
7534 struct PipelineViewportStateCreateInfo
7535 {
7536 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7537 : sType( StructureType::ePipelineViewportStateCreateInfo )
7538 , pNext( nullptr )
7539 , flags( flags_ )
7540 , viewportCount( viewportCount_ )
7541 , pViewports( pViewports_ )
7542 , scissorCount( scissorCount_ )
7543 , pScissors( pScissors_ )
7544 {
7545 }
7546
7547 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7548 {
7549 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7550 }
7551
7552 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7553 {
7554 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7555 return *this;
7556 }
7557
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007558 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7559 {
7560 pNext = pNext_;
7561 return *this;
7562 }
7563
7564 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7565 {
7566 flags = flags_;
7567 return *this;
7568 }
7569
7570 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7571 {
7572 viewportCount = viewportCount_;
7573 return *this;
7574 }
7575
7576 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7577 {
7578 pViewports = pViewports_;
7579 return *this;
7580 }
7581
7582 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7583 {
7584 scissorCount = scissorCount_;
7585 return *this;
7586 }
7587
7588 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7589 {
7590 pScissors = pScissors_;
7591 return *this;
7592 }
7593
7594 operator const VkPipelineViewportStateCreateInfo&() const
7595 {
7596 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7597 }
7598
7599 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7600 {
7601 return ( sType == rhs.sType )
7602 && ( pNext == rhs.pNext )
7603 && ( flags == rhs.flags )
7604 && ( viewportCount == rhs.viewportCount )
7605 && ( pViewports == rhs.pViewports )
7606 && ( scissorCount == rhs.scissorCount )
7607 && ( pScissors == rhs.pScissors );
7608 }
7609
7610 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7611 {
7612 return !operator==( rhs );
7613 }
7614
7615 private:
7616 StructureType sType;
7617
7618 public:
7619 const void* pNext;
7620 PipelineViewportStateCreateFlags flags;
7621 uint32_t viewportCount;
7622 const Viewport* pViewports;
7623 uint32_t scissorCount;
7624 const Rect2D* pScissors;
7625 };
7626 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7627
7628 struct PipelineRasterizationStateCreateInfo
7629 {
7630 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 )
7631 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7632 , pNext( nullptr )
7633 , flags( flags_ )
7634 , depthClampEnable( depthClampEnable_ )
7635 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7636 , polygonMode( polygonMode_ )
7637 , cullMode( cullMode_ )
7638 , frontFace( frontFace_ )
7639 , depthBiasEnable( depthBiasEnable_ )
7640 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7641 , depthBiasClamp( depthBiasClamp_ )
7642 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7643 , lineWidth( lineWidth_ )
7644 {
7645 }
7646
7647 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7648 {
7649 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7650 }
7651
7652 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7653 {
7654 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7655 return *this;
7656 }
7657
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007658 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7659 {
7660 pNext = pNext_;
7661 return *this;
7662 }
7663
7664 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7665 {
7666 flags = flags_;
7667 return *this;
7668 }
7669
7670 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7671 {
7672 depthClampEnable = depthClampEnable_;
7673 return *this;
7674 }
7675
7676 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7677 {
7678 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7679 return *this;
7680 }
7681
7682 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7683 {
7684 polygonMode = polygonMode_;
7685 return *this;
7686 }
7687
7688 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7689 {
7690 cullMode = cullMode_;
7691 return *this;
7692 }
7693
7694 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7695 {
7696 frontFace = frontFace_;
7697 return *this;
7698 }
7699
7700 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7701 {
7702 depthBiasEnable = depthBiasEnable_;
7703 return *this;
7704 }
7705
7706 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7707 {
7708 depthBiasConstantFactor = depthBiasConstantFactor_;
7709 return *this;
7710 }
7711
7712 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7713 {
7714 depthBiasClamp = depthBiasClamp_;
7715 return *this;
7716 }
7717
7718 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7719 {
7720 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7721 return *this;
7722 }
7723
7724 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7725 {
7726 lineWidth = lineWidth_;
7727 return *this;
7728 }
7729
7730 operator const VkPipelineRasterizationStateCreateInfo&() const
7731 {
7732 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7733 }
7734
7735 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7736 {
7737 return ( sType == rhs.sType )
7738 && ( pNext == rhs.pNext )
7739 && ( flags == rhs.flags )
7740 && ( depthClampEnable == rhs.depthClampEnable )
7741 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7742 && ( polygonMode == rhs.polygonMode )
7743 && ( cullMode == rhs.cullMode )
7744 && ( frontFace == rhs.frontFace )
7745 && ( depthBiasEnable == rhs.depthBiasEnable )
7746 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7747 && ( depthBiasClamp == rhs.depthBiasClamp )
7748 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7749 && ( lineWidth == rhs.lineWidth );
7750 }
7751
7752 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7753 {
7754 return !operator==( rhs );
7755 }
7756
7757 private:
7758 StructureType sType;
7759
7760 public:
7761 const void* pNext;
7762 PipelineRasterizationStateCreateFlags flags;
7763 Bool32 depthClampEnable;
7764 Bool32 rasterizerDiscardEnable;
7765 PolygonMode polygonMode;
7766 CullModeFlags cullMode;
7767 FrontFace frontFace;
7768 Bool32 depthBiasEnable;
7769 float depthBiasConstantFactor;
7770 float depthBiasClamp;
7771 float depthBiasSlopeFactor;
7772 float lineWidth;
7773 };
7774 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7775
7776 struct PipelineDepthStencilStateCreateInfo
7777 {
7778 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 )
7779 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7780 , pNext( nullptr )
7781 , flags( flags_ )
7782 , depthTestEnable( depthTestEnable_ )
7783 , depthWriteEnable( depthWriteEnable_ )
7784 , depthCompareOp( depthCompareOp_ )
7785 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7786 , stencilTestEnable( stencilTestEnable_ )
7787 , front( front_ )
7788 , back( back_ )
7789 , minDepthBounds( minDepthBounds_ )
7790 , maxDepthBounds( maxDepthBounds_ )
7791 {
7792 }
7793
7794 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7795 {
7796 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7797 }
7798
7799 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7800 {
7801 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7802 return *this;
7803 }
7804
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007805 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7806 {
7807 pNext = pNext_;
7808 return *this;
7809 }
7810
7811 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7812 {
7813 flags = flags_;
7814 return *this;
7815 }
7816
7817 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7818 {
7819 depthTestEnable = depthTestEnable_;
7820 return *this;
7821 }
7822
7823 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7824 {
7825 depthWriteEnable = depthWriteEnable_;
7826 return *this;
7827 }
7828
7829 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7830 {
7831 depthCompareOp = depthCompareOp_;
7832 return *this;
7833 }
7834
7835 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7836 {
7837 depthBoundsTestEnable = depthBoundsTestEnable_;
7838 return *this;
7839 }
7840
7841 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7842 {
7843 stencilTestEnable = stencilTestEnable_;
7844 return *this;
7845 }
7846
7847 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7848 {
7849 front = front_;
7850 return *this;
7851 }
7852
7853 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7854 {
7855 back = back_;
7856 return *this;
7857 }
7858
7859 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7860 {
7861 minDepthBounds = minDepthBounds_;
7862 return *this;
7863 }
7864
7865 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7866 {
7867 maxDepthBounds = maxDepthBounds_;
7868 return *this;
7869 }
7870
7871 operator const VkPipelineDepthStencilStateCreateInfo&() const
7872 {
7873 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7874 }
7875
7876 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7877 {
7878 return ( sType == rhs.sType )
7879 && ( pNext == rhs.pNext )
7880 && ( flags == rhs.flags )
7881 && ( depthTestEnable == rhs.depthTestEnable )
7882 && ( depthWriteEnable == rhs.depthWriteEnable )
7883 && ( depthCompareOp == rhs.depthCompareOp )
7884 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
7885 && ( stencilTestEnable == rhs.stencilTestEnable )
7886 && ( front == rhs.front )
7887 && ( back == rhs.back )
7888 && ( minDepthBounds == rhs.minDepthBounds )
7889 && ( maxDepthBounds == rhs.maxDepthBounds );
7890 }
7891
7892 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
7893 {
7894 return !operator==( rhs );
7895 }
7896
7897 private:
7898 StructureType sType;
7899
7900 public:
7901 const void* pNext;
7902 PipelineDepthStencilStateCreateFlags flags;
7903 Bool32 depthTestEnable;
7904 Bool32 depthWriteEnable;
7905 CompareOp depthCompareOp;
7906 Bool32 depthBoundsTestEnable;
7907 Bool32 stencilTestEnable;
7908 StencilOpState front;
7909 StencilOpState back;
7910 float minDepthBounds;
7911 float maxDepthBounds;
7912 };
7913 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
7914
7915 struct PipelineCacheCreateInfo
7916 {
7917 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
7918 : sType( StructureType::ePipelineCacheCreateInfo )
7919 , pNext( nullptr )
7920 , flags( flags_ )
7921 , initialDataSize( initialDataSize_ )
7922 , pInitialData( pInitialData_ )
7923 {
7924 }
7925
7926 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
7927 {
7928 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7929 }
7930
7931 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
7932 {
7933 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7934 return *this;
7935 }
7936
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007937 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
7938 {
7939 pNext = pNext_;
7940 return *this;
7941 }
7942
7943 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
7944 {
7945 flags = flags_;
7946 return *this;
7947 }
7948
7949 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
7950 {
7951 initialDataSize = initialDataSize_;
7952 return *this;
7953 }
7954
7955 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
7956 {
7957 pInitialData = pInitialData_;
7958 return *this;
7959 }
7960
7961 operator const VkPipelineCacheCreateInfo&() const
7962 {
7963 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
7964 }
7965
7966 bool operator==( PipelineCacheCreateInfo const& rhs ) const
7967 {
7968 return ( sType == rhs.sType )
7969 && ( pNext == rhs.pNext )
7970 && ( flags == rhs.flags )
7971 && ( initialDataSize == rhs.initialDataSize )
7972 && ( pInitialData == rhs.pInitialData );
7973 }
7974
7975 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
7976 {
7977 return !operator==( rhs );
7978 }
7979
7980 private:
7981 StructureType sType;
7982
7983 public:
7984 const void* pNext;
7985 PipelineCacheCreateFlags flags;
7986 size_t initialDataSize;
7987 const void* pInitialData;
7988 };
7989 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
7990
7991 struct SamplerCreateInfo
7992 {
7993 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 )
7994 : sType( StructureType::eSamplerCreateInfo )
7995 , pNext( nullptr )
7996 , flags( flags_ )
7997 , magFilter( magFilter_ )
7998 , minFilter( minFilter_ )
7999 , mipmapMode( mipmapMode_ )
8000 , addressModeU( addressModeU_ )
8001 , addressModeV( addressModeV_ )
8002 , addressModeW( addressModeW_ )
8003 , mipLodBias( mipLodBias_ )
8004 , anisotropyEnable( anisotropyEnable_ )
8005 , maxAnisotropy( maxAnisotropy_ )
8006 , compareEnable( compareEnable_ )
8007 , compareOp( compareOp_ )
8008 , minLod( minLod_ )
8009 , maxLod( maxLod_ )
8010 , borderColor( borderColor_ )
8011 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8012 {
8013 }
8014
8015 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8016 {
8017 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8018 }
8019
8020 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8021 {
8022 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8023 return *this;
8024 }
8025
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008026 SamplerCreateInfo& setPNext( const void* pNext_ )
8027 {
8028 pNext = pNext_;
8029 return *this;
8030 }
8031
8032 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8033 {
8034 flags = flags_;
8035 return *this;
8036 }
8037
8038 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8039 {
8040 magFilter = magFilter_;
8041 return *this;
8042 }
8043
8044 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8045 {
8046 minFilter = minFilter_;
8047 return *this;
8048 }
8049
8050 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8051 {
8052 mipmapMode = mipmapMode_;
8053 return *this;
8054 }
8055
8056 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8057 {
8058 addressModeU = addressModeU_;
8059 return *this;
8060 }
8061
8062 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8063 {
8064 addressModeV = addressModeV_;
8065 return *this;
8066 }
8067
8068 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8069 {
8070 addressModeW = addressModeW_;
8071 return *this;
8072 }
8073
8074 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8075 {
8076 mipLodBias = mipLodBias_;
8077 return *this;
8078 }
8079
8080 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8081 {
8082 anisotropyEnable = anisotropyEnable_;
8083 return *this;
8084 }
8085
8086 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8087 {
8088 maxAnisotropy = maxAnisotropy_;
8089 return *this;
8090 }
8091
8092 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8093 {
8094 compareEnable = compareEnable_;
8095 return *this;
8096 }
8097
8098 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8099 {
8100 compareOp = compareOp_;
8101 return *this;
8102 }
8103
8104 SamplerCreateInfo& setMinLod( float minLod_ )
8105 {
8106 minLod = minLod_;
8107 return *this;
8108 }
8109
8110 SamplerCreateInfo& setMaxLod( float maxLod_ )
8111 {
8112 maxLod = maxLod_;
8113 return *this;
8114 }
8115
8116 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8117 {
8118 borderColor = borderColor_;
8119 return *this;
8120 }
8121
8122 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8123 {
8124 unnormalizedCoordinates = unnormalizedCoordinates_;
8125 return *this;
8126 }
8127
8128 operator const VkSamplerCreateInfo&() const
8129 {
8130 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8131 }
8132
8133 bool operator==( SamplerCreateInfo const& rhs ) const
8134 {
8135 return ( sType == rhs.sType )
8136 && ( pNext == rhs.pNext )
8137 && ( flags == rhs.flags )
8138 && ( magFilter == rhs.magFilter )
8139 && ( minFilter == rhs.minFilter )
8140 && ( mipmapMode == rhs.mipmapMode )
8141 && ( addressModeU == rhs.addressModeU )
8142 && ( addressModeV == rhs.addressModeV )
8143 && ( addressModeW == rhs.addressModeW )
8144 && ( mipLodBias == rhs.mipLodBias )
8145 && ( anisotropyEnable == rhs.anisotropyEnable )
8146 && ( maxAnisotropy == rhs.maxAnisotropy )
8147 && ( compareEnable == rhs.compareEnable )
8148 && ( compareOp == rhs.compareOp )
8149 && ( minLod == rhs.minLod )
8150 && ( maxLod == rhs.maxLod )
8151 && ( borderColor == rhs.borderColor )
8152 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8153 }
8154
8155 bool operator!=( SamplerCreateInfo const& rhs ) const
8156 {
8157 return !operator==( rhs );
8158 }
8159
8160 private:
8161 StructureType sType;
8162
8163 public:
8164 const void* pNext;
8165 SamplerCreateFlags flags;
8166 Filter magFilter;
8167 Filter minFilter;
8168 SamplerMipmapMode mipmapMode;
8169 SamplerAddressMode addressModeU;
8170 SamplerAddressMode addressModeV;
8171 SamplerAddressMode addressModeW;
8172 float mipLodBias;
8173 Bool32 anisotropyEnable;
8174 float maxAnisotropy;
8175 Bool32 compareEnable;
8176 CompareOp compareOp;
8177 float minLod;
8178 float maxLod;
8179 BorderColor borderColor;
8180 Bool32 unnormalizedCoordinates;
8181 };
8182 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8183
8184 struct CommandBufferAllocateInfo
8185 {
8186 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8187 : sType( StructureType::eCommandBufferAllocateInfo )
8188 , pNext( nullptr )
8189 , commandPool( commandPool_ )
8190 , level( level_ )
8191 , commandBufferCount( commandBufferCount_ )
8192 {
8193 }
8194
8195 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8196 {
8197 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8198 }
8199
8200 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8201 {
8202 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8203 return *this;
8204 }
8205
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008206 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8207 {
8208 pNext = pNext_;
8209 return *this;
8210 }
8211
8212 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8213 {
8214 commandPool = commandPool_;
8215 return *this;
8216 }
8217
8218 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8219 {
8220 level = level_;
8221 return *this;
8222 }
8223
8224 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8225 {
8226 commandBufferCount = commandBufferCount_;
8227 return *this;
8228 }
8229
8230 operator const VkCommandBufferAllocateInfo&() const
8231 {
8232 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8233 }
8234
8235 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8236 {
8237 return ( sType == rhs.sType )
8238 && ( pNext == rhs.pNext )
8239 && ( commandPool == rhs.commandPool )
8240 && ( level == rhs.level )
8241 && ( commandBufferCount == rhs.commandBufferCount );
8242 }
8243
8244 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8245 {
8246 return !operator==( rhs );
8247 }
8248
8249 private:
8250 StructureType sType;
8251
8252 public:
8253 const void* pNext;
8254 CommandPool commandPool;
8255 CommandBufferLevel level;
8256 uint32_t commandBufferCount;
8257 };
8258 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8259
8260 struct RenderPassBeginInfo
8261 {
8262 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8263 : sType( StructureType::eRenderPassBeginInfo )
8264 , pNext( nullptr )
8265 , renderPass( renderPass_ )
8266 , framebuffer( framebuffer_ )
8267 , renderArea( renderArea_ )
8268 , clearValueCount( clearValueCount_ )
8269 , pClearValues( pClearValues_ )
8270 {
8271 }
8272
8273 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8274 {
8275 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8276 }
8277
8278 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8279 {
8280 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8281 return *this;
8282 }
8283
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008284 RenderPassBeginInfo& setPNext( const void* pNext_ )
8285 {
8286 pNext = pNext_;
8287 return *this;
8288 }
8289
8290 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8291 {
8292 renderPass = renderPass_;
8293 return *this;
8294 }
8295
8296 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8297 {
8298 framebuffer = framebuffer_;
8299 return *this;
8300 }
8301
8302 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8303 {
8304 renderArea = renderArea_;
8305 return *this;
8306 }
8307
8308 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8309 {
8310 clearValueCount = clearValueCount_;
8311 return *this;
8312 }
8313
8314 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8315 {
8316 pClearValues = pClearValues_;
8317 return *this;
8318 }
8319
8320 operator const VkRenderPassBeginInfo&() const
8321 {
8322 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8323 }
8324
8325 bool operator==( RenderPassBeginInfo const& rhs ) const
8326 {
8327 return ( sType == rhs.sType )
8328 && ( pNext == rhs.pNext )
8329 && ( renderPass == rhs.renderPass )
8330 && ( framebuffer == rhs.framebuffer )
8331 && ( renderArea == rhs.renderArea )
8332 && ( clearValueCount == rhs.clearValueCount )
8333 && ( pClearValues == rhs.pClearValues );
8334 }
8335
8336 bool operator!=( RenderPassBeginInfo const& rhs ) const
8337 {
8338 return !operator==( rhs );
8339 }
8340
8341 private:
8342 StructureType sType;
8343
8344 public:
8345 const void* pNext;
8346 RenderPass renderPass;
8347 Framebuffer framebuffer;
8348 Rect2D renderArea;
8349 uint32_t clearValueCount;
8350 const ClearValue* pClearValues;
8351 };
8352 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8353
8354 struct EventCreateInfo
8355 {
8356 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8357 : sType( StructureType::eEventCreateInfo )
8358 , pNext( nullptr )
8359 , flags( flags_ )
8360 {
8361 }
8362
8363 EventCreateInfo( VkEventCreateInfo const & rhs )
8364 {
8365 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8366 }
8367
8368 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8369 {
8370 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8371 return *this;
8372 }
8373
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008374 EventCreateInfo& setPNext( const void* pNext_ )
8375 {
8376 pNext = pNext_;
8377 return *this;
8378 }
8379
8380 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8381 {
8382 flags = flags_;
8383 return *this;
8384 }
8385
8386 operator const VkEventCreateInfo&() const
8387 {
8388 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8389 }
8390
8391 bool operator==( EventCreateInfo const& rhs ) const
8392 {
8393 return ( sType == rhs.sType )
8394 && ( pNext == rhs.pNext )
8395 && ( flags == rhs.flags );
8396 }
8397
8398 bool operator!=( EventCreateInfo const& rhs ) const
8399 {
8400 return !operator==( rhs );
8401 }
8402
8403 private:
8404 StructureType sType;
8405
8406 public:
8407 const void* pNext;
8408 EventCreateFlags flags;
8409 };
8410 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8411
8412 struct SemaphoreCreateInfo
8413 {
8414 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8415 : sType( StructureType::eSemaphoreCreateInfo )
8416 , pNext( nullptr )
8417 , flags( flags_ )
8418 {
8419 }
8420
8421 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8422 {
8423 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8424 }
8425
8426 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8427 {
8428 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8429 return *this;
8430 }
8431
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008432 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8433 {
8434 pNext = pNext_;
8435 return *this;
8436 }
8437
8438 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8439 {
8440 flags = flags_;
8441 return *this;
8442 }
8443
8444 operator const VkSemaphoreCreateInfo&() const
8445 {
8446 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8447 }
8448
8449 bool operator==( SemaphoreCreateInfo const& rhs ) const
8450 {
8451 return ( sType == rhs.sType )
8452 && ( pNext == rhs.pNext )
8453 && ( flags == rhs.flags );
8454 }
8455
8456 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8457 {
8458 return !operator==( rhs );
8459 }
8460
8461 private:
8462 StructureType sType;
8463
8464 public:
8465 const void* pNext;
8466 SemaphoreCreateFlags flags;
8467 };
8468 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8469
8470 struct FramebufferCreateInfo
8471 {
8472 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 )
8473 : sType( StructureType::eFramebufferCreateInfo )
8474 , pNext( nullptr )
8475 , flags( flags_ )
8476 , renderPass( renderPass_ )
8477 , attachmentCount( attachmentCount_ )
8478 , pAttachments( pAttachments_ )
8479 , width( width_ )
8480 , height( height_ )
8481 , layers( layers_ )
8482 {
8483 }
8484
8485 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8486 {
8487 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8488 }
8489
8490 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8491 {
8492 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8493 return *this;
8494 }
8495
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008496 FramebufferCreateInfo& setPNext( const void* pNext_ )
8497 {
8498 pNext = pNext_;
8499 return *this;
8500 }
8501
8502 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8503 {
8504 flags = flags_;
8505 return *this;
8506 }
8507
8508 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8509 {
8510 renderPass = renderPass_;
8511 return *this;
8512 }
8513
8514 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8515 {
8516 attachmentCount = attachmentCount_;
8517 return *this;
8518 }
8519
8520 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8521 {
8522 pAttachments = pAttachments_;
8523 return *this;
8524 }
8525
8526 FramebufferCreateInfo& setWidth( uint32_t width_ )
8527 {
8528 width = width_;
8529 return *this;
8530 }
8531
8532 FramebufferCreateInfo& setHeight( uint32_t height_ )
8533 {
8534 height = height_;
8535 return *this;
8536 }
8537
8538 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8539 {
8540 layers = layers_;
8541 return *this;
8542 }
8543
8544 operator const VkFramebufferCreateInfo&() const
8545 {
8546 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8547 }
8548
8549 bool operator==( FramebufferCreateInfo const& rhs ) const
8550 {
8551 return ( sType == rhs.sType )
8552 && ( pNext == rhs.pNext )
8553 && ( flags == rhs.flags )
8554 && ( renderPass == rhs.renderPass )
8555 && ( attachmentCount == rhs.attachmentCount )
8556 && ( pAttachments == rhs.pAttachments )
8557 && ( width == rhs.width )
8558 && ( height == rhs.height )
8559 && ( layers == rhs.layers );
8560 }
8561
8562 bool operator!=( FramebufferCreateInfo const& rhs ) const
8563 {
8564 return !operator==( rhs );
8565 }
8566
8567 private:
8568 StructureType sType;
8569
8570 public:
8571 const void* pNext;
8572 FramebufferCreateFlags flags;
8573 RenderPass renderPass;
8574 uint32_t attachmentCount;
8575 const ImageView* pAttachments;
8576 uint32_t width;
8577 uint32_t height;
8578 uint32_t layers;
8579 };
8580 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8581
8582 struct DisplayModeCreateInfoKHR
8583 {
8584 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8585 : sType( StructureType::eDisplayModeCreateInfoKHR )
8586 , pNext( nullptr )
8587 , flags( flags_ )
8588 , parameters( parameters_ )
8589 {
8590 }
8591
8592 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8593 {
8594 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8595 }
8596
8597 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8598 {
8599 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8600 return *this;
8601 }
8602
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008603 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8604 {
8605 pNext = pNext_;
8606 return *this;
8607 }
8608
8609 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8610 {
8611 flags = flags_;
8612 return *this;
8613 }
8614
8615 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8616 {
8617 parameters = parameters_;
8618 return *this;
8619 }
8620
8621 operator const VkDisplayModeCreateInfoKHR&() const
8622 {
8623 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8624 }
8625
8626 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8627 {
8628 return ( sType == rhs.sType )
8629 && ( pNext == rhs.pNext )
8630 && ( flags == rhs.flags )
8631 && ( parameters == rhs.parameters );
8632 }
8633
8634 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8635 {
8636 return !operator==( rhs );
8637 }
8638
8639 private:
8640 StructureType sType;
8641
8642 public:
8643 const void* pNext;
8644 DisplayModeCreateFlagsKHR flags;
8645 DisplayModeParametersKHR parameters;
8646 };
8647 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8648
8649 struct DisplayPresentInfoKHR
8650 {
8651 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8652 : sType( StructureType::eDisplayPresentInfoKHR )
8653 , pNext( nullptr )
8654 , srcRect( srcRect_ )
8655 , dstRect( dstRect_ )
8656 , persistent( persistent_ )
8657 {
8658 }
8659
8660 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8661 {
8662 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8663 }
8664
8665 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8666 {
8667 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8668 return *this;
8669 }
8670
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008671 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8672 {
8673 pNext = pNext_;
8674 return *this;
8675 }
8676
8677 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8678 {
8679 srcRect = srcRect_;
8680 return *this;
8681 }
8682
8683 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8684 {
8685 dstRect = dstRect_;
8686 return *this;
8687 }
8688
8689 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8690 {
8691 persistent = persistent_;
8692 return *this;
8693 }
8694
8695 operator const VkDisplayPresentInfoKHR&() const
8696 {
8697 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8698 }
8699
8700 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8701 {
8702 return ( sType == rhs.sType )
8703 && ( pNext == rhs.pNext )
8704 && ( srcRect == rhs.srcRect )
8705 && ( dstRect == rhs.dstRect )
8706 && ( persistent == rhs.persistent );
8707 }
8708
8709 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8710 {
8711 return !operator==( rhs );
8712 }
8713
8714 private:
8715 StructureType sType;
8716
8717 public:
8718 const void* pNext;
8719 Rect2D srcRect;
8720 Rect2D dstRect;
8721 Bool32 persistent;
8722 };
8723 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8724
8725#ifdef VK_USE_PLATFORM_ANDROID_KHR
8726 struct AndroidSurfaceCreateInfoKHR
8727 {
8728 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8729 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8730 , pNext( nullptr )
8731 , flags( flags_ )
8732 , window( window_ )
8733 {
8734 }
8735
8736 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8737 {
8738 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8739 }
8740
8741 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8742 {
8743 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8744 return *this;
8745 }
8746
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008747 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8748 {
8749 pNext = pNext_;
8750 return *this;
8751 }
8752
8753 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8754 {
8755 flags = flags_;
8756 return *this;
8757 }
8758
8759 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8760 {
8761 window = window_;
8762 return *this;
8763 }
8764
8765 operator const VkAndroidSurfaceCreateInfoKHR&() const
8766 {
8767 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8768 }
8769
8770 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8771 {
8772 return ( sType == rhs.sType )
8773 && ( pNext == rhs.pNext )
8774 && ( flags == rhs.flags )
8775 && ( window == rhs.window );
8776 }
8777
8778 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8779 {
8780 return !operator==( rhs );
8781 }
8782
8783 private:
8784 StructureType sType;
8785
8786 public:
8787 const void* pNext;
8788 AndroidSurfaceCreateFlagsKHR flags;
8789 ANativeWindow* window;
8790 };
8791 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8792#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8793
8794#ifdef VK_USE_PLATFORM_MIR_KHR
8795 struct MirSurfaceCreateInfoKHR
8796 {
8797 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8798 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8799 , pNext( nullptr )
8800 , flags( flags_ )
8801 , connection( connection_ )
8802 , mirSurface( mirSurface_ )
8803 {
8804 }
8805
8806 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8807 {
8808 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8809 }
8810
8811 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8812 {
8813 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8814 return *this;
8815 }
8816
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008817 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8818 {
8819 pNext = pNext_;
8820 return *this;
8821 }
8822
8823 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8824 {
8825 flags = flags_;
8826 return *this;
8827 }
8828
8829 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8830 {
8831 connection = connection_;
8832 return *this;
8833 }
8834
8835 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8836 {
8837 mirSurface = mirSurface_;
8838 return *this;
8839 }
8840
8841 operator const VkMirSurfaceCreateInfoKHR&() const
8842 {
8843 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8844 }
8845
8846 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8847 {
8848 return ( sType == rhs.sType )
8849 && ( pNext == rhs.pNext )
8850 && ( flags == rhs.flags )
8851 && ( connection == rhs.connection )
8852 && ( mirSurface == rhs.mirSurface );
8853 }
8854
8855 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8856 {
8857 return !operator==( rhs );
8858 }
8859
8860 private:
8861 StructureType sType;
8862
8863 public:
8864 const void* pNext;
8865 MirSurfaceCreateFlagsKHR flags;
8866 MirConnection* connection;
8867 MirSurface* mirSurface;
8868 };
8869 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8870#endif /*VK_USE_PLATFORM_MIR_KHR*/
8871
Mark Young39389872017-01-19 21:10:49 -07008872#ifdef VK_USE_PLATFORM_VI_NN
8873 struct ViSurfaceCreateInfoNN
8874 {
8875 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8876 : sType( StructureType::eViSurfaceCreateInfoNN )
8877 , pNext( nullptr )
8878 , flags( flags_ )
8879 , window( window_ )
8880 {
8881 }
8882
8883 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
8884 {
8885 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8886 }
8887
8888 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
8889 {
8890 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8891 return *this;
8892 }
8893
Mark Young39389872017-01-19 21:10:49 -07008894 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
8895 {
8896 pNext = pNext_;
8897 return *this;
8898 }
8899
8900 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
8901 {
8902 flags = flags_;
8903 return *this;
8904 }
8905
8906 ViSurfaceCreateInfoNN& setWindow( void* window_ )
8907 {
8908 window = window_;
8909 return *this;
8910 }
8911
8912 operator const VkViSurfaceCreateInfoNN&() const
8913 {
8914 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
8915 }
8916
8917 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
8918 {
8919 return ( sType == rhs.sType )
8920 && ( pNext == rhs.pNext )
8921 && ( flags == rhs.flags )
8922 && ( window == rhs.window );
8923 }
8924
8925 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
8926 {
8927 return !operator==( rhs );
8928 }
8929
8930 private:
8931 StructureType sType;
8932
8933 public:
8934 const void* pNext;
8935 ViSurfaceCreateFlagsNN flags;
8936 void* window;
8937 };
8938 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
8939#endif /*VK_USE_PLATFORM_VI_NN*/
8940
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008941#ifdef VK_USE_PLATFORM_WAYLAND_KHR
8942 struct WaylandSurfaceCreateInfoKHR
8943 {
8944 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
8945 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
8946 , pNext( nullptr )
8947 , flags( flags_ )
8948 , display( display_ )
8949 , surface( surface_ )
8950 {
8951 }
8952
8953 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
8954 {
8955 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8956 }
8957
8958 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
8959 {
8960 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8961 return *this;
8962 }
8963
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008964 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8965 {
8966 pNext = pNext_;
8967 return *this;
8968 }
8969
8970 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
8971 {
8972 flags = flags_;
8973 return *this;
8974 }
8975
8976 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
8977 {
8978 display = display_;
8979 return *this;
8980 }
8981
8982 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
8983 {
8984 surface = surface_;
8985 return *this;
8986 }
8987
8988 operator const VkWaylandSurfaceCreateInfoKHR&() const
8989 {
8990 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
8991 }
8992
8993 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
8994 {
8995 return ( sType == rhs.sType )
8996 && ( pNext == rhs.pNext )
8997 && ( flags == rhs.flags )
8998 && ( display == rhs.display )
8999 && ( surface == rhs.surface );
9000 }
9001
9002 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9003 {
9004 return !operator==( rhs );
9005 }
9006
9007 private:
9008 StructureType sType;
9009
9010 public:
9011 const void* pNext;
9012 WaylandSurfaceCreateFlagsKHR flags;
9013 struct wl_display* display;
9014 struct wl_surface* surface;
9015 };
9016 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9017#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9018
9019#ifdef VK_USE_PLATFORM_WIN32_KHR
9020 struct Win32SurfaceCreateInfoKHR
9021 {
9022 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9023 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9024 , pNext( nullptr )
9025 , flags( flags_ )
9026 , hinstance( hinstance_ )
9027 , hwnd( hwnd_ )
9028 {
9029 }
9030
9031 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9032 {
9033 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9034 }
9035
9036 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9037 {
9038 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9039 return *this;
9040 }
9041
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009042 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9043 {
9044 pNext = pNext_;
9045 return *this;
9046 }
9047
9048 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9049 {
9050 flags = flags_;
9051 return *this;
9052 }
9053
9054 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9055 {
9056 hinstance = hinstance_;
9057 return *this;
9058 }
9059
9060 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9061 {
9062 hwnd = hwnd_;
9063 return *this;
9064 }
9065
9066 operator const VkWin32SurfaceCreateInfoKHR&() const
9067 {
9068 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9069 }
9070
9071 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9072 {
9073 return ( sType == rhs.sType )
9074 && ( pNext == rhs.pNext )
9075 && ( flags == rhs.flags )
9076 && ( hinstance == rhs.hinstance )
9077 && ( hwnd == rhs.hwnd );
9078 }
9079
9080 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9081 {
9082 return !operator==( rhs );
9083 }
9084
9085 private:
9086 StructureType sType;
9087
9088 public:
9089 const void* pNext;
9090 Win32SurfaceCreateFlagsKHR flags;
9091 HINSTANCE hinstance;
9092 HWND hwnd;
9093 };
9094 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9095#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9096
9097#ifdef VK_USE_PLATFORM_XLIB_KHR
9098 struct XlibSurfaceCreateInfoKHR
9099 {
9100 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9101 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9102 , pNext( nullptr )
9103 , flags( flags_ )
9104 , dpy( dpy_ )
9105 , window( window_ )
9106 {
9107 }
9108
9109 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9110 {
9111 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9112 }
9113
9114 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9115 {
9116 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9117 return *this;
9118 }
9119
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009120 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9121 {
9122 pNext = pNext_;
9123 return *this;
9124 }
9125
9126 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9127 {
9128 flags = flags_;
9129 return *this;
9130 }
9131
9132 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9133 {
9134 dpy = dpy_;
9135 return *this;
9136 }
9137
9138 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9139 {
9140 window = window_;
9141 return *this;
9142 }
9143
9144 operator const VkXlibSurfaceCreateInfoKHR&() const
9145 {
9146 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9147 }
9148
9149 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9150 {
9151 return ( sType == rhs.sType )
9152 && ( pNext == rhs.pNext )
9153 && ( flags == rhs.flags )
9154 && ( dpy == rhs.dpy )
9155 && ( window == rhs.window );
9156 }
9157
9158 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9159 {
9160 return !operator==( rhs );
9161 }
9162
9163 private:
9164 StructureType sType;
9165
9166 public:
9167 const void* pNext;
9168 XlibSurfaceCreateFlagsKHR flags;
9169 Display* dpy;
9170 Window window;
9171 };
9172 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9173#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9174
9175#ifdef VK_USE_PLATFORM_XCB_KHR
9176 struct XcbSurfaceCreateInfoKHR
9177 {
9178 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9179 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9180 , pNext( nullptr )
9181 , flags( flags_ )
9182 , connection( connection_ )
9183 , window( window_ )
9184 {
9185 }
9186
9187 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9188 {
9189 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9190 }
9191
9192 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9193 {
9194 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9195 return *this;
9196 }
9197
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009198 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9199 {
9200 pNext = pNext_;
9201 return *this;
9202 }
9203
9204 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9205 {
9206 flags = flags_;
9207 return *this;
9208 }
9209
9210 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9211 {
9212 connection = connection_;
9213 return *this;
9214 }
9215
9216 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9217 {
9218 window = window_;
9219 return *this;
9220 }
9221
9222 operator const VkXcbSurfaceCreateInfoKHR&() const
9223 {
9224 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9225 }
9226
9227 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9228 {
9229 return ( sType == rhs.sType )
9230 && ( pNext == rhs.pNext )
9231 && ( flags == rhs.flags )
9232 && ( connection == rhs.connection )
9233 && ( window == rhs.window );
9234 }
9235
9236 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9237 {
9238 return !operator==( rhs );
9239 }
9240
9241 private:
9242 StructureType sType;
9243
9244 public:
9245 const void* pNext;
9246 XcbSurfaceCreateFlagsKHR flags;
9247 xcb_connection_t* connection;
9248 xcb_window_t window;
9249 };
9250 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9251#endif /*VK_USE_PLATFORM_XCB_KHR*/
9252
9253 struct DebugMarkerMarkerInfoEXT
9254 {
9255 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9256 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9257 , pNext( nullptr )
9258 , pMarkerName( pMarkerName_ )
9259 {
9260 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9261 }
9262
9263 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9264 {
9265 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9266 }
9267
9268 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9269 {
9270 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9271 return *this;
9272 }
9273
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009274 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9275 {
9276 pNext = pNext_;
9277 return *this;
9278 }
9279
9280 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9281 {
9282 pMarkerName = pMarkerName_;
9283 return *this;
9284 }
9285
9286 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9287 {
9288 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9289 return *this;
9290 }
9291
9292 operator const VkDebugMarkerMarkerInfoEXT&() const
9293 {
9294 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9295 }
9296
9297 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9298 {
9299 return ( sType == rhs.sType )
9300 && ( pNext == rhs.pNext )
9301 && ( pMarkerName == rhs.pMarkerName )
9302 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9303 }
9304
9305 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9306 {
9307 return !operator==( rhs );
9308 }
9309
9310 private:
9311 StructureType sType;
9312
9313 public:
9314 const void* pNext;
9315 const char* pMarkerName;
9316 float color[4];
9317 };
9318 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9319
9320 struct DedicatedAllocationImageCreateInfoNV
9321 {
9322 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9323 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9324 , pNext( nullptr )
9325 , dedicatedAllocation( dedicatedAllocation_ )
9326 {
9327 }
9328
9329 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9330 {
9331 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9332 }
9333
9334 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9335 {
9336 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9337 return *this;
9338 }
9339
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009340 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9341 {
9342 pNext = pNext_;
9343 return *this;
9344 }
9345
9346 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9347 {
9348 dedicatedAllocation = dedicatedAllocation_;
9349 return *this;
9350 }
9351
9352 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9353 {
9354 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9355 }
9356
9357 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9358 {
9359 return ( sType == rhs.sType )
9360 && ( pNext == rhs.pNext )
9361 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9362 }
9363
9364 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9365 {
9366 return !operator==( rhs );
9367 }
9368
9369 private:
9370 StructureType sType;
9371
9372 public:
9373 const void* pNext;
9374 Bool32 dedicatedAllocation;
9375 };
9376 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9377
9378 struct DedicatedAllocationBufferCreateInfoNV
9379 {
9380 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9381 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9382 , pNext( nullptr )
9383 , dedicatedAllocation( dedicatedAllocation_ )
9384 {
9385 }
9386
9387 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9388 {
9389 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9390 }
9391
9392 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9393 {
9394 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9395 return *this;
9396 }
9397
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009398 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9399 {
9400 pNext = pNext_;
9401 return *this;
9402 }
9403
9404 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9405 {
9406 dedicatedAllocation = dedicatedAllocation_;
9407 return *this;
9408 }
9409
9410 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9411 {
9412 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9413 }
9414
9415 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9416 {
9417 return ( sType == rhs.sType )
9418 && ( pNext == rhs.pNext )
9419 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9420 }
9421
9422 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9423 {
9424 return !operator==( rhs );
9425 }
9426
9427 private:
9428 StructureType sType;
9429
9430 public:
9431 const void* pNext;
9432 Bool32 dedicatedAllocation;
9433 };
9434 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9435
9436 struct DedicatedAllocationMemoryAllocateInfoNV
9437 {
9438 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9439 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9440 , pNext( nullptr )
9441 , image( image_ )
9442 , buffer( buffer_ )
9443 {
9444 }
9445
9446 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9447 {
9448 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9449 }
9450
9451 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9452 {
9453 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9454 return *this;
9455 }
9456
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009457 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9458 {
9459 pNext = pNext_;
9460 return *this;
9461 }
9462
9463 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9464 {
9465 image = image_;
9466 return *this;
9467 }
9468
9469 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9470 {
9471 buffer = buffer_;
9472 return *this;
9473 }
9474
9475 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9476 {
9477 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9478 }
9479
9480 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9481 {
9482 return ( sType == rhs.sType )
9483 && ( pNext == rhs.pNext )
9484 && ( image == rhs.image )
9485 && ( buffer == rhs.buffer );
9486 }
9487
9488 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9489 {
9490 return !operator==( rhs );
9491 }
9492
9493 private:
9494 StructureType sType;
9495
9496 public:
9497 const void* pNext;
9498 Image image;
9499 Buffer buffer;
9500 };
9501 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9502
Lenny Komow6501c122016-08-31 15:03:49 -06009503#ifdef VK_USE_PLATFORM_WIN32_KHR
9504 struct ExportMemoryWin32HandleInfoNV
9505 {
9506 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9507 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9508 , pNext( nullptr )
9509 , pAttributes( pAttributes_ )
9510 , dwAccess( dwAccess_ )
9511 {
9512 }
9513
9514 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9515 {
9516 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9517 }
9518
9519 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9520 {
9521 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9522 return *this;
9523 }
9524
Lenny Komow6501c122016-08-31 15:03:49 -06009525 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9526 {
9527 pNext = pNext_;
9528 return *this;
9529 }
9530
9531 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9532 {
9533 pAttributes = pAttributes_;
9534 return *this;
9535 }
9536
9537 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9538 {
9539 dwAccess = dwAccess_;
9540 return *this;
9541 }
9542
9543 operator const VkExportMemoryWin32HandleInfoNV&() const
9544 {
9545 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9546 }
9547
9548 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9549 {
9550 return ( sType == rhs.sType )
9551 && ( pNext == rhs.pNext )
9552 && ( pAttributes == rhs.pAttributes )
9553 && ( dwAccess == rhs.dwAccess );
9554 }
9555
9556 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9557 {
9558 return !operator==( rhs );
9559 }
9560
9561 private:
9562 StructureType sType;
9563
9564 public:
9565 const void* pNext;
9566 const SECURITY_ATTRIBUTES* pAttributes;
9567 DWORD dwAccess;
9568 };
9569 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9570#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9571
9572#ifdef VK_USE_PLATFORM_WIN32_KHR
9573 struct Win32KeyedMutexAcquireReleaseInfoNV
9574 {
9575 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 )
9576 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9577 , pNext( nullptr )
9578 , acquireCount( acquireCount_ )
9579 , pAcquireSyncs( pAcquireSyncs_ )
9580 , pAcquireKeys( pAcquireKeys_ )
9581 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9582 , releaseCount( releaseCount_ )
9583 , pReleaseSyncs( pReleaseSyncs_ )
9584 , pReleaseKeys( pReleaseKeys_ )
9585 {
9586 }
9587
9588 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9589 {
9590 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9591 }
9592
9593 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9594 {
9595 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9596 return *this;
9597 }
9598
Lenny Komow6501c122016-08-31 15:03:49 -06009599 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9600 {
9601 pNext = pNext_;
9602 return *this;
9603 }
9604
9605 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9606 {
9607 acquireCount = acquireCount_;
9608 return *this;
9609 }
9610
9611 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9612 {
9613 pAcquireSyncs = pAcquireSyncs_;
9614 return *this;
9615 }
9616
9617 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9618 {
9619 pAcquireKeys = pAcquireKeys_;
9620 return *this;
9621 }
9622
9623 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9624 {
9625 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9626 return *this;
9627 }
9628
9629 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9630 {
9631 releaseCount = releaseCount_;
9632 return *this;
9633 }
9634
9635 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9636 {
9637 pReleaseSyncs = pReleaseSyncs_;
9638 return *this;
9639 }
9640
9641 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9642 {
9643 pReleaseKeys = pReleaseKeys_;
9644 return *this;
9645 }
9646
9647 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9648 {
9649 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9650 }
9651
9652 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9653 {
9654 return ( sType == rhs.sType )
9655 && ( pNext == rhs.pNext )
9656 && ( acquireCount == rhs.acquireCount )
9657 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9658 && ( pAcquireKeys == rhs.pAcquireKeys )
9659 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9660 && ( releaseCount == rhs.releaseCount )
9661 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9662 && ( pReleaseKeys == rhs.pReleaseKeys );
9663 }
9664
9665 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9666 {
9667 return !operator==( rhs );
9668 }
9669
9670 private:
9671 StructureType sType;
9672
9673 public:
9674 const void* pNext;
9675 uint32_t acquireCount;
9676 const DeviceMemory* pAcquireSyncs;
9677 const uint64_t* pAcquireKeys;
9678 const uint32_t* pAcquireTimeoutMilliseconds;
9679 uint32_t releaseCount;
9680 const DeviceMemory* pReleaseSyncs;
9681 const uint64_t* pReleaseKeys;
9682 };
9683 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9684#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9685
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009686 struct DeviceGeneratedCommandsFeaturesNVX
9687 {
9688 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9689 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9690 , pNext( nullptr )
9691 , computeBindingPointSupport( computeBindingPointSupport_ )
9692 {
9693 }
9694
9695 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9696 {
9697 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9698 }
9699
9700 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9701 {
9702 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9703 return *this;
9704 }
9705
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009706 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9707 {
9708 pNext = pNext_;
9709 return *this;
9710 }
9711
9712 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9713 {
9714 computeBindingPointSupport = computeBindingPointSupport_;
9715 return *this;
9716 }
9717
9718 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9719 {
9720 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9721 }
9722
9723 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9724 {
9725 return ( sType == rhs.sType )
9726 && ( pNext == rhs.pNext )
9727 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9728 }
9729
9730 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9731 {
9732 return !operator==( rhs );
9733 }
9734
9735 private:
9736 StructureType sType;
9737
9738 public:
9739 const void* pNext;
9740 Bool32 computeBindingPointSupport;
9741 };
9742 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9743
9744 struct DeviceGeneratedCommandsLimitsNVX
9745 {
9746 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9747 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9748 , pNext( nullptr )
9749 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9750 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9751 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9752 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9753 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9754 {
9755 }
9756
9757 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9758 {
9759 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9760 }
9761
9762 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9763 {
9764 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9765 return *this;
9766 }
9767
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009768 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9769 {
9770 pNext = pNext_;
9771 return *this;
9772 }
9773
9774 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9775 {
9776 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9777 return *this;
9778 }
9779
9780 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9781 {
9782 maxObjectEntryCounts = maxObjectEntryCounts_;
9783 return *this;
9784 }
9785
9786 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9787 {
9788 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9789 return *this;
9790 }
9791
9792 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9793 {
9794 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9795 return *this;
9796 }
9797
9798 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9799 {
9800 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9801 return *this;
9802 }
9803
9804 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9805 {
9806 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9807 }
9808
9809 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9810 {
9811 return ( sType == rhs.sType )
9812 && ( pNext == rhs.pNext )
9813 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9814 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9815 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9816 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9817 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9818 }
9819
9820 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9821 {
9822 return !operator==( rhs );
9823 }
9824
9825 private:
9826 StructureType sType;
9827
9828 public:
9829 const void* pNext;
9830 uint32_t maxIndirectCommandsLayoutTokenCount;
9831 uint32_t maxObjectEntryCounts;
9832 uint32_t minSequenceCountBufferOffsetAlignment;
9833 uint32_t minSequenceIndexBufferOffsetAlignment;
9834 uint32_t minCommandsTokenBufferOffsetAlignment;
9835 };
9836 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9837
9838 struct CmdReserveSpaceForCommandsInfoNVX
9839 {
9840 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9841 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9842 , pNext( nullptr )
9843 , objectTable( objectTable_ )
9844 , indirectCommandsLayout( indirectCommandsLayout_ )
9845 , maxSequencesCount( maxSequencesCount_ )
9846 {
9847 }
9848
9849 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9850 {
9851 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9852 }
9853
9854 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9855 {
9856 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9857 return *this;
9858 }
9859
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009860 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9861 {
9862 pNext = pNext_;
9863 return *this;
9864 }
9865
9866 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9867 {
9868 objectTable = objectTable_;
9869 return *this;
9870 }
9871
9872 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9873 {
9874 indirectCommandsLayout = indirectCommandsLayout_;
9875 return *this;
9876 }
9877
9878 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9879 {
9880 maxSequencesCount = maxSequencesCount_;
9881 return *this;
9882 }
9883
9884 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
9885 {
9886 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
9887 }
9888
9889 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9890 {
9891 return ( sType == rhs.sType )
9892 && ( pNext == rhs.pNext )
9893 && ( objectTable == rhs.objectTable )
9894 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
9895 && ( maxSequencesCount == rhs.maxSequencesCount );
9896 }
9897
9898 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9899 {
9900 return !operator==( rhs );
9901 }
9902
9903 private:
9904 StructureType sType;
9905
9906 public:
9907 const void* pNext;
9908 ObjectTableNVX objectTable;
9909 IndirectCommandsLayoutNVX indirectCommandsLayout;
9910 uint32_t maxSequencesCount;
9911 };
9912 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
9913
Mark Young39389872017-01-19 21:10:49 -07009914 struct PhysicalDeviceFeatures2KHR
9915 {
9916 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
9917 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
9918 , pNext( nullptr )
9919 , features( features_ )
9920 {
9921 }
9922
9923 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
9924 {
9925 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9926 }
9927
9928 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
9929 {
9930 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9931 return *this;
9932 }
9933
Mark Young39389872017-01-19 21:10:49 -07009934 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
9935 {
9936 pNext = pNext_;
9937 return *this;
9938 }
9939
9940 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
9941 {
9942 features = features_;
9943 return *this;
9944 }
9945
9946 operator const VkPhysicalDeviceFeatures2KHR&() const
9947 {
9948 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
9949 }
9950
9951 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
9952 {
9953 return ( sType == rhs.sType )
9954 && ( pNext == rhs.pNext )
9955 && ( features == rhs.features );
9956 }
9957
9958 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
9959 {
9960 return !operator==( rhs );
9961 }
9962
9963 private:
9964 StructureType sType;
9965
9966 public:
9967 void* pNext;
9968 PhysicalDeviceFeatures features;
9969 };
9970 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
9971
Mark Young0f183a82017-02-28 09:58:04 -07009972 struct PhysicalDevicePushDescriptorPropertiesKHR
9973 {
9974 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
9975 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
9976 , pNext( nullptr )
9977 , maxPushDescriptors( maxPushDescriptors_ )
9978 {
9979 }
9980
9981 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9982 {
9983 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9984 }
9985
9986 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9987 {
9988 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9989 return *this;
9990 }
9991
9992 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
9993 {
9994 pNext = pNext_;
9995 return *this;
9996 }
9997
9998 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
9999 {
10000 maxPushDescriptors = maxPushDescriptors_;
10001 return *this;
10002 }
10003
10004 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10005 {
10006 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10007 }
10008
10009 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10010 {
10011 return ( sType == rhs.sType )
10012 && ( pNext == rhs.pNext )
10013 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10014 }
10015
10016 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10017 {
10018 return !operator==( rhs );
10019 }
10020
10021 private:
10022 StructureType sType;
10023
10024 public:
10025 void* pNext;
10026 uint32_t maxPushDescriptors;
10027 };
10028 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10029
10030 struct PhysicalDeviceIDPropertiesKHX
10031 {
10032 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10033 {
10034 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10035 }
10036
10037 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10038 {
10039 return ( sType == rhs.sType )
10040 && ( pNext == rhs.pNext )
10041 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10042 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10043 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10044 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10045 }
10046
10047 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10048 {
10049 return !operator==( rhs );
10050 }
10051
10052 private:
10053 StructureType sType;
10054
10055 public:
10056 void* pNext;
10057 uint8_t deviceUUID[VK_UUID_SIZE];
10058 uint8_t driverUUID[VK_UUID_SIZE];
10059 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10060 Bool32 deviceLUIDValid;
10061 };
10062 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10063
10064#ifdef VK_USE_PLATFORM_WIN32_KHR
10065 struct ExportMemoryWin32HandleInfoKHX
10066 {
10067 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10068 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10069 , pNext( nullptr )
10070 , pAttributes( pAttributes_ )
10071 , dwAccess( dwAccess_ )
10072 , name( name_ )
10073 {
10074 }
10075
10076 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10077 {
10078 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10079 }
10080
10081 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10082 {
10083 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10084 return *this;
10085 }
10086
10087 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10088 {
10089 pNext = pNext_;
10090 return *this;
10091 }
10092
10093 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10094 {
10095 pAttributes = pAttributes_;
10096 return *this;
10097 }
10098
10099 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10100 {
10101 dwAccess = dwAccess_;
10102 return *this;
10103 }
10104
10105 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10106 {
10107 name = name_;
10108 return *this;
10109 }
10110
10111 operator const VkExportMemoryWin32HandleInfoKHX&() const
10112 {
10113 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10114 }
10115
10116 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10117 {
10118 return ( sType == rhs.sType )
10119 && ( pNext == rhs.pNext )
10120 && ( pAttributes == rhs.pAttributes )
10121 && ( dwAccess == rhs.dwAccess )
10122 && ( name == rhs.name );
10123 }
10124
10125 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10126 {
10127 return !operator==( rhs );
10128 }
10129
10130 private:
10131 StructureType sType;
10132
10133 public:
10134 const void* pNext;
10135 const SECURITY_ATTRIBUTES* pAttributes;
10136 DWORD dwAccess;
10137 LPCWSTR name;
10138 };
10139 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10140#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10141
10142#ifdef VK_USE_PLATFORM_WIN32_KHR
10143 struct MemoryWin32HandlePropertiesKHX
10144 {
10145 operator const VkMemoryWin32HandlePropertiesKHX&() const
10146 {
10147 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10148 }
10149
10150 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10151 {
10152 return ( sType == rhs.sType )
10153 && ( pNext == rhs.pNext )
10154 && ( memoryTypeBits == rhs.memoryTypeBits );
10155 }
10156
10157 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10158 {
10159 return !operator==( rhs );
10160 }
10161
10162 private:
10163 StructureType sType;
10164
10165 public:
10166 void* pNext;
10167 uint32_t memoryTypeBits;
10168 };
10169 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
10170#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10171
10172 struct MemoryFdPropertiesKHX
10173 {
10174 operator const VkMemoryFdPropertiesKHX&() const
10175 {
10176 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10177 }
10178
10179 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10180 {
10181 return ( sType == rhs.sType )
10182 && ( pNext == rhs.pNext )
10183 && ( memoryTypeBits == rhs.memoryTypeBits );
10184 }
10185
10186 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10187 {
10188 return !operator==( rhs );
10189 }
10190
10191 private:
10192 StructureType sType;
10193
10194 public:
10195 void* pNext;
10196 uint32_t memoryTypeBits;
10197 };
10198 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10199
10200#ifdef VK_USE_PLATFORM_WIN32_KHR
10201 struct Win32KeyedMutexAcquireReleaseInfoKHX
10202 {
10203 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 )
10204 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10205 , pNext( nullptr )
10206 , acquireCount( acquireCount_ )
10207 , pAcquireSyncs( pAcquireSyncs_ )
10208 , pAcquireKeys( pAcquireKeys_ )
10209 , pAcquireTimeouts( pAcquireTimeouts_ )
10210 , releaseCount( releaseCount_ )
10211 , pReleaseSyncs( pReleaseSyncs_ )
10212 , pReleaseKeys( pReleaseKeys_ )
10213 {
10214 }
10215
10216 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10217 {
10218 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10219 }
10220
10221 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10222 {
10223 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10224 return *this;
10225 }
10226
10227 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10228 {
10229 pNext = pNext_;
10230 return *this;
10231 }
10232
10233 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10234 {
10235 acquireCount = acquireCount_;
10236 return *this;
10237 }
10238
10239 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10240 {
10241 pAcquireSyncs = pAcquireSyncs_;
10242 return *this;
10243 }
10244
10245 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10246 {
10247 pAcquireKeys = pAcquireKeys_;
10248 return *this;
10249 }
10250
10251 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10252 {
10253 pAcquireTimeouts = pAcquireTimeouts_;
10254 return *this;
10255 }
10256
10257 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10258 {
10259 releaseCount = releaseCount_;
10260 return *this;
10261 }
10262
10263 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10264 {
10265 pReleaseSyncs = pReleaseSyncs_;
10266 return *this;
10267 }
10268
10269 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10270 {
10271 pReleaseKeys = pReleaseKeys_;
10272 return *this;
10273 }
10274
10275 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10276 {
10277 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10278 }
10279
10280 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10281 {
10282 return ( sType == rhs.sType )
10283 && ( pNext == rhs.pNext )
10284 && ( acquireCount == rhs.acquireCount )
10285 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10286 && ( pAcquireKeys == rhs.pAcquireKeys )
10287 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10288 && ( releaseCount == rhs.releaseCount )
10289 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10290 && ( pReleaseKeys == rhs.pReleaseKeys );
10291 }
10292
10293 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10294 {
10295 return !operator==( rhs );
10296 }
10297
10298 private:
10299 StructureType sType;
10300
10301 public:
10302 const void* pNext;
10303 uint32_t acquireCount;
10304 const DeviceMemory* pAcquireSyncs;
10305 const uint64_t* pAcquireKeys;
10306 const uint32_t* pAcquireTimeouts;
10307 uint32_t releaseCount;
10308 const DeviceMemory* pReleaseSyncs;
10309 const uint64_t* pReleaseKeys;
10310 };
10311 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10312#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10313
10314#ifdef VK_USE_PLATFORM_WIN32_KHX
10315 struct ExportSemaphoreWin32HandleInfoKHX
10316 {
10317 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10318 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10319 , pNext( nullptr )
10320 , pAttributes( pAttributes_ )
10321 , dwAccess( dwAccess_ )
10322 , name( name_ )
10323 {
10324 }
10325
10326 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10327 {
10328 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10329 }
10330
10331 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10332 {
10333 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10334 return *this;
10335 }
10336
10337 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10338 {
10339 pNext = pNext_;
10340 return *this;
10341 }
10342
10343 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10344 {
10345 pAttributes = pAttributes_;
10346 return *this;
10347 }
10348
10349 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10350 {
10351 dwAccess = dwAccess_;
10352 return *this;
10353 }
10354
10355 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10356 {
10357 name = name_;
10358 return *this;
10359 }
10360
10361 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10362 {
10363 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10364 }
10365
10366 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10367 {
10368 return ( sType == rhs.sType )
10369 && ( pNext == rhs.pNext )
10370 && ( pAttributes == rhs.pAttributes )
10371 && ( dwAccess == rhs.dwAccess )
10372 && ( name == rhs.name );
10373 }
10374
10375 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10376 {
10377 return !operator==( rhs );
10378 }
10379
10380 private:
10381 StructureType sType;
10382
10383 public:
10384 const void* pNext;
10385 const SECURITY_ATTRIBUTES* pAttributes;
10386 DWORD dwAccess;
10387 LPCWSTR name;
10388 };
10389 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10390#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10391
10392#ifdef VK_USE_PLATFORM_WIN32_KHX
10393 struct D3D12FenceSubmitInfoKHX
10394 {
10395 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10396 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10397 , pNext( nullptr )
10398 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10399 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10400 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10401 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10402 {
10403 }
10404
10405 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10406 {
10407 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10408 }
10409
10410 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10411 {
10412 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10413 return *this;
10414 }
10415
10416 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10417 {
10418 pNext = pNext_;
10419 return *this;
10420 }
10421
10422 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10423 {
10424 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10425 return *this;
10426 }
10427
10428 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10429 {
10430 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10431 return *this;
10432 }
10433
10434 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10435 {
10436 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10437 return *this;
10438 }
10439
10440 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10441 {
10442 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10443 return *this;
10444 }
10445
10446 operator const VkD3D12FenceSubmitInfoKHX&() const
10447 {
10448 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10449 }
10450
10451 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10452 {
10453 return ( sType == rhs.sType )
10454 && ( pNext == rhs.pNext )
10455 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10456 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10457 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10458 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10459 }
10460
10461 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10462 {
10463 return !operator==( rhs );
10464 }
10465
10466 private:
10467 StructureType sType;
10468
10469 public:
10470 const void* pNext;
10471 uint32_t waitSemaphoreValuesCount;
10472 const uint64_t* pWaitSemaphoreValues;
10473 uint32_t signalSemaphoreValuesCount;
10474 const uint64_t* pSignalSemaphoreValues;
10475 };
10476 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10477#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10478
10479 struct PhysicalDeviceMultiviewFeaturesKHX
10480 {
10481 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10482 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10483 , pNext( nullptr )
10484 , multiview( multiview_ )
10485 , multiviewGeometryShader( multiviewGeometryShader_ )
10486 , multiviewTessellationShader( multiviewTessellationShader_ )
10487 {
10488 }
10489
10490 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10491 {
10492 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10493 }
10494
10495 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10496 {
10497 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10498 return *this;
10499 }
10500
10501 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10502 {
10503 pNext = pNext_;
10504 return *this;
10505 }
10506
10507 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10508 {
10509 multiview = multiview_;
10510 return *this;
10511 }
10512
10513 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10514 {
10515 multiviewGeometryShader = multiviewGeometryShader_;
10516 return *this;
10517 }
10518
10519 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10520 {
10521 multiviewTessellationShader = multiviewTessellationShader_;
10522 return *this;
10523 }
10524
10525 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10526 {
10527 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10528 }
10529
10530 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10531 {
10532 return ( sType == rhs.sType )
10533 && ( pNext == rhs.pNext )
10534 && ( multiview == rhs.multiview )
10535 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10536 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10537 }
10538
10539 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10540 {
10541 return !operator==( rhs );
10542 }
10543
10544 private:
10545 StructureType sType;
10546
10547 public:
10548 void* pNext;
10549 Bool32 multiview;
10550 Bool32 multiviewGeometryShader;
10551 Bool32 multiviewTessellationShader;
10552 };
10553 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10554
10555 struct PhysicalDeviceMultiviewPropertiesKHX
10556 {
10557 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10558 {
10559 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10560 }
10561
10562 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10563 {
10564 return ( sType == rhs.sType )
10565 && ( pNext == rhs.pNext )
10566 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10567 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10568 }
10569
10570 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10571 {
10572 return !operator==( rhs );
10573 }
10574
10575 private:
10576 StructureType sType;
10577
10578 public:
10579 void* pNext;
10580 uint32_t maxMultiviewViewCount;
10581 uint32_t maxMultiviewInstanceIndex;
10582 };
10583 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10584
10585 struct RenderPassMultiviewCreateInfoKHX
10586 {
10587 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 )
10588 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10589 , pNext( nullptr )
10590 , subpassCount( subpassCount_ )
10591 , pViewMasks( pViewMasks_ )
10592 , dependencyCount( dependencyCount_ )
10593 , pViewOffsets( pViewOffsets_ )
10594 , correlationMaskCount( correlationMaskCount_ )
10595 , pCorrelationMasks( pCorrelationMasks_ )
10596 {
10597 }
10598
10599 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10600 {
10601 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10602 }
10603
10604 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10605 {
10606 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10607 return *this;
10608 }
10609
10610 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10611 {
10612 pNext = pNext_;
10613 return *this;
10614 }
10615
10616 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10617 {
10618 subpassCount = subpassCount_;
10619 return *this;
10620 }
10621
10622 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10623 {
10624 pViewMasks = pViewMasks_;
10625 return *this;
10626 }
10627
10628 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10629 {
10630 dependencyCount = dependencyCount_;
10631 return *this;
10632 }
10633
10634 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10635 {
10636 pViewOffsets = pViewOffsets_;
10637 return *this;
10638 }
10639
10640 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10641 {
10642 correlationMaskCount = correlationMaskCount_;
10643 return *this;
10644 }
10645
10646 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10647 {
10648 pCorrelationMasks = pCorrelationMasks_;
10649 return *this;
10650 }
10651
10652 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10653 {
10654 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10655 }
10656
10657 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10658 {
10659 return ( sType == rhs.sType )
10660 && ( pNext == rhs.pNext )
10661 && ( subpassCount == rhs.subpassCount )
10662 && ( pViewMasks == rhs.pViewMasks )
10663 && ( dependencyCount == rhs.dependencyCount )
10664 && ( pViewOffsets == rhs.pViewOffsets )
10665 && ( correlationMaskCount == rhs.correlationMaskCount )
10666 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10667 }
10668
10669 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10670 {
10671 return !operator==( rhs );
10672 }
10673
10674 private:
10675 StructureType sType;
10676
10677 public:
10678 const void* pNext;
10679 uint32_t subpassCount;
10680 const uint32_t* pViewMasks;
10681 uint32_t dependencyCount;
10682 const int32_t* pViewOffsets;
10683 uint32_t correlationMaskCount;
10684 const uint32_t* pCorrelationMasks;
10685 };
10686 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10687
10688 struct BindBufferMemoryInfoKHX
10689 {
10690 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10691 : sType( StructureType::eBindBufferMemoryInfoKHX )
10692 , pNext( nullptr )
10693 , buffer( buffer_ )
10694 , memory( memory_ )
10695 , memoryOffset( memoryOffset_ )
10696 , deviceIndexCount( deviceIndexCount_ )
10697 , pDeviceIndices( pDeviceIndices_ )
10698 {
10699 }
10700
10701 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10702 {
10703 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10704 }
10705
10706 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10707 {
10708 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10709 return *this;
10710 }
10711
10712 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10713 {
10714 pNext = pNext_;
10715 return *this;
10716 }
10717
10718 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10719 {
10720 buffer = buffer_;
10721 return *this;
10722 }
10723
10724 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10725 {
10726 memory = memory_;
10727 return *this;
10728 }
10729
10730 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10731 {
10732 memoryOffset = memoryOffset_;
10733 return *this;
10734 }
10735
10736 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10737 {
10738 deviceIndexCount = deviceIndexCount_;
10739 return *this;
10740 }
10741
10742 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10743 {
10744 pDeviceIndices = pDeviceIndices_;
10745 return *this;
10746 }
10747
10748 operator const VkBindBufferMemoryInfoKHX&() const
10749 {
10750 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10751 }
10752
10753 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10754 {
10755 return ( sType == rhs.sType )
10756 && ( pNext == rhs.pNext )
10757 && ( buffer == rhs.buffer )
10758 && ( memory == rhs.memory )
10759 && ( memoryOffset == rhs.memoryOffset )
10760 && ( deviceIndexCount == rhs.deviceIndexCount )
10761 && ( pDeviceIndices == rhs.pDeviceIndices );
10762 }
10763
10764 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10765 {
10766 return !operator==( rhs );
10767 }
10768
10769 private:
10770 StructureType sType;
10771
10772 public:
10773 const void* pNext;
10774 Buffer buffer;
10775 DeviceMemory memory;
10776 DeviceSize memoryOffset;
10777 uint32_t deviceIndexCount;
10778 const uint32_t* pDeviceIndices;
10779 };
10780 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10781
10782 struct BindImageMemoryInfoKHX
10783 {
10784 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 )
10785 : sType( StructureType::eBindImageMemoryInfoKHX )
10786 , pNext( nullptr )
10787 , image( image_ )
10788 , memory( memory_ )
10789 , memoryOffset( memoryOffset_ )
10790 , deviceIndexCount( deviceIndexCount_ )
10791 , pDeviceIndices( pDeviceIndices_ )
10792 , SFRRectCount( SFRRectCount_ )
10793 , pSFRRects( pSFRRects_ )
10794 {
10795 }
10796
10797 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10798 {
10799 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10800 }
10801
10802 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10803 {
10804 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10805 return *this;
10806 }
10807
10808 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10809 {
10810 pNext = pNext_;
10811 return *this;
10812 }
10813
10814 BindImageMemoryInfoKHX& setImage( Image image_ )
10815 {
10816 image = image_;
10817 return *this;
10818 }
10819
10820 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10821 {
10822 memory = memory_;
10823 return *this;
10824 }
10825
10826 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10827 {
10828 memoryOffset = memoryOffset_;
10829 return *this;
10830 }
10831
10832 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10833 {
10834 deviceIndexCount = deviceIndexCount_;
10835 return *this;
10836 }
10837
10838 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10839 {
10840 pDeviceIndices = pDeviceIndices_;
10841 return *this;
10842 }
10843
10844 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
10845 {
10846 SFRRectCount = SFRRectCount_;
10847 return *this;
10848 }
10849
10850 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
10851 {
10852 pSFRRects = pSFRRects_;
10853 return *this;
10854 }
10855
10856 operator const VkBindImageMemoryInfoKHX&() const
10857 {
10858 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
10859 }
10860
10861 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
10862 {
10863 return ( sType == rhs.sType )
10864 && ( pNext == rhs.pNext )
10865 && ( image == rhs.image )
10866 && ( memory == rhs.memory )
10867 && ( memoryOffset == rhs.memoryOffset )
10868 && ( deviceIndexCount == rhs.deviceIndexCount )
10869 && ( pDeviceIndices == rhs.pDeviceIndices )
10870 && ( SFRRectCount == rhs.SFRRectCount )
10871 && ( pSFRRects == rhs.pSFRRects );
10872 }
10873
10874 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
10875 {
10876 return !operator==( rhs );
10877 }
10878
10879 private:
10880 StructureType sType;
10881
10882 public:
10883 const void* pNext;
10884 Image image;
10885 DeviceMemory memory;
10886 DeviceSize memoryOffset;
10887 uint32_t deviceIndexCount;
10888 const uint32_t* pDeviceIndices;
10889 uint32_t SFRRectCount;
10890 const Rect2D* pSFRRects;
10891 };
10892 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
10893
10894 struct DeviceGroupRenderPassBeginInfoKHX
10895 {
10896 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
10897 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
10898 , pNext( nullptr )
10899 , deviceMask( deviceMask_ )
10900 , deviceRenderAreaCount( deviceRenderAreaCount_ )
10901 , pDeviceRenderAreas( pDeviceRenderAreas_ )
10902 {
10903 }
10904
10905 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10906 {
10907 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10908 }
10909
10910 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10911 {
10912 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10913 return *this;
10914 }
10915
10916 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
10917 {
10918 pNext = pNext_;
10919 return *this;
10920 }
10921
10922 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
10923 {
10924 deviceMask = deviceMask_;
10925 return *this;
10926 }
10927
10928 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
10929 {
10930 deviceRenderAreaCount = deviceRenderAreaCount_;
10931 return *this;
10932 }
10933
10934 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
10935 {
10936 pDeviceRenderAreas = pDeviceRenderAreas_;
10937 return *this;
10938 }
10939
10940 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
10941 {
10942 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
10943 }
10944
10945 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10946 {
10947 return ( sType == rhs.sType )
10948 && ( pNext == rhs.pNext )
10949 && ( deviceMask == rhs.deviceMask )
10950 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
10951 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
10952 }
10953
10954 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10955 {
10956 return !operator==( rhs );
10957 }
10958
10959 private:
10960 StructureType sType;
10961
10962 public:
10963 const void* pNext;
10964 uint32_t deviceMask;
10965 uint32_t deviceRenderAreaCount;
10966 const Rect2D* pDeviceRenderAreas;
10967 };
10968 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
10969
10970 struct DeviceGroupCommandBufferBeginInfoKHX
10971 {
10972 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
10973 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
10974 , pNext( nullptr )
10975 , deviceMask( deviceMask_ )
10976 {
10977 }
10978
10979 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10980 {
10981 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10982 }
10983
10984 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10985 {
10986 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10987 return *this;
10988 }
10989
10990 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
10991 {
10992 pNext = pNext_;
10993 return *this;
10994 }
10995
10996 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
10997 {
10998 deviceMask = deviceMask_;
10999 return *this;
11000 }
11001
11002 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11003 {
11004 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11005 }
11006
11007 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11008 {
11009 return ( sType == rhs.sType )
11010 && ( pNext == rhs.pNext )
11011 && ( deviceMask == rhs.deviceMask );
11012 }
11013
11014 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11015 {
11016 return !operator==( rhs );
11017 }
11018
11019 private:
11020 StructureType sType;
11021
11022 public:
11023 const void* pNext;
11024 uint32_t deviceMask;
11025 };
11026 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11027
11028 struct DeviceGroupSubmitInfoKHX
11029 {
11030 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 )
11031 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11032 , pNext( nullptr )
11033 , waitSemaphoreCount( waitSemaphoreCount_ )
11034 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11035 , commandBufferCount( commandBufferCount_ )
11036 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11037 , signalSemaphoreCount( signalSemaphoreCount_ )
11038 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11039 {
11040 }
11041
11042 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11043 {
11044 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11045 }
11046
11047 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11048 {
11049 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11050 return *this;
11051 }
11052
11053 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11054 {
11055 pNext = pNext_;
11056 return *this;
11057 }
11058
11059 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11060 {
11061 waitSemaphoreCount = waitSemaphoreCount_;
11062 return *this;
11063 }
11064
11065 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11066 {
11067 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11068 return *this;
11069 }
11070
11071 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11072 {
11073 commandBufferCount = commandBufferCount_;
11074 return *this;
11075 }
11076
11077 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11078 {
11079 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11080 return *this;
11081 }
11082
11083 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11084 {
11085 signalSemaphoreCount = signalSemaphoreCount_;
11086 return *this;
11087 }
11088
11089 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11090 {
11091 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11092 return *this;
11093 }
11094
11095 operator const VkDeviceGroupSubmitInfoKHX&() const
11096 {
11097 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11098 }
11099
11100 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11101 {
11102 return ( sType == rhs.sType )
11103 && ( pNext == rhs.pNext )
11104 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11105 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11106 && ( commandBufferCount == rhs.commandBufferCount )
11107 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11108 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11109 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11110 }
11111
11112 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11113 {
11114 return !operator==( rhs );
11115 }
11116
11117 private:
11118 StructureType sType;
11119
11120 public:
11121 const void* pNext;
11122 uint32_t waitSemaphoreCount;
11123 const uint32_t* pWaitSemaphoreDeviceIndices;
11124 uint32_t commandBufferCount;
11125 const uint32_t* pCommandBufferDeviceMasks;
11126 uint32_t signalSemaphoreCount;
11127 const uint32_t* pSignalSemaphoreDeviceIndices;
11128 };
11129 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11130
11131 struct DeviceGroupBindSparseInfoKHX
11132 {
11133 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11134 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11135 , pNext( nullptr )
11136 , resourceDeviceIndex( resourceDeviceIndex_ )
11137 , memoryDeviceIndex( memoryDeviceIndex_ )
11138 {
11139 }
11140
11141 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11142 {
11143 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11144 }
11145
11146 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11147 {
11148 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11149 return *this;
11150 }
11151
11152 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11153 {
11154 pNext = pNext_;
11155 return *this;
11156 }
11157
11158 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11159 {
11160 resourceDeviceIndex = resourceDeviceIndex_;
11161 return *this;
11162 }
11163
11164 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11165 {
11166 memoryDeviceIndex = memoryDeviceIndex_;
11167 return *this;
11168 }
11169
11170 operator const VkDeviceGroupBindSparseInfoKHX&() const
11171 {
11172 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11173 }
11174
11175 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11176 {
11177 return ( sType == rhs.sType )
11178 && ( pNext == rhs.pNext )
11179 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11180 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11181 }
11182
11183 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11184 {
11185 return !operator==( rhs );
11186 }
11187
11188 private:
11189 StructureType sType;
11190
11191 public:
11192 const void* pNext;
11193 uint32_t resourceDeviceIndex;
11194 uint32_t memoryDeviceIndex;
11195 };
11196 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11197
11198 struct ImageSwapchainCreateInfoKHX
11199 {
11200 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11201 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11202 , pNext( nullptr )
11203 , swapchain( swapchain_ )
11204 {
11205 }
11206
11207 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11208 {
11209 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11210 }
11211
11212 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11213 {
11214 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11215 return *this;
11216 }
11217
11218 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11219 {
11220 pNext = pNext_;
11221 return *this;
11222 }
11223
11224 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11225 {
11226 swapchain = swapchain_;
11227 return *this;
11228 }
11229
11230 operator const VkImageSwapchainCreateInfoKHX&() const
11231 {
11232 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11233 }
11234
11235 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11236 {
11237 return ( sType == rhs.sType )
11238 && ( pNext == rhs.pNext )
11239 && ( swapchain == rhs.swapchain );
11240 }
11241
11242 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11243 {
11244 return !operator==( rhs );
11245 }
11246
11247 private:
11248 StructureType sType;
11249
11250 public:
11251 const void* pNext;
11252 SwapchainKHR swapchain;
11253 };
11254 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11255
11256 struct BindImageMemorySwapchainInfoKHX
11257 {
11258 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11259 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11260 , pNext( nullptr )
11261 , swapchain( swapchain_ )
11262 , imageIndex( imageIndex_ )
11263 {
11264 }
11265
11266 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11267 {
11268 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11269 }
11270
11271 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11272 {
11273 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11274 return *this;
11275 }
11276
11277 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11278 {
11279 pNext = pNext_;
11280 return *this;
11281 }
11282
11283 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11284 {
11285 swapchain = swapchain_;
11286 return *this;
11287 }
11288
11289 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11290 {
11291 imageIndex = imageIndex_;
11292 return *this;
11293 }
11294
11295 operator const VkBindImageMemorySwapchainInfoKHX&() const
11296 {
11297 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11298 }
11299
11300 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11301 {
11302 return ( sType == rhs.sType )
11303 && ( pNext == rhs.pNext )
11304 && ( swapchain == rhs.swapchain )
11305 && ( imageIndex == rhs.imageIndex );
11306 }
11307
11308 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11309 {
11310 return !operator==( rhs );
11311 }
11312
11313 private:
11314 StructureType sType;
11315
11316 public:
11317 const void* pNext;
11318 SwapchainKHR swapchain;
11319 uint32_t imageIndex;
11320 };
11321 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11322
11323 struct AcquireNextImageInfoKHX
11324 {
11325 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11326 : sType( StructureType::eAcquireNextImageInfoKHX )
11327 , pNext( nullptr )
11328 , swapchain( swapchain_ )
11329 , timeout( timeout_ )
11330 , semaphore( semaphore_ )
11331 , fence( fence_ )
11332 , deviceMask( deviceMask_ )
11333 {
11334 }
11335
11336 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11337 {
11338 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11339 }
11340
11341 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11342 {
11343 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11344 return *this;
11345 }
11346
11347 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11348 {
11349 pNext = pNext_;
11350 return *this;
11351 }
11352
11353 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11354 {
11355 swapchain = swapchain_;
11356 return *this;
11357 }
11358
11359 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11360 {
11361 timeout = timeout_;
11362 return *this;
11363 }
11364
11365 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11366 {
11367 semaphore = semaphore_;
11368 return *this;
11369 }
11370
11371 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11372 {
11373 fence = fence_;
11374 return *this;
11375 }
11376
11377 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11378 {
11379 deviceMask = deviceMask_;
11380 return *this;
11381 }
11382
11383 operator const VkAcquireNextImageInfoKHX&() const
11384 {
11385 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11386 }
11387
11388 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11389 {
11390 return ( sType == rhs.sType )
11391 && ( pNext == rhs.pNext )
11392 && ( swapchain == rhs.swapchain )
11393 && ( timeout == rhs.timeout )
11394 && ( semaphore == rhs.semaphore )
11395 && ( fence == rhs.fence )
11396 && ( deviceMask == rhs.deviceMask );
11397 }
11398
11399 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11400 {
11401 return !operator==( rhs );
11402 }
11403
11404 private:
11405 StructureType sType;
11406
11407 public:
11408 const void* pNext;
11409 SwapchainKHR swapchain;
11410 uint64_t timeout;
11411 Semaphore semaphore;
11412 Fence fence;
11413 uint32_t deviceMask;
11414 };
11415 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11416
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011417 struct HdrMetadataEXT
11418 {
11419 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 )
11420 : sType( StructureType::eHdrMetadataEXT )
11421 , pNext( nullptr )
11422 , displayPrimaryRed( displayPrimaryRed_ )
11423 , displayPrimaryGreen( displayPrimaryGreen_ )
11424 , displayPrimaryBlue( displayPrimaryBlue_ )
11425 , whitePoint( whitePoint_ )
11426 , maxLuminance( maxLuminance_ )
11427 , minLuminance( minLuminance_ )
11428 , maxContentLightLevel( maxContentLightLevel_ )
11429 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11430 {
11431 }
11432
11433 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11434 {
11435 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11436 }
11437
11438 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11439 {
11440 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11441 return *this;
11442 }
11443
11444 HdrMetadataEXT& setPNext( const void* pNext_ )
11445 {
11446 pNext = pNext_;
11447 return *this;
11448 }
11449
11450 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11451 {
11452 displayPrimaryRed = displayPrimaryRed_;
11453 return *this;
11454 }
11455
11456 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11457 {
11458 displayPrimaryGreen = displayPrimaryGreen_;
11459 return *this;
11460 }
11461
11462 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11463 {
11464 displayPrimaryBlue = displayPrimaryBlue_;
11465 return *this;
11466 }
11467
11468 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11469 {
11470 whitePoint = whitePoint_;
11471 return *this;
11472 }
11473
11474 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11475 {
11476 maxLuminance = maxLuminance_;
11477 return *this;
11478 }
11479
11480 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11481 {
11482 minLuminance = minLuminance_;
11483 return *this;
11484 }
11485
11486 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11487 {
11488 maxContentLightLevel = maxContentLightLevel_;
11489 return *this;
11490 }
11491
11492 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11493 {
11494 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11495 return *this;
11496 }
11497
11498 operator const VkHdrMetadataEXT&() const
11499 {
11500 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11501 }
11502
11503 bool operator==( HdrMetadataEXT const& rhs ) const
11504 {
11505 return ( sType == rhs.sType )
11506 && ( pNext == rhs.pNext )
11507 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11508 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11509 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11510 && ( whitePoint == rhs.whitePoint )
11511 && ( maxLuminance == rhs.maxLuminance )
11512 && ( minLuminance == rhs.minLuminance )
11513 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11514 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11515 }
11516
11517 bool operator!=( HdrMetadataEXT const& rhs ) const
11518 {
11519 return !operator==( rhs );
11520 }
11521
11522 private:
11523 StructureType sType;
11524
11525 public:
11526 const void* pNext;
11527 XYColorEXT displayPrimaryRed;
11528 XYColorEXT displayPrimaryGreen;
11529 XYColorEXT displayPrimaryBlue;
11530 XYColorEXT whitePoint;
11531 float maxLuminance;
11532 float minLuminance;
11533 float maxContentLightLevel;
11534 float maxFrameAverageLightLevel;
11535 };
11536 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11537
11538 struct PresentTimesInfoGOOGLE
11539 {
11540 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11541 : sType( StructureType::ePresentTimesInfoGOOGLE )
11542 , pNext( nullptr )
11543 , swapchainCount( swapchainCount_ )
11544 , pTimes( pTimes_ )
11545 {
11546 }
11547
11548 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11549 {
11550 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11551 }
11552
11553 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11554 {
11555 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11556 return *this;
11557 }
11558
11559 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11560 {
11561 pNext = pNext_;
11562 return *this;
11563 }
11564
11565 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11566 {
11567 swapchainCount = swapchainCount_;
11568 return *this;
11569 }
11570
11571 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11572 {
11573 pTimes = pTimes_;
11574 return *this;
11575 }
11576
11577 operator const VkPresentTimesInfoGOOGLE&() const
11578 {
11579 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11580 }
11581
11582 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11583 {
11584 return ( sType == rhs.sType )
11585 && ( pNext == rhs.pNext )
11586 && ( swapchainCount == rhs.swapchainCount )
11587 && ( pTimes == rhs.pTimes );
11588 }
11589
11590 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11591 {
11592 return !operator==( rhs );
11593 }
11594
11595 private:
11596 StructureType sType;
11597
11598 public:
11599 const void* pNext;
11600 uint32_t swapchainCount;
11601 const PresentTimeGOOGLE* pTimes;
11602 };
11603 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11604
Mark Young0f183a82017-02-28 09:58:04 -070011605#ifdef VK_USE_PLATFORM_IOS_MVK
11606 struct IOSSurfaceCreateInfoMVK
11607 {
11608 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11609 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11610 , pNext( nullptr )
11611 , flags( flags_ )
11612 , pView( pView_ )
11613 {
11614 }
11615
11616 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11617 {
11618 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11619 }
11620
11621 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11622 {
11623 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11624 return *this;
11625 }
11626
11627 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11628 {
11629 pNext = pNext_;
11630 return *this;
11631 }
11632
11633 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11634 {
11635 flags = flags_;
11636 return *this;
11637 }
11638
11639 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11640 {
11641 pView = pView_;
11642 return *this;
11643 }
11644
11645 operator const VkIOSSurfaceCreateInfoMVK&() const
11646 {
11647 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11648 }
11649
11650 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11651 {
11652 return ( sType == rhs.sType )
11653 && ( pNext == rhs.pNext )
11654 && ( flags == rhs.flags )
11655 && ( pView == rhs.pView );
11656 }
11657
11658 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11659 {
11660 return !operator==( rhs );
11661 }
11662
11663 private:
11664 StructureType sType;
11665
11666 public:
11667 const void* pNext;
11668 IOSSurfaceCreateFlagsMVK flags;
11669 const void* pView;
11670 };
11671 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11672#endif /*VK_USE_PLATFORM_IOS_MVK*/
11673
11674#ifdef VK_USE_PLATFORM_MACOS_MVK
11675 struct MacOSSurfaceCreateInfoMVK
11676 {
11677 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11678 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11679 , pNext( nullptr )
11680 , flags( flags_ )
11681 , pView( pView_ )
11682 {
11683 }
11684
11685 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11686 {
11687 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11688 }
11689
11690 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11691 {
11692 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11693 return *this;
11694 }
11695
11696 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11697 {
11698 pNext = pNext_;
11699 return *this;
11700 }
11701
11702 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11703 {
11704 flags = flags_;
11705 return *this;
11706 }
11707
11708 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11709 {
11710 pView = pView_;
11711 return *this;
11712 }
11713
11714 operator const VkMacOSSurfaceCreateInfoMVK&() const
11715 {
11716 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11717 }
11718
11719 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11720 {
11721 return ( sType == rhs.sType )
11722 && ( pNext == rhs.pNext )
11723 && ( flags == rhs.flags )
11724 && ( pView == rhs.pView );
11725 }
11726
11727 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11728 {
11729 return !operator==( rhs );
11730 }
11731
11732 private:
11733 StructureType sType;
11734
11735 public:
11736 const void* pNext;
11737 MacOSSurfaceCreateFlagsMVK flags;
11738 const void* pView;
11739 };
11740 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11741#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11742
11743 struct PipelineViewportWScalingStateCreateInfoNV
11744 {
11745 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11746 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11747 , pNext( nullptr )
11748 , viewportWScalingEnable( viewportWScalingEnable_ )
11749 , viewportCount( viewportCount_ )
11750 , pViewportWScalings( pViewportWScalings_ )
11751 {
11752 }
11753
11754 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11755 {
11756 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11757 }
11758
11759 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11760 {
11761 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11762 return *this;
11763 }
11764
11765 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11766 {
11767 pNext = pNext_;
11768 return *this;
11769 }
11770
11771 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11772 {
11773 viewportWScalingEnable = viewportWScalingEnable_;
11774 return *this;
11775 }
11776
11777 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11778 {
11779 viewportCount = viewportCount_;
11780 return *this;
11781 }
11782
11783 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11784 {
11785 pViewportWScalings = pViewportWScalings_;
11786 return *this;
11787 }
11788
11789 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11790 {
11791 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11792 }
11793
11794 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11795 {
11796 return ( sType == rhs.sType )
11797 && ( pNext == rhs.pNext )
11798 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11799 && ( viewportCount == rhs.viewportCount )
11800 && ( pViewportWScalings == rhs.pViewportWScalings );
11801 }
11802
11803 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11804 {
11805 return !operator==( rhs );
11806 }
11807
11808 private:
11809 StructureType sType;
11810
11811 public:
11812 const void* pNext;
11813 Bool32 viewportWScalingEnable;
11814 uint32_t viewportCount;
11815 const ViewportWScalingNV* pViewportWScalings;
11816 };
11817 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
11818
11819 struct PhysicalDeviceDiscardRectanglePropertiesEXT
11820 {
11821 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
11822 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
11823 , pNext( nullptr )
11824 , maxDiscardRectangles( maxDiscardRectangles_ )
11825 {
11826 }
11827
11828 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11829 {
11830 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11831 }
11832
11833 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11834 {
11835 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11836 return *this;
11837 }
11838
11839 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( const void* pNext_ )
11840 {
11841 pNext = pNext_;
11842 return *this;
11843 }
11844
11845 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
11846 {
11847 maxDiscardRectangles = maxDiscardRectangles_;
11848 return *this;
11849 }
11850
11851 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
11852 {
11853 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
11854 }
11855
11856 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11857 {
11858 return ( sType == rhs.sType )
11859 && ( pNext == rhs.pNext )
11860 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
11861 }
11862
11863 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11864 {
11865 return !operator==( rhs );
11866 }
11867
11868 private:
11869 StructureType sType;
11870
11871 public:
11872 const void* pNext;
11873 uint32_t maxDiscardRectangles;
11874 };
11875 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
11876
11877 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
11878 {
11879 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
11880 {
11881 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
11882 }
11883
11884 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11885 {
11886 return ( sType == rhs.sType )
11887 && ( pNext == rhs.pNext )
11888 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
11889 }
11890
11891 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11892 {
11893 return !operator==( rhs );
11894 }
11895
11896 private:
11897 StructureType sType;
11898
11899 public:
11900 void* pNext;
11901 Bool32 perViewPositionAllComponents;
11902 };
11903 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
11904
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011905 enum class SubpassContents
11906 {
11907 eInline = VK_SUBPASS_CONTENTS_INLINE,
11908 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
11909 };
11910
11911 struct PresentInfoKHR
11912 {
11913 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 )
11914 : sType( StructureType::ePresentInfoKHR )
11915 , pNext( nullptr )
11916 , waitSemaphoreCount( waitSemaphoreCount_ )
11917 , pWaitSemaphores( pWaitSemaphores_ )
11918 , swapchainCount( swapchainCount_ )
11919 , pSwapchains( pSwapchains_ )
11920 , pImageIndices( pImageIndices_ )
11921 , pResults( pResults_ )
11922 {
11923 }
11924
11925 PresentInfoKHR( VkPresentInfoKHR const & rhs )
11926 {
11927 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11928 }
11929
11930 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
11931 {
11932 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11933 return *this;
11934 }
11935
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011936 PresentInfoKHR& setPNext( const void* pNext_ )
11937 {
11938 pNext = pNext_;
11939 return *this;
11940 }
11941
11942 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11943 {
11944 waitSemaphoreCount = waitSemaphoreCount_;
11945 return *this;
11946 }
11947
11948 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
11949 {
11950 pWaitSemaphores = pWaitSemaphores_;
11951 return *this;
11952 }
11953
11954 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
11955 {
11956 swapchainCount = swapchainCount_;
11957 return *this;
11958 }
11959
11960 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
11961 {
11962 pSwapchains = pSwapchains_;
11963 return *this;
11964 }
11965
11966 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
11967 {
11968 pImageIndices = pImageIndices_;
11969 return *this;
11970 }
11971
11972 PresentInfoKHR& setPResults( Result* pResults_ )
11973 {
11974 pResults = pResults_;
11975 return *this;
11976 }
11977
11978 operator const VkPresentInfoKHR&() const
11979 {
11980 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
11981 }
11982
11983 bool operator==( PresentInfoKHR const& rhs ) const
11984 {
11985 return ( sType == rhs.sType )
11986 && ( pNext == rhs.pNext )
11987 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11988 && ( pWaitSemaphores == rhs.pWaitSemaphores )
11989 && ( swapchainCount == rhs.swapchainCount )
11990 && ( pSwapchains == rhs.pSwapchains )
11991 && ( pImageIndices == rhs.pImageIndices )
11992 && ( pResults == rhs.pResults );
11993 }
11994
11995 bool operator!=( PresentInfoKHR const& rhs ) const
11996 {
11997 return !operator==( rhs );
11998 }
11999
12000 private:
12001 StructureType sType;
12002
12003 public:
12004 const void* pNext;
12005 uint32_t waitSemaphoreCount;
12006 const Semaphore* pWaitSemaphores;
12007 uint32_t swapchainCount;
12008 const SwapchainKHR* pSwapchains;
12009 const uint32_t* pImageIndices;
12010 Result* pResults;
12011 };
12012 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12013
12014 enum class DynamicState
12015 {
12016 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12017 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12018 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12019 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12020 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12021 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12022 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12023 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012024 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12025 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12026 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012027 };
12028
12029 struct PipelineDynamicStateCreateInfo
12030 {
12031 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12032 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12033 , pNext( nullptr )
12034 , flags( flags_ )
12035 , dynamicStateCount( dynamicStateCount_ )
12036 , pDynamicStates( pDynamicStates_ )
12037 {
12038 }
12039
12040 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12041 {
12042 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12043 }
12044
12045 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12046 {
12047 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12048 return *this;
12049 }
12050
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012051 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12052 {
12053 pNext = pNext_;
12054 return *this;
12055 }
12056
12057 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12058 {
12059 flags = flags_;
12060 return *this;
12061 }
12062
12063 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12064 {
12065 dynamicStateCount = dynamicStateCount_;
12066 return *this;
12067 }
12068
12069 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12070 {
12071 pDynamicStates = pDynamicStates_;
12072 return *this;
12073 }
12074
12075 operator const VkPipelineDynamicStateCreateInfo&() const
12076 {
12077 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12078 }
12079
12080 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12081 {
12082 return ( sType == rhs.sType )
12083 && ( pNext == rhs.pNext )
12084 && ( flags == rhs.flags )
12085 && ( dynamicStateCount == rhs.dynamicStateCount )
12086 && ( pDynamicStates == rhs.pDynamicStates );
12087 }
12088
12089 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12090 {
12091 return !operator==( rhs );
12092 }
12093
12094 private:
12095 StructureType sType;
12096
12097 public:
12098 const void* pNext;
12099 PipelineDynamicStateCreateFlags flags;
12100 uint32_t dynamicStateCount;
12101 const DynamicState* pDynamicStates;
12102 };
12103 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12104
Mark Young0f183a82017-02-28 09:58:04 -070012105 enum class DescriptorUpdateTemplateTypeKHR
12106 {
12107 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12108 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12109 };
12110
12111 struct DescriptorUpdateTemplateCreateInfoKHR
12112 {
12113 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 )
12114 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12115 , pNext( nullptr )
12116 , flags( flags_ )
12117 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12118 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12119 , templateType( templateType_ )
12120 , descriptorSetLayout( descriptorSetLayout_ )
12121 , pipelineBindPoint( pipelineBindPoint_ )
12122 , pipelineLayout( pipelineLayout_ )
12123 , set( set_ )
12124 {
12125 }
12126
12127 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12128 {
12129 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12130 }
12131
12132 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12133 {
12134 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12135 return *this;
12136 }
12137
12138 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12139 {
12140 pNext = pNext_;
12141 return *this;
12142 }
12143
12144 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12145 {
12146 flags = flags_;
12147 return *this;
12148 }
12149
12150 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12151 {
12152 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12153 return *this;
12154 }
12155
12156 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12157 {
12158 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12159 return *this;
12160 }
12161
12162 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12163 {
12164 templateType = templateType_;
12165 return *this;
12166 }
12167
12168 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12169 {
12170 descriptorSetLayout = descriptorSetLayout_;
12171 return *this;
12172 }
12173
12174 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12175 {
12176 pipelineBindPoint = pipelineBindPoint_;
12177 return *this;
12178 }
12179
12180 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12181 {
12182 pipelineLayout = pipelineLayout_;
12183 return *this;
12184 }
12185
12186 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12187 {
12188 set = set_;
12189 return *this;
12190 }
12191
12192 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12193 {
12194 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12195 }
12196
12197 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12198 {
12199 return ( sType == rhs.sType )
12200 && ( pNext == rhs.pNext )
12201 && ( flags == rhs.flags )
12202 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12203 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12204 && ( templateType == rhs.templateType )
12205 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12206 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12207 && ( pipelineLayout == rhs.pipelineLayout )
12208 && ( set == rhs.set );
12209 }
12210
12211 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12212 {
12213 return !operator==( rhs );
12214 }
12215
12216 private:
12217 StructureType sType;
12218
12219 public:
12220 void* pNext;
12221 DescriptorUpdateTemplateCreateFlagsKHR flags;
12222 uint32_t descriptorUpdateEntryCount;
12223 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12224 DescriptorUpdateTemplateTypeKHR templateType;
12225 DescriptorSetLayout descriptorSetLayout;
12226 PipelineBindPoint pipelineBindPoint;
12227 PipelineLayout pipelineLayout;
12228 uint32_t set;
12229 };
12230 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12231
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012232 enum class QueueFlagBits
12233 {
12234 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12235 eCompute = VK_QUEUE_COMPUTE_BIT,
12236 eTransfer = VK_QUEUE_TRANSFER_BIT,
12237 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12238 };
12239
12240 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012242 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012243 {
12244 return QueueFlags( bit0 ) | bit1;
12245 }
12246
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012247 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12248 {
12249 return ~( QueueFlags( bits ) );
12250 }
12251
12252 template <> struct FlagTraits<QueueFlagBits>
12253 {
12254 enum
12255 {
12256 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12257 };
12258 };
12259
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012260 struct QueueFamilyProperties
12261 {
12262 operator const VkQueueFamilyProperties&() const
12263 {
12264 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12265 }
12266
12267 bool operator==( QueueFamilyProperties const& rhs ) const
12268 {
12269 return ( queueFlags == rhs.queueFlags )
12270 && ( queueCount == rhs.queueCount )
12271 && ( timestampValidBits == rhs.timestampValidBits )
12272 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12273 }
12274
12275 bool operator!=( QueueFamilyProperties const& rhs ) const
12276 {
12277 return !operator==( rhs );
12278 }
12279
12280 QueueFlags queueFlags;
12281 uint32_t queueCount;
12282 uint32_t timestampValidBits;
12283 Extent3D minImageTransferGranularity;
12284 };
12285 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12286
Mark Young39389872017-01-19 21:10:49 -070012287 struct QueueFamilyProperties2KHR
12288 {
12289 operator const VkQueueFamilyProperties2KHR&() const
12290 {
12291 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12292 }
12293
12294 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12295 {
12296 return ( sType == rhs.sType )
12297 && ( pNext == rhs.pNext )
12298 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12299 }
12300
12301 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12302 {
12303 return !operator==( rhs );
12304 }
12305
12306 private:
12307 StructureType sType;
12308
12309 public:
12310 void* pNext;
12311 QueueFamilyProperties queueFamilyProperties;
12312 };
12313 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12314
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012315 enum class MemoryPropertyFlagBits
12316 {
12317 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12318 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12319 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12320 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12321 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12322 };
12323
12324 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12325
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012326 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012327 {
12328 return MemoryPropertyFlags( bit0 ) | bit1;
12329 }
12330
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012331 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12332 {
12333 return ~( MemoryPropertyFlags( bits ) );
12334 }
12335
12336 template <> struct FlagTraits<MemoryPropertyFlagBits>
12337 {
12338 enum
12339 {
12340 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12341 };
12342 };
12343
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012344 struct MemoryType
12345 {
12346 operator const VkMemoryType&() const
12347 {
12348 return *reinterpret_cast<const VkMemoryType*>(this);
12349 }
12350
12351 bool operator==( MemoryType const& rhs ) const
12352 {
12353 return ( propertyFlags == rhs.propertyFlags )
12354 && ( heapIndex == rhs.heapIndex );
12355 }
12356
12357 bool operator!=( MemoryType const& rhs ) const
12358 {
12359 return !operator==( rhs );
12360 }
12361
12362 MemoryPropertyFlags propertyFlags;
12363 uint32_t heapIndex;
12364 };
12365 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12366
12367 enum class MemoryHeapFlagBits
12368 {
Mark Young0f183a82017-02-28 09:58:04 -070012369 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12370 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012371 };
12372
12373 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12374
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012375 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012376 {
12377 return MemoryHeapFlags( bit0 ) | bit1;
12378 }
12379
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012380 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12381 {
12382 return ~( MemoryHeapFlags( bits ) );
12383 }
12384
12385 template <> struct FlagTraits<MemoryHeapFlagBits>
12386 {
12387 enum
12388 {
Mark Young0f183a82017-02-28 09:58:04 -070012389 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012390 };
12391 };
12392
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012393 struct MemoryHeap
12394 {
12395 operator const VkMemoryHeap&() const
12396 {
12397 return *reinterpret_cast<const VkMemoryHeap*>(this);
12398 }
12399
12400 bool operator==( MemoryHeap const& rhs ) const
12401 {
12402 return ( size == rhs.size )
12403 && ( flags == rhs.flags );
12404 }
12405
12406 bool operator!=( MemoryHeap const& rhs ) const
12407 {
12408 return !operator==( rhs );
12409 }
12410
12411 DeviceSize size;
12412 MemoryHeapFlags flags;
12413 };
12414 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12415
12416 struct PhysicalDeviceMemoryProperties
12417 {
12418 operator const VkPhysicalDeviceMemoryProperties&() const
12419 {
12420 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12421 }
12422
12423 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12424 {
12425 return ( memoryTypeCount == rhs.memoryTypeCount )
12426 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12427 && ( memoryHeapCount == rhs.memoryHeapCount )
12428 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12429 }
12430
12431 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12432 {
12433 return !operator==( rhs );
12434 }
12435
12436 uint32_t memoryTypeCount;
12437 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12438 uint32_t memoryHeapCount;
12439 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12440 };
12441 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12442
Mark Young39389872017-01-19 21:10:49 -070012443 struct PhysicalDeviceMemoryProperties2KHR
12444 {
12445 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12446 {
12447 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12448 }
12449
12450 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12451 {
12452 return ( sType == rhs.sType )
12453 && ( pNext == rhs.pNext )
12454 && ( memoryProperties == rhs.memoryProperties );
12455 }
12456
12457 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12458 {
12459 return !operator==( rhs );
12460 }
12461
12462 private:
12463 StructureType sType;
12464
12465 public:
12466 void* pNext;
12467 PhysicalDeviceMemoryProperties memoryProperties;
12468 };
12469 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12470
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012471 enum class AccessFlagBits
12472 {
12473 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12474 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12475 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12476 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12477 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12478 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12479 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12480 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12481 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12482 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12483 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12484 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12485 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12486 eHostRead = VK_ACCESS_HOST_READ_BIT,
12487 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12488 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012489 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12490 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12491 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012492 };
12493
12494 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12495
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012496 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012497 {
12498 return AccessFlags( bit0 ) | bit1;
12499 }
12500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012501 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12502 {
12503 return ~( AccessFlags( bits ) );
12504 }
12505
12506 template <> struct FlagTraits<AccessFlagBits>
12507 {
12508 enum
12509 {
12510 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)
12511 };
12512 };
12513
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012514 struct MemoryBarrier
12515 {
12516 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12517 : sType( StructureType::eMemoryBarrier )
12518 , pNext( nullptr )
12519 , srcAccessMask( srcAccessMask_ )
12520 , dstAccessMask( dstAccessMask_ )
12521 {
12522 }
12523
12524 MemoryBarrier( VkMemoryBarrier const & rhs )
12525 {
12526 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12527 }
12528
12529 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12530 {
12531 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12532 return *this;
12533 }
12534
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012535 MemoryBarrier& setPNext( const void* pNext_ )
12536 {
12537 pNext = pNext_;
12538 return *this;
12539 }
12540
12541 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12542 {
12543 srcAccessMask = srcAccessMask_;
12544 return *this;
12545 }
12546
12547 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12548 {
12549 dstAccessMask = dstAccessMask_;
12550 return *this;
12551 }
12552
12553 operator const VkMemoryBarrier&() const
12554 {
12555 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12556 }
12557
12558 bool operator==( MemoryBarrier const& rhs ) const
12559 {
12560 return ( sType == rhs.sType )
12561 && ( pNext == rhs.pNext )
12562 && ( srcAccessMask == rhs.srcAccessMask )
12563 && ( dstAccessMask == rhs.dstAccessMask );
12564 }
12565
12566 bool operator!=( MemoryBarrier const& rhs ) const
12567 {
12568 return !operator==( rhs );
12569 }
12570
12571 private:
12572 StructureType sType;
12573
12574 public:
12575 const void* pNext;
12576 AccessFlags srcAccessMask;
12577 AccessFlags dstAccessMask;
12578 };
12579 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12580
12581 struct BufferMemoryBarrier
12582 {
12583 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12584 : sType( StructureType::eBufferMemoryBarrier )
12585 , pNext( nullptr )
12586 , srcAccessMask( srcAccessMask_ )
12587 , dstAccessMask( dstAccessMask_ )
12588 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12589 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12590 , buffer( buffer_ )
12591 , offset( offset_ )
12592 , size( size_ )
12593 {
12594 }
12595
12596 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12597 {
12598 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12599 }
12600
12601 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12602 {
12603 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12604 return *this;
12605 }
12606
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012607 BufferMemoryBarrier& setPNext( const void* pNext_ )
12608 {
12609 pNext = pNext_;
12610 return *this;
12611 }
12612
12613 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12614 {
12615 srcAccessMask = srcAccessMask_;
12616 return *this;
12617 }
12618
12619 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12620 {
12621 dstAccessMask = dstAccessMask_;
12622 return *this;
12623 }
12624
12625 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12626 {
12627 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12628 return *this;
12629 }
12630
12631 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12632 {
12633 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12634 return *this;
12635 }
12636
12637 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12638 {
12639 buffer = buffer_;
12640 return *this;
12641 }
12642
12643 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12644 {
12645 offset = offset_;
12646 return *this;
12647 }
12648
12649 BufferMemoryBarrier& setSize( DeviceSize size_ )
12650 {
12651 size = size_;
12652 return *this;
12653 }
12654
12655 operator const VkBufferMemoryBarrier&() const
12656 {
12657 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12658 }
12659
12660 bool operator==( BufferMemoryBarrier const& rhs ) const
12661 {
12662 return ( sType == rhs.sType )
12663 && ( pNext == rhs.pNext )
12664 && ( srcAccessMask == rhs.srcAccessMask )
12665 && ( dstAccessMask == rhs.dstAccessMask )
12666 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12667 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12668 && ( buffer == rhs.buffer )
12669 && ( offset == rhs.offset )
12670 && ( size == rhs.size );
12671 }
12672
12673 bool operator!=( BufferMemoryBarrier const& rhs ) const
12674 {
12675 return !operator==( rhs );
12676 }
12677
12678 private:
12679 StructureType sType;
12680
12681 public:
12682 const void* pNext;
12683 AccessFlags srcAccessMask;
12684 AccessFlags dstAccessMask;
12685 uint32_t srcQueueFamilyIndex;
12686 uint32_t dstQueueFamilyIndex;
12687 Buffer buffer;
12688 DeviceSize offset;
12689 DeviceSize size;
12690 };
12691 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12692
12693 enum class BufferUsageFlagBits
12694 {
12695 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12696 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12697 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12698 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12699 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12700 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12701 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12702 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12703 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12704 };
12705
12706 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012708 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012709 {
12710 return BufferUsageFlags( bit0 ) | bit1;
12711 }
12712
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012713 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12714 {
12715 return ~( BufferUsageFlags( bits ) );
12716 }
12717
12718 template <> struct FlagTraits<BufferUsageFlagBits>
12719 {
12720 enum
12721 {
12722 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)
12723 };
12724 };
12725
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012726 enum class BufferCreateFlagBits
12727 {
12728 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
12729 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
12730 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
12731 };
12732
12733 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
12734
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012735 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012736 {
12737 return BufferCreateFlags( bit0 ) | bit1;
12738 }
12739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012740 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
12741 {
12742 return ~( BufferCreateFlags( bits ) );
12743 }
12744
12745 template <> struct FlagTraits<BufferCreateFlagBits>
12746 {
12747 enum
12748 {
12749 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
12750 };
12751 };
12752
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012753 struct BufferCreateInfo
12754 {
12755 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
12756 : sType( StructureType::eBufferCreateInfo )
12757 , pNext( nullptr )
12758 , flags( flags_ )
12759 , size( size_ )
12760 , usage( usage_ )
12761 , sharingMode( sharingMode_ )
12762 , queueFamilyIndexCount( queueFamilyIndexCount_ )
12763 , pQueueFamilyIndices( pQueueFamilyIndices_ )
12764 {
12765 }
12766
12767 BufferCreateInfo( VkBufferCreateInfo const & rhs )
12768 {
12769 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12770 }
12771
12772 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
12773 {
12774 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12775 return *this;
12776 }
12777
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012778 BufferCreateInfo& setPNext( const void* pNext_ )
12779 {
12780 pNext = pNext_;
12781 return *this;
12782 }
12783
12784 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
12785 {
12786 flags = flags_;
12787 return *this;
12788 }
12789
12790 BufferCreateInfo& setSize( DeviceSize size_ )
12791 {
12792 size = size_;
12793 return *this;
12794 }
12795
12796 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
12797 {
12798 usage = usage_;
12799 return *this;
12800 }
12801
12802 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
12803 {
12804 sharingMode = sharingMode_;
12805 return *this;
12806 }
12807
12808 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
12809 {
12810 queueFamilyIndexCount = queueFamilyIndexCount_;
12811 return *this;
12812 }
12813
12814 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
12815 {
12816 pQueueFamilyIndices = pQueueFamilyIndices_;
12817 return *this;
12818 }
12819
12820 operator const VkBufferCreateInfo&() const
12821 {
12822 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
12823 }
12824
12825 bool operator==( BufferCreateInfo const& rhs ) const
12826 {
12827 return ( sType == rhs.sType )
12828 && ( pNext == rhs.pNext )
12829 && ( flags == rhs.flags )
12830 && ( size == rhs.size )
12831 && ( usage == rhs.usage )
12832 && ( sharingMode == rhs.sharingMode )
12833 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
12834 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
12835 }
12836
12837 bool operator!=( BufferCreateInfo const& rhs ) const
12838 {
12839 return !operator==( rhs );
12840 }
12841
12842 private:
12843 StructureType sType;
12844
12845 public:
12846 const void* pNext;
12847 BufferCreateFlags flags;
12848 DeviceSize size;
12849 BufferUsageFlags usage;
12850 SharingMode sharingMode;
12851 uint32_t queueFamilyIndexCount;
12852 const uint32_t* pQueueFamilyIndices;
12853 };
12854 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
12855
12856 enum class ShaderStageFlagBits
12857 {
12858 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
12859 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
12860 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
12861 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
12862 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
12863 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
12864 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
12865 eAll = VK_SHADER_STAGE_ALL
12866 };
12867
12868 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
12869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012870 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012871 {
12872 return ShaderStageFlags( bit0 ) | bit1;
12873 }
12874
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012875 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
12876 {
12877 return ~( ShaderStageFlags( bits ) );
12878 }
12879
12880 template <> struct FlagTraits<ShaderStageFlagBits>
12881 {
12882 enum
12883 {
12884 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)
12885 };
12886 };
12887
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012888 struct DescriptorSetLayoutBinding
12889 {
12890 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
12891 : binding( binding_ )
12892 , descriptorType( descriptorType_ )
12893 , descriptorCount( descriptorCount_ )
12894 , stageFlags( stageFlags_ )
12895 , pImmutableSamplers( pImmutableSamplers_ )
12896 {
12897 }
12898
12899 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
12900 {
12901 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12902 }
12903
12904 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
12905 {
12906 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12907 return *this;
12908 }
12909
12910 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
12911 {
12912 binding = binding_;
12913 return *this;
12914 }
12915
12916 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
12917 {
12918 descriptorType = descriptorType_;
12919 return *this;
12920 }
12921
12922 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
12923 {
12924 descriptorCount = descriptorCount_;
12925 return *this;
12926 }
12927
12928 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
12929 {
12930 stageFlags = stageFlags_;
12931 return *this;
12932 }
12933
12934 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
12935 {
12936 pImmutableSamplers = pImmutableSamplers_;
12937 return *this;
12938 }
12939
12940 operator const VkDescriptorSetLayoutBinding&() const
12941 {
12942 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
12943 }
12944
12945 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
12946 {
12947 return ( binding == rhs.binding )
12948 && ( descriptorType == rhs.descriptorType )
12949 && ( descriptorCount == rhs.descriptorCount )
12950 && ( stageFlags == rhs.stageFlags )
12951 && ( pImmutableSamplers == rhs.pImmutableSamplers );
12952 }
12953
12954 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
12955 {
12956 return !operator==( rhs );
12957 }
12958
12959 uint32_t binding;
12960 DescriptorType descriptorType;
12961 uint32_t descriptorCount;
12962 ShaderStageFlags stageFlags;
12963 const Sampler* pImmutableSamplers;
12964 };
12965 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
12966
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012967 struct PipelineShaderStageCreateInfo
12968 {
12969 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
12970 : sType( StructureType::ePipelineShaderStageCreateInfo )
12971 , pNext( nullptr )
12972 , flags( flags_ )
12973 , stage( stage_ )
12974 , module( module_ )
12975 , pName( pName_ )
12976 , pSpecializationInfo( pSpecializationInfo_ )
12977 {
12978 }
12979
12980 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
12981 {
12982 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12983 }
12984
12985 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
12986 {
12987 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12988 return *this;
12989 }
12990
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012991 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
12992 {
12993 pNext = pNext_;
12994 return *this;
12995 }
12996
12997 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
12998 {
12999 flags = flags_;
13000 return *this;
13001 }
13002
13003 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13004 {
13005 stage = stage_;
13006 return *this;
13007 }
13008
13009 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13010 {
13011 module = module_;
13012 return *this;
13013 }
13014
13015 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13016 {
13017 pName = pName_;
13018 return *this;
13019 }
13020
13021 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13022 {
13023 pSpecializationInfo = pSpecializationInfo_;
13024 return *this;
13025 }
13026
13027 operator const VkPipelineShaderStageCreateInfo&() const
13028 {
13029 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13030 }
13031
13032 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13033 {
13034 return ( sType == rhs.sType )
13035 && ( pNext == rhs.pNext )
13036 && ( flags == rhs.flags )
13037 && ( stage == rhs.stage )
13038 && ( module == rhs.module )
13039 && ( pName == rhs.pName )
13040 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13041 }
13042
13043 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13044 {
13045 return !operator==( rhs );
13046 }
13047
13048 private:
13049 StructureType sType;
13050
13051 public:
13052 const void* pNext;
13053 PipelineShaderStageCreateFlags flags;
13054 ShaderStageFlagBits stage;
13055 ShaderModule module;
13056 const char* pName;
13057 const SpecializationInfo* pSpecializationInfo;
13058 };
13059 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13060
13061 struct PushConstantRange
13062 {
13063 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13064 : stageFlags( stageFlags_ )
13065 , offset( offset_ )
13066 , size( size_ )
13067 {
13068 }
13069
13070 PushConstantRange( VkPushConstantRange const & rhs )
13071 {
13072 memcpy( this, &rhs, sizeof(PushConstantRange) );
13073 }
13074
13075 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13076 {
13077 memcpy( this, &rhs, sizeof(PushConstantRange) );
13078 return *this;
13079 }
13080
13081 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13082 {
13083 stageFlags = stageFlags_;
13084 return *this;
13085 }
13086
13087 PushConstantRange& setOffset( uint32_t offset_ )
13088 {
13089 offset = offset_;
13090 return *this;
13091 }
13092
13093 PushConstantRange& setSize( uint32_t size_ )
13094 {
13095 size = size_;
13096 return *this;
13097 }
13098
13099 operator const VkPushConstantRange&() const
13100 {
13101 return *reinterpret_cast<const VkPushConstantRange*>(this);
13102 }
13103
13104 bool operator==( PushConstantRange const& rhs ) const
13105 {
13106 return ( stageFlags == rhs.stageFlags )
13107 && ( offset == rhs.offset )
13108 && ( size == rhs.size );
13109 }
13110
13111 bool operator!=( PushConstantRange const& rhs ) const
13112 {
13113 return !operator==( rhs );
13114 }
13115
13116 ShaderStageFlags stageFlags;
13117 uint32_t offset;
13118 uint32_t size;
13119 };
13120 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13121
13122 struct PipelineLayoutCreateInfo
13123 {
13124 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13125 : sType( StructureType::ePipelineLayoutCreateInfo )
13126 , pNext( nullptr )
13127 , flags( flags_ )
13128 , setLayoutCount( setLayoutCount_ )
13129 , pSetLayouts( pSetLayouts_ )
13130 , pushConstantRangeCount( pushConstantRangeCount_ )
13131 , pPushConstantRanges( pPushConstantRanges_ )
13132 {
13133 }
13134
13135 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13136 {
13137 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13138 }
13139
13140 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13141 {
13142 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13143 return *this;
13144 }
13145
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013146 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13147 {
13148 pNext = pNext_;
13149 return *this;
13150 }
13151
13152 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13153 {
13154 flags = flags_;
13155 return *this;
13156 }
13157
13158 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13159 {
13160 setLayoutCount = setLayoutCount_;
13161 return *this;
13162 }
13163
13164 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13165 {
13166 pSetLayouts = pSetLayouts_;
13167 return *this;
13168 }
13169
13170 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13171 {
13172 pushConstantRangeCount = pushConstantRangeCount_;
13173 return *this;
13174 }
13175
13176 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13177 {
13178 pPushConstantRanges = pPushConstantRanges_;
13179 return *this;
13180 }
13181
13182 operator const VkPipelineLayoutCreateInfo&() const
13183 {
13184 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13185 }
13186
13187 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13188 {
13189 return ( sType == rhs.sType )
13190 && ( pNext == rhs.pNext )
13191 && ( flags == rhs.flags )
13192 && ( setLayoutCount == rhs.setLayoutCount )
13193 && ( pSetLayouts == rhs.pSetLayouts )
13194 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13195 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13196 }
13197
13198 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13199 {
13200 return !operator==( rhs );
13201 }
13202
13203 private:
13204 StructureType sType;
13205
13206 public:
13207 const void* pNext;
13208 PipelineLayoutCreateFlags flags;
13209 uint32_t setLayoutCount;
13210 const DescriptorSetLayout* pSetLayouts;
13211 uint32_t pushConstantRangeCount;
13212 const PushConstantRange* pPushConstantRanges;
13213 };
13214 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13215
13216 enum class ImageUsageFlagBits
13217 {
13218 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13219 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13220 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13221 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13222 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13223 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13224 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13225 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13226 };
13227
13228 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013230 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013231 {
13232 return ImageUsageFlags( bit0 ) | bit1;
13233 }
13234
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013235 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13236 {
13237 return ~( ImageUsageFlags( bits ) );
13238 }
13239
13240 template <> struct FlagTraits<ImageUsageFlagBits>
13241 {
13242 enum
13243 {
13244 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)
13245 };
13246 };
13247
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013248 enum class ImageCreateFlagBits
13249 {
13250 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13251 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13252 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13253 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013254 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013255 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013256 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013257 };
13258
13259 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13260
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013261 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013262 {
13263 return ImageCreateFlags( bit0 ) | bit1;
13264 }
13265
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013266 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13267 {
13268 return ~( ImageCreateFlags( bits ) );
13269 }
13270
13271 template <> struct FlagTraits<ImageCreateFlagBits>
13272 {
13273 enum
13274 {
Mark Young0f183a82017-02-28 09:58:04 -070013275 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 -070013276 };
13277 };
13278
Mark Young39389872017-01-19 21:10:49 -070013279 struct PhysicalDeviceImageFormatInfo2KHR
13280 {
13281 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13282 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13283 , pNext( nullptr )
13284 , format( format_ )
13285 , type( type_ )
13286 , tiling( tiling_ )
13287 , usage( usage_ )
13288 , flags( flags_ )
13289 {
13290 }
13291
13292 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13293 {
13294 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13295 }
13296
13297 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13298 {
13299 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13300 return *this;
13301 }
13302
Mark Young39389872017-01-19 21:10:49 -070013303 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13304 {
13305 pNext = pNext_;
13306 return *this;
13307 }
13308
13309 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13310 {
13311 format = format_;
13312 return *this;
13313 }
13314
13315 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13316 {
13317 type = type_;
13318 return *this;
13319 }
13320
13321 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13322 {
13323 tiling = tiling_;
13324 return *this;
13325 }
13326
13327 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13328 {
13329 usage = usage_;
13330 return *this;
13331 }
13332
13333 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13334 {
13335 flags = flags_;
13336 return *this;
13337 }
13338
13339 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13340 {
13341 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13342 }
13343
13344 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13345 {
13346 return ( sType == rhs.sType )
13347 && ( pNext == rhs.pNext )
13348 && ( format == rhs.format )
13349 && ( type == rhs.type )
13350 && ( tiling == rhs.tiling )
13351 && ( usage == rhs.usage )
13352 && ( flags == rhs.flags );
13353 }
13354
13355 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13356 {
13357 return !operator==( rhs );
13358 }
13359
13360 private:
13361 StructureType sType;
13362
13363 public:
13364 const void* pNext;
13365 Format format;
13366 ImageType type;
13367 ImageTiling tiling;
13368 ImageUsageFlags usage;
13369 ImageCreateFlags flags;
13370 };
13371 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13372
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013373 enum class PipelineCreateFlagBits
13374 {
13375 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13376 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013377 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13378 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13379 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013380 };
13381
13382 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13383
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013384 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013385 {
13386 return PipelineCreateFlags( bit0 ) | bit1;
13387 }
13388
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013389 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13390 {
13391 return ~( PipelineCreateFlags( bits ) );
13392 }
13393
13394 template <> struct FlagTraits<PipelineCreateFlagBits>
13395 {
13396 enum
13397 {
Mark Young0f183a82017-02-28 09:58:04 -070013398 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013399 };
13400 };
13401
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013402 struct ComputePipelineCreateInfo
13403 {
13404 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13405 : sType( StructureType::eComputePipelineCreateInfo )
13406 , pNext( nullptr )
13407 , flags( flags_ )
13408 , stage( stage_ )
13409 , layout( layout_ )
13410 , basePipelineHandle( basePipelineHandle_ )
13411 , basePipelineIndex( basePipelineIndex_ )
13412 {
13413 }
13414
13415 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13416 {
13417 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13418 }
13419
13420 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13421 {
13422 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13423 return *this;
13424 }
13425
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013426 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13427 {
13428 pNext = pNext_;
13429 return *this;
13430 }
13431
13432 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13433 {
13434 flags = flags_;
13435 return *this;
13436 }
13437
13438 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13439 {
13440 stage = stage_;
13441 return *this;
13442 }
13443
13444 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13445 {
13446 layout = layout_;
13447 return *this;
13448 }
13449
13450 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13451 {
13452 basePipelineHandle = basePipelineHandle_;
13453 return *this;
13454 }
13455
13456 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13457 {
13458 basePipelineIndex = basePipelineIndex_;
13459 return *this;
13460 }
13461
13462 operator const VkComputePipelineCreateInfo&() const
13463 {
13464 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13465 }
13466
13467 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13468 {
13469 return ( sType == rhs.sType )
13470 && ( pNext == rhs.pNext )
13471 && ( flags == rhs.flags )
13472 && ( stage == rhs.stage )
13473 && ( layout == rhs.layout )
13474 && ( basePipelineHandle == rhs.basePipelineHandle )
13475 && ( basePipelineIndex == rhs.basePipelineIndex );
13476 }
13477
13478 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13479 {
13480 return !operator==( rhs );
13481 }
13482
13483 private:
13484 StructureType sType;
13485
13486 public:
13487 const void* pNext;
13488 PipelineCreateFlags flags;
13489 PipelineShaderStageCreateInfo stage;
13490 PipelineLayout layout;
13491 Pipeline basePipelineHandle;
13492 int32_t basePipelineIndex;
13493 };
13494 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13495
13496 enum class ColorComponentFlagBits
13497 {
13498 eR = VK_COLOR_COMPONENT_R_BIT,
13499 eG = VK_COLOR_COMPONENT_G_BIT,
13500 eB = VK_COLOR_COMPONENT_B_BIT,
13501 eA = VK_COLOR_COMPONENT_A_BIT
13502 };
13503
13504 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013506 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013507 {
13508 return ColorComponentFlags( bit0 ) | bit1;
13509 }
13510
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013511 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13512 {
13513 return ~( ColorComponentFlags( bits ) );
13514 }
13515
13516 template <> struct FlagTraits<ColorComponentFlagBits>
13517 {
13518 enum
13519 {
13520 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13521 };
13522 };
13523
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013524 struct PipelineColorBlendAttachmentState
13525 {
13526 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() )
13527 : blendEnable( blendEnable_ )
13528 , srcColorBlendFactor( srcColorBlendFactor_ )
13529 , dstColorBlendFactor( dstColorBlendFactor_ )
13530 , colorBlendOp( colorBlendOp_ )
13531 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13532 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13533 , alphaBlendOp( alphaBlendOp_ )
13534 , colorWriteMask( colorWriteMask_ )
13535 {
13536 }
13537
13538 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13539 {
13540 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13541 }
13542
13543 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13544 {
13545 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13546 return *this;
13547 }
13548
13549 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13550 {
13551 blendEnable = blendEnable_;
13552 return *this;
13553 }
13554
13555 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13556 {
13557 srcColorBlendFactor = srcColorBlendFactor_;
13558 return *this;
13559 }
13560
13561 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13562 {
13563 dstColorBlendFactor = dstColorBlendFactor_;
13564 return *this;
13565 }
13566
13567 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13568 {
13569 colorBlendOp = colorBlendOp_;
13570 return *this;
13571 }
13572
13573 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13574 {
13575 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13576 return *this;
13577 }
13578
13579 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13580 {
13581 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13582 return *this;
13583 }
13584
13585 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13586 {
13587 alphaBlendOp = alphaBlendOp_;
13588 return *this;
13589 }
13590
13591 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13592 {
13593 colorWriteMask = colorWriteMask_;
13594 return *this;
13595 }
13596
13597 operator const VkPipelineColorBlendAttachmentState&() const
13598 {
13599 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13600 }
13601
13602 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13603 {
13604 return ( blendEnable == rhs.blendEnable )
13605 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13606 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13607 && ( colorBlendOp == rhs.colorBlendOp )
13608 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13609 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13610 && ( alphaBlendOp == rhs.alphaBlendOp )
13611 && ( colorWriteMask == rhs.colorWriteMask );
13612 }
13613
13614 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13615 {
13616 return !operator==( rhs );
13617 }
13618
13619 Bool32 blendEnable;
13620 BlendFactor srcColorBlendFactor;
13621 BlendFactor dstColorBlendFactor;
13622 BlendOp colorBlendOp;
13623 BlendFactor srcAlphaBlendFactor;
13624 BlendFactor dstAlphaBlendFactor;
13625 BlendOp alphaBlendOp;
13626 ColorComponentFlags colorWriteMask;
13627 };
13628 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13629
13630 struct PipelineColorBlendStateCreateInfo
13631 {
13632 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 } } )
13633 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13634 , pNext( nullptr )
13635 , flags( flags_ )
13636 , logicOpEnable( logicOpEnable_ )
13637 , logicOp( logicOp_ )
13638 , attachmentCount( attachmentCount_ )
13639 , pAttachments( pAttachments_ )
13640 {
13641 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13642 }
13643
13644 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13645 {
13646 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13647 }
13648
13649 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13650 {
13651 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13652 return *this;
13653 }
13654
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013655 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13656 {
13657 pNext = pNext_;
13658 return *this;
13659 }
13660
13661 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13662 {
13663 flags = flags_;
13664 return *this;
13665 }
13666
13667 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13668 {
13669 logicOpEnable = logicOpEnable_;
13670 return *this;
13671 }
13672
13673 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13674 {
13675 logicOp = logicOp_;
13676 return *this;
13677 }
13678
13679 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13680 {
13681 attachmentCount = attachmentCount_;
13682 return *this;
13683 }
13684
13685 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13686 {
13687 pAttachments = pAttachments_;
13688 return *this;
13689 }
13690
13691 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
13692 {
13693 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13694 return *this;
13695 }
13696
13697 operator const VkPipelineColorBlendStateCreateInfo&() const
13698 {
13699 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
13700 }
13701
13702 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
13703 {
13704 return ( sType == rhs.sType )
13705 && ( pNext == rhs.pNext )
13706 && ( flags == rhs.flags )
13707 && ( logicOpEnable == rhs.logicOpEnable )
13708 && ( logicOp == rhs.logicOp )
13709 && ( attachmentCount == rhs.attachmentCount )
13710 && ( pAttachments == rhs.pAttachments )
13711 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
13712 }
13713
13714 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
13715 {
13716 return !operator==( rhs );
13717 }
13718
13719 private:
13720 StructureType sType;
13721
13722 public:
13723 const void* pNext;
13724 PipelineColorBlendStateCreateFlags flags;
13725 Bool32 logicOpEnable;
13726 LogicOp logicOp;
13727 uint32_t attachmentCount;
13728 const PipelineColorBlendAttachmentState* pAttachments;
13729 float blendConstants[4];
13730 };
13731 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
13732
13733 enum class FenceCreateFlagBits
13734 {
13735 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
13736 };
13737
13738 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
13739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013740 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013741 {
13742 return FenceCreateFlags( bit0 ) | bit1;
13743 }
13744
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013745 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
13746 {
13747 return ~( FenceCreateFlags( bits ) );
13748 }
13749
13750 template <> struct FlagTraits<FenceCreateFlagBits>
13751 {
13752 enum
13753 {
13754 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
13755 };
13756 };
13757
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013758 struct FenceCreateInfo
13759 {
13760 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
13761 : sType( StructureType::eFenceCreateInfo )
13762 , pNext( nullptr )
13763 , flags( flags_ )
13764 {
13765 }
13766
13767 FenceCreateInfo( VkFenceCreateInfo const & rhs )
13768 {
13769 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13770 }
13771
13772 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
13773 {
13774 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13775 return *this;
13776 }
13777
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013778 FenceCreateInfo& setPNext( const void* pNext_ )
13779 {
13780 pNext = pNext_;
13781 return *this;
13782 }
13783
13784 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
13785 {
13786 flags = flags_;
13787 return *this;
13788 }
13789
13790 operator const VkFenceCreateInfo&() const
13791 {
13792 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
13793 }
13794
13795 bool operator==( FenceCreateInfo const& rhs ) const
13796 {
13797 return ( sType == rhs.sType )
13798 && ( pNext == rhs.pNext )
13799 && ( flags == rhs.flags );
13800 }
13801
13802 bool operator!=( FenceCreateInfo const& rhs ) const
13803 {
13804 return !operator==( rhs );
13805 }
13806
13807 private:
13808 StructureType sType;
13809
13810 public:
13811 const void* pNext;
13812 FenceCreateFlags flags;
13813 };
13814 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
13815
13816 enum class FormatFeatureFlagBits
13817 {
13818 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
13819 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
13820 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
13821 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
13822 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
13823 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
13824 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
13825 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
13826 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
13827 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
13828 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
13829 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
13830 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070013831 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
13832 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
13833 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013834 };
13835
13836 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
13837
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013838 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013839 {
13840 return FormatFeatureFlags( bit0 ) | bit1;
13841 }
13842
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013843 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
13844 {
13845 return ~( FormatFeatureFlags( bits ) );
13846 }
13847
13848 template <> struct FlagTraits<FormatFeatureFlagBits>
13849 {
13850 enum
13851 {
Mark Young39389872017-01-19 21:10:49 -070013852 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 -070013853 };
13854 };
13855
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013856 struct FormatProperties
13857 {
13858 operator const VkFormatProperties&() const
13859 {
13860 return *reinterpret_cast<const VkFormatProperties*>(this);
13861 }
13862
13863 bool operator==( FormatProperties const& rhs ) const
13864 {
13865 return ( linearTilingFeatures == rhs.linearTilingFeatures )
13866 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
13867 && ( bufferFeatures == rhs.bufferFeatures );
13868 }
13869
13870 bool operator!=( FormatProperties const& rhs ) const
13871 {
13872 return !operator==( rhs );
13873 }
13874
13875 FormatFeatureFlags linearTilingFeatures;
13876 FormatFeatureFlags optimalTilingFeatures;
13877 FormatFeatureFlags bufferFeatures;
13878 };
13879 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
13880
Mark Young39389872017-01-19 21:10:49 -070013881 struct FormatProperties2KHR
13882 {
13883 operator const VkFormatProperties2KHR&() const
13884 {
13885 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
13886 }
13887
13888 bool operator==( FormatProperties2KHR const& rhs ) const
13889 {
13890 return ( sType == rhs.sType )
13891 && ( pNext == rhs.pNext )
13892 && ( formatProperties == rhs.formatProperties );
13893 }
13894
13895 bool operator!=( FormatProperties2KHR const& rhs ) const
13896 {
13897 return !operator==( rhs );
13898 }
13899
13900 private:
13901 StructureType sType;
13902
13903 public:
13904 void* pNext;
13905 FormatProperties formatProperties;
13906 };
13907 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
13908
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013909 enum class QueryControlFlagBits
13910 {
13911 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
13912 };
13913
13914 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
13915
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013916 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013917 {
13918 return QueryControlFlags( bit0 ) | bit1;
13919 }
13920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013921 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
13922 {
13923 return ~( QueryControlFlags( bits ) );
13924 }
13925
13926 template <> struct FlagTraits<QueryControlFlagBits>
13927 {
13928 enum
13929 {
13930 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
13931 };
13932 };
13933
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013934 enum class QueryResultFlagBits
13935 {
13936 e64 = VK_QUERY_RESULT_64_BIT,
13937 eWait = VK_QUERY_RESULT_WAIT_BIT,
13938 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
13939 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
13940 };
13941
13942 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
13943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013944 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013945 {
13946 return QueryResultFlags( bit0 ) | bit1;
13947 }
13948
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013949 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
13950 {
13951 return ~( QueryResultFlags( bits ) );
13952 }
13953
13954 template <> struct FlagTraits<QueryResultFlagBits>
13955 {
13956 enum
13957 {
13958 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
13959 };
13960 };
13961
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013962 enum class CommandBufferUsageFlagBits
13963 {
13964 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
13965 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
13966 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
13967 };
13968
13969 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
13970
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013971 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013972 {
13973 return CommandBufferUsageFlags( bit0 ) | bit1;
13974 }
13975
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013976 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
13977 {
13978 return ~( CommandBufferUsageFlags( bits ) );
13979 }
13980
13981 template <> struct FlagTraits<CommandBufferUsageFlagBits>
13982 {
13983 enum
13984 {
13985 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
13986 };
13987 };
13988
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013989 enum class QueryPipelineStatisticFlagBits
13990 {
13991 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
13992 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
13993 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
13994 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
13995 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
13996 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
13997 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
13998 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
13999 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14000 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14001 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14002 };
14003
14004 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14005
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014006 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014007 {
14008 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14009 }
14010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014011 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14012 {
14013 return ~( QueryPipelineStatisticFlags( bits ) );
14014 }
14015
14016 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14017 {
14018 enum
14019 {
14020 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)
14021 };
14022 };
14023
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014024 struct CommandBufferInheritanceInfo
14025 {
14026 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14027 : sType( StructureType::eCommandBufferInheritanceInfo )
14028 , pNext( nullptr )
14029 , renderPass( renderPass_ )
14030 , subpass( subpass_ )
14031 , framebuffer( framebuffer_ )
14032 , occlusionQueryEnable( occlusionQueryEnable_ )
14033 , queryFlags( queryFlags_ )
14034 , pipelineStatistics( pipelineStatistics_ )
14035 {
14036 }
14037
14038 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14039 {
14040 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14041 }
14042
14043 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14044 {
14045 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14046 return *this;
14047 }
14048
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014049 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14050 {
14051 pNext = pNext_;
14052 return *this;
14053 }
14054
14055 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14056 {
14057 renderPass = renderPass_;
14058 return *this;
14059 }
14060
14061 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14062 {
14063 subpass = subpass_;
14064 return *this;
14065 }
14066
14067 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14068 {
14069 framebuffer = framebuffer_;
14070 return *this;
14071 }
14072
14073 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14074 {
14075 occlusionQueryEnable = occlusionQueryEnable_;
14076 return *this;
14077 }
14078
14079 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14080 {
14081 queryFlags = queryFlags_;
14082 return *this;
14083 }
14084
14085 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14086 {
14087 pipelineStatistics = pipelineStatistics_;
14088 return *this;
14089 }
14090
14091 operator const VkCommandBufferInheritanceInfo&() const
14092 {
14093 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14094 }
14095
14096 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14097 {
14098 return ( sType == rhs.sType )
14099 && ( pNext == rhs.pNext )
14100 && ( renderPass == rhs.renderPass )
14101 && ( subpass == rhs.subpass )
14102 && ( framebuffer == rhs.framebuffer )
14103 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14104 && ( queryFlags == rhs.queryFlags )
14105 && ( pipelineStatistics == rhs.pipelineStatistics );
14106 }
14107
14108 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14109 {
14110 return !operator==( rhs );
14111 }
14112
14113 private:
14114 StructureType sType;
14115
14116 public:
14117 const void* pNext;
14118 RenderPass renderPass;
14119 uint32_t subpass;
14120 Framebuffer framebuffer;
14121 Bool32 occlusionQueryEnable;
14122 QueryControlFlags queryFlags;
14123 QueryPipelineStatisticFlags pipelineStatistics;
14124 };
14125 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14126
14127 struct CommandBufferBeginInfo
14128 {
14129 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14130 : sType( StructureType::eCommandBufferBeginInfo )
14131 , pNext( nullptr )
14132 , flags( flags_ )
14133 , pInheritanceInfo( pInheritanceInfo_ )
14134 {
14135 }
14136
14137 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14138 {
14139 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14140 }
14141
14142 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14143 {
14144 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14145 return *this;
14146 }
14147
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014148 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14149 {
14150 pNext = pNext_;
14151 return *this;
14152 }
14153
14154 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14155 {
14156 flags = flags_;
14157 return *this;
14158 }
14159
14160 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14161 {
14162 pInheritanceInfo = pInheritanceInfo_;
14163 return *this;
14164 }
14165
14166 operator const VkCommandBufferBeginInfo&() const
14167 {
14168 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14169 }
14170
14171 bool operator==( CommandBufferBeginInfo const& rhs ) const
14172 {
14173 return ( sType == rhs.sType )
14174 && ( pNext == rhs.pNext )
14175 && ( flags == rhs.flags )
14176 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14177 }
14178
14179 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14180 {
14181 return !operator==( rhs );
14182 }
14183
14184 private:
14185 StructureType sType;
14186
14187 public:
14188 const void* pNext;
14189 CommandBufferUsageFlags flags;
14190 const CommandBufferInheritanceInfo* pInheritanceInfo;
14191 };
14192 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14193
14194 struct QueryPoolCreateInfo
14195 {
14196 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14197 : sType( StructureType::eQueryPoolCreateInfo )
14198 , pNext( nullptr )
14199 , flags( flags_ )
14200 , queryType( queryType_ )
14201 , queryCount( queryCount_ )
14202 , pipelineStatistics( pipelineStatistics_ )
14203 {
14204 }
14205
14206 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14207 {
14208 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14209 }
14210
14211 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14212 {
14213 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14214 return *this;
14215 }
14216
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014217 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14218 {
14219 pNext = pNext_;
14220 return *this;
14221 }
14222
14223 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14224 {
14225 flags = flags_;
14226 return *this;
14227 }
14228
14229 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14230 {
14231 queryType = queryType_;
14232 return *this;
14233 }
14234
14235 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14236 {
14237 queryCount = queryCount_;
14238 return *this;
14239 }
14240
14241 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14242 {
14243 pipelineStatistics = pipelineStatistics_;
14244 return *this;
14245 }
14246
14247 operator const VkQueryPoolCreateInfo&() const
14248 {
14249 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14250 }
14251
14252 bool operator==( QueryPoolCreateInfo const& rhs ) const
14253 {
14254 return ( sType == rhs.sType )
14255 && ( pNext == rhs.pNext )
14256 && ( flags == rhs.flags )
14257 && ( queryType == rhs.queryType )
14258 && ( queryCount == rhs.queryCount )
14259 && ( pipelineStatistics == rhs.pipelineStatistics );
14260 }
14261
14262 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14263 {
14264 return !operator==( rhs );
14265 }
14266
14267 private:
14268 StructureType sType;
14269
14270 public:
14271 const void* pNext;
14272 QueryPoolCreateFlags flags;
14273 QueryType queryType;
14274 uint32_t queryCount;
14275 QueryPipelineStatisticFlags pipelineStatistics;
14276 };
14277 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14278
14279 enum class ImageAspectFlagBits
14280 {
14281 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14282 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14283 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14284 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14285 };
14286
14287 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14288
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014289 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014290 {
14291 return ImageAspectFlags( bit0 ) | bit1;
14292 }
14293
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014294 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14295 {
14296 return ~( ImageAspectFlags( bits ) );
14297 }
14298
14299 template <> struct FlagTraits<ImageAspectFlagBits>
14300 {
14301 enum
14302 {
14303 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14304 };
14305 };
14306
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014307 struct ImageSubresource
14308 {
14309 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14310 : aspectMask( aspectMask_ )
14311 , mipLevel( mipLevel_ )
14312 , arrayLayer( arrayLayer_ )
14313 {
14314 }
14315
14316 ImageSubresource( VkImageSubresource const & rhs )
14317 {
14318 memcpy( this, &rhs, sizeof(ImageSubresource) );
14319 }
14320
14321 ImageSubresource& operator=( VkImageSubresource const & rhs )
14322 {
14323 memcpy( this, &rhs, sizeof(ImageSubresource) );
14324 return *this;
14325 }
14326
14327 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14328 {
14329 aspectMask = aspectMask_;
14330 return *this;
14331 }
14332
14333 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14334 {
14335 mipLevel = mipLevel_;
14336 return *this;
14337 }
14338
14339 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14340 {
14341 arrayLayer = arrayLayer_;
14342 return *this;
14343 }
14344
14345 operator const VkImageSubresource&() const
14346 {
14347 return *reinterpret_cast<const VkImageSubresource*>(this);
14348 }
14349
14350 bool operator==( ImageSubresource const& rhs ) const
14351 {
14352 return ( aspectMask == rhs.aspectMask )
14353 && ( mipLevel == rhs.mipLevel )
14354 && ( arrayLayer == rhs.arrayLayer );
14355 }
14356
14357 bool operator!=( ImageSubresource const& rhs ) const
14358 {
14359 return !operator==( rhs );
14360 }
14361
14362 ImageAspectFlags aspectMask;
14363 uint32_t mipLevel;
14364 uint32_t arrayLayer;
14365 };
14366 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14367
14368 struct ImageSubresourceLayers
14369 {
14370 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14371 : aspectMask( aspectMask_ )
14372 , mipLevel( mipLevel_ )
14373 , baseArrayLayer( baseArrayLayer_ )
14374 , layerCount( layerCount_ )
14375 {
14376 }
14377
14378 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14379 {
14380 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14381 }
14382
14383 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14384 {
14385 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14386 return *this;
14387 }
14388
14389 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14390 {
14391 aspectMask = aspectMask_;
14392 return *this;
14393 }
14394
14395 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14396 {
14397 mipLevel = mipLevel_;
14398 return *this;
14399 }
14400
14401 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14402 {
14403 baseArrayLayer = baseArrayLayer_;
14404 return *this;
14405 }
14406
14407 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14408 {
14409 layerCount = layerCount_;
14410 return *this;
14411 }
14412
14413 operator const VkImageSubresourceLayers&() const
14414 {
14415 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14416 }
14417
14418 bool operator==( ImageSubresourceLayers const& rhs ) const
14419 {
14420 return ( aspectMask == rhs.aspectMask )
14421 && ( mipLevel == rhs.mipLevel )
14422 && ( baseArrayLayer == rhs.baseArrayLayer )
14423 && ( layerCount == rhs.layerCount );
14424 }
14425
14426 bool operator!=( ImageSubresourceLayers const& rhs ) const
14427 {
14428 return !operator==( rhs );
14429 }
14430
14431 ImageAspectFlags aspectMask;
14432 uint32_t mipLevel;
14433 uint32_t baseArrayLayer;
14434 uint32_t layerCount;
14435 };
14436 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14437
14438 struct ImageSubresourceRange
14439 {
14440 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14441 : aspectMask( aspectMask_ )
14442 , baseMipLevel( baseMipLevel_ )
14443 , levelCount( levelCount_ )
14444 , baseArrayLayer( baseArrayLayer_ )
14445 , layerCount( layerCount_ )
14446 {
14447 }
14448
14449 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14450 {
14451 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14452 }
14453
14454 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14455 {
14456 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14457 return *this;
14458 }
14459
14460 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14461 {
14462 aspectMask = aspectMask_;
14463 return *this;
14464 }
14465
14466 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14467 {
14468 baseMipLevel = baseMipLevel_;
14469 return *this;
14470 }
14471
14472 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14473 {
14474 levelCount = levelCount_;
14475 return *this;
14476 }
14477
14478 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14479 {
14480 baseArrayLayer = baseArrayLayer_;
14481 return *this;
14482 }
14483
14484 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14485 {
14486 layerCount = layerCount_;
14487 return *this;
14488 }
14489
14490 operator const VkImageSubresourceRange&() const
14491 {
14492 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14493 }
14494
14495 bool operator==( ImageSubresourceRange const& rhs ) const
14496 {
14497 return ( aspectMask == rhs.aspectMask )
14498 && ( baseMipLevel == rhs.baseMipLevel )
14499 && ( levelCount == rhs.levelCount )
14500 && ( baseArrayLayer == rhs.baseArrayLayer )
14501 && ( layerCount == rhs.layerCount );
14502 }
14503
14504 bool operator!=( ImageSubresourceRange const& rhs ) const
14505 {
14506 return !operator==( rhs );
14507 }
14508
14509 ImageAspectFlags aspectMask;
14510 uint32_t baseMipLevel;
14511 uint32_t levelCount;
14512 uint32_t baseArrayLayer;
14513 uint32_t layerCount;
14514 };
14515 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14516
14517 struct ImageMemoryBarrier
14518 {
14519 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() )
14520 : sType( StructureType::eImageMemoryBarrier )
14521 , pNext( nullptr )
14522 , srcAccessMask( srcAccessMask_ )
14523 , dstAccessMask( dstAccessMask_ )
14524 , oldLayout( oldLayout_ )
14525 , newLayout( newLayout_ )
14526 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14527 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14528 , image( image_ )
14529 , subresourceRange( subresourceRange_ )
14530 {
14531 }
14532
14533 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14534 {
14535 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14536 }
14537
14538 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14539 {
14540 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14541 return *this;
14542 }
14543
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014544 ImageMemoryBarrier& setPNext( const void* pNext_ )
14545 {
14546 pNext = pNext_;
14547 return *this;
14548 }
14549
14550 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14551 {
14552 srcAccessMask = srcAccessMask_;
14553 return *this;
14554 }
14555
14556 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14557 {
14558 dstAccessMask = dstAccessMask_;
14559 return *this;
14560 }
14561
14562 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14563 {
14564 oldLayout = oldLayout_;
14565 return *this;
14566 }
14567
14568 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14569 {
14570 newLayout = newLayout_;
14571 return *this;
14572 }
14573
14574 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14575 {
14576 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14577 return *this;
14578 }
14579
14580 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14581 {
14582 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14583 return *this;
14584 }
14585
14586 ImageMemoryBarrier& setImage( Image image_ )
14587 {
14588 image = image_;
14589 return *this;
14590 }
14591
14592 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14593 {
14594 subresourceRange = subresourceRange_;
14595 return *this;
14596 }
14597
14598 operator const VkImageMemoryBarrier&() const
14599 {
14600 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14601 }
14602
14603 bool operator==( ImageMemoryBarrier const& rhs ) const
14604 {
14605 return ( sType == rhs.sType )
14606 && ( pNext == rhs.pNext )
14607 && ( srcAccessMask == rhs.srcAccessMask )
14608 && ( dstAccessMask == rhs.dstAccessMask )
14609 && ( oldLayout == rhs.oldLayout )
14610 && ( newLayout == rhs.newLayout )
14611 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14612 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14613 && ( image == rhs.image )
14614 && ( subresourceRange == rhs.subresourceRange );
14615 }
14616
14617 bool operator!=( ImageMemoryBarrier const& rhs ) const
14618 {
14619 return !operator==( rhs );
14620 }
14621
14622 private:
14623 StructureType sType;
14624
14625 public:
14626 const void* pNext;
14627 AccessFlags srcAccessMask;
14628 AccessFlags dstAccessMask;
14629 ImageLayout oldLayout;
14630 ImageLayout newLayout;
14631 uint32_t srcQueueFamilyIndex;
14632 uint32_t dstQueueFamilyIndex;
14633 Image image;
14634 ImageSubresourceRange subresourceRange;
14635 };
14636 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14637
14638 struct ImageViewCreateInfo
14639 {
14640 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14641 : sType( StructureType::eImageViewCreateInfo )
14642 , pNext( nullptr )
14643 , flags( flags_ )
14644 , image( image_ )
14645 , viewType( viewType_ )
14646 , format( format_ )
14647 , components( components_ )
14648 , subresourceRange( subresourceRange_ )
14649 {
14650 }
14651
14652 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14653 {
14654 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14655 }
14656
14657 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14658 {
14659 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14660 return *this;
14661 }
14662
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014663 ImageViewCreateInfo& setPNext( const void* pNext_ )
14664 {
14665 pNext = pNext_;
14666 return *this;
14667 }
14668
14669 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14670 {
14671 flags = flags_;
14672 return *this;
14673 }
14674
14675 ImageViewCreateInfo& setImage( Image image_ )
14676 {
14677 image = image_;
14678 return *this;
14679 }
14680
14681 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14682 {
14683 viewType = viewType_;
14684 return *this;
14685 }
14686
14687 ImageViewCreateInfo& setFormat( Format format_ )
14688 {
14689 format = format_;
14690 return *this;
14691 }
14692
14693 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
14694 {
14695 components = components_;
14696 return *this;
14697 }
14698
14699 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14700 {
14701 subresourceRange = subresourceRange_;
14702 return *this;
14703 }
14704
14705 operator const VkImageViewCreateInfo&() const
14706 {
14707 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
14708 }
14709
14710 bool operator==( ImageViewCreateInfo const& rhs ) const
14711 {
14712 return ( sType == rhs.sType )
14713 && ( pNext == rhs.pNext )
14714 && ( flags == rhs.flags )
14715 && ( image == rhs.image )
14716 && ( viewType == rhs.viewType )
14717 && ( format == rhs.format )
14718 && ( components == rhs.components )
14719 && ( subresourceRange == rhs.subresourceRange );
14720 }
14721
14722 bool operator!=( ImageViewCreateInfo const& rhs ) const
14723 {
14724 return !operator==( rhs );
14725 }
14726
14727 private:
14728 StructureType sType;
14729
14730 public:
14731 const void* pNext;
14732 ImageViewCreateFlags flags;
14733 Image image;
14734 ImageViewType viewType;
14735 Format format;
14736 ComponentMapping components;
14737 ImageSubresourceRange subresourceRange;
14738 };
14739 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
14740
14741 struct ImageCopy
14742 {
14743 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14744 : srcSubresource( srcSubresource_ )
14745 , srcOffset( srcOffset_ )
14746 , dstSubresource( dstSubresource_ )
14747 , dstOffset( dstOffset_ )
14748 , extent( extent_ )
14749 {
14750 }
14751
14752 ImageCopy( VkImageCopy const & rhs )
14753 {
14754 memcpy( this, &rhs, sizeof(ImageCopy) );
14755 }
14756
14757 ImageCopy& operator=( VkImageCopy const & rhs )
14758 {
14759 memcpy( this, &rhs, sizeof(ImageCopy) );
14760 return *this;
14761 }
14762
14763 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14764 {
14765 srcSubresource = srcSubresource_;
14766 return *this;
14767 }
14768
14769 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
14770 {
14771 srcOffset = srcOffset_;
14772 return *this;
14773 }
14774
14775 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14776 {
14777 dstSubresource = dstSubresource_;
14778 return *this;
14779 }
14780
14781 ImageCopy& setDstOffset( Offset3D dstOffset_ )
14782 {
14783 dstOffset = dstOffset_;
14784 return *this;
14785 }
14786
14787 ImageCopy& setExtent( Extent3D extent_ )
14788 {
14789 extent = extent_;
14790 return *this;
14791 }
14792
14793 operator const VkImageCopy&() const
14794 {
14795 return *reinterpret_cast<const VkImageCopy*>(this);
14796 }
14797
14798 bool operator==( ImageCopy const& rhs ) const
14799 {
14800 return ( srcSubresource == rhs.srcSubresource )
14801 && ( srcOffset == rhs.srcOffset )
14802 && ( dstSubresource == rhs.dstSubresource )
14803 && ( dstOffset == rhs.dstOffset )
14804 && ( extent == rhs.extent );
14805 }
14806
14807 bool operator!=( ImageCopy const& rhs ) const
14808 {
14809 return !operator==( rhs );
14810 }
14811
14812 ImageSubresourceLayers srcSubresource;
14813 Offset3D srcOffset;
14814 ImageSubresourceLayers dstSubresource;
14815 Offset3D dstOffset;
14816 Extent3D extent;
14817 };
14818 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
14819
14820 struct ImageBlit
14821 {
14822 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
14823 : srcSubresource( srcSubresource_ )
14824 , dstSubresource( dstSubresource_ )
14825 {
14826 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14827 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14828 }
14829
14830 ImageBlit( VkImageBlit const & rhs )
14831 {
14832 memcpy( this, &rhs, sizeof(ImageBlit) );
14833 }
14834
14835 ImageBlit& operator=( VkImageBlit const & rhs )
14836 {
14837 memcpy( this, &rhs, sizeof(ImageBlit) );
14838 return *this;
14839 }
14840
14841 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14842 {
14843 srcSubresource = srcSubresource_;
14844 return *this;
14845 }
14846
14847 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
14848 {
14849 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14850 return *this;
14851 }
14852
14853 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14854 {
14855 dstSubresource = dstSubresource_;
14856 return *this;
14857 }
14858
14859 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
14860 {
14861 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14862 return *this;
14863 }
14864
14865 operator const VkImageBlit&() const
14866 {
14867 return *reinterpret_cast<const VkImageBlit*>(this);
14868 }
14869
14870 bool operator==( ImageBlit const& rhs ) const
14871 {
14872 return ( srcSubresource == rhs.srcSubresource )
14873 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
14874 && ( dstSubresource == rhs.dstSubresource )
14875 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
14876 }
14877
14878 bool operator!=( ImageBlit const& rhs ) const
14879 {
14880 return !operator==( rhs );
14881 }
14882
14883 ImageSubresourceLayers srcSubresource;
14884 Offset3D srcOffsets[2];
14885 ImageSubresourceLayers dstSubresource;
14886 Offset3D dstOffsets[2];
14887 };
14888 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
14889
14890 struct BufferImageCopy
14891 {
14892 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
14893 : bufferOffset( bufferOffset_ )
14894 , bufferRowLength( bufferRowLength_ )
14895 , bufferImageHeight( bufferImageHeight_ )
14896 , imageSubresource( imageSubresource_ )
14897 , imageOffset( imageOffset_ )
14898 , imageExtent( imageExtent_ )
14899 {
14900 }
14901
14902 BufferImageCopy( VkBufferImageCopy const & rhs )
14903 {
14904 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14905 }
14906
14907 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
14908 {
14909 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14910 return *this;
14911 }
14912
14913 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
14914 {
14915 bufferOffset = bufferOffset_;
14916 return *this;
14917 }
14918
14919 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
14920 {
14921 bufferRowLength = bufferRowLength_;
14922 return *this;
14923 }
14924
14925 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
14926 {
14927 bufferImageHeight = bufferImageHeight_;
14928 return *this;
14929 }
14930
14931 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
14932 {
14933 imageSubresource = imageSubresource_;
14934 return *this;
14935 }
14936
14937 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
14938 {
14939 imageOffset = imageOffset_;
14940 return *this;
14941 }
14942
14943 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
14944 {
14945 imageExtent = imageExtent_;
14946 return *this;
14947 }
14948
14949 operator const VkBufferImageCopy&() const
14950 {
14951 return *reinterpret_cast<const VkBufferImageCopy*>(this);
14952 }
14953
14954 bool operator==( BufferImageCopy const& rhs ) const
14955 {
14956 return ( bufferOffset == rhs.bufferOffset )
14957 && ( bufferRowLength == rhs.bufferRowLength )
14958 && ( bufferImageHeight == rhs.bufferImageHeight )
14959 && ( imageSubresource == rhs.imageSubresource )
14960 && ( imageOffset == rhs.imageOffset )
14961 && ( imageExtent == rhs.imageExtent );
14962 }
14963
14964 bool operator!=( BufferImageCopy const& rhs ) const
14965 {
14966 return !operator==( rhs );
14967 }
14968
14969 DeviceSize bufferOffset;
14970 uint32_t bufferRowLength;
14971 uint32_t bufferImageHeight;
14972 ImageSubresourceLayers imageSubresource;
14973 Offset3D imageOffset;
14974 Extent3D imageExtent;
14975 };
14976 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
14977
14978 struct ImageResolve
14979 {
14980 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14981 : srcSubresource( srcSubresource_ )
14982 , srcOffset( srcOffset_ )
14983 , dstSubresource( dstSubresource_ )
14984 , dstOffset( dstOffset_ )
14985 , extent( extent_ )
14986 {
14987 }
14988
14989 ImageResolve( VkImageResolve const & rhs )
14990 {
14991 memcpy( this, &rhs, sizeof(ImageResolve) );
14992 }
14993
14994 ImageResolve& operator=( VkImageResolve const & rhs )
14995 {
14996 memcpy( this, &rhs, sizeof(ImageResolve) );
14997 return *this;
14998 }
14999
15000 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15001 {
15002 srcSubresource = srcSubresource_;
15003 return *this;
15004 }
15005
15006 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15007 {
15008 srcOffset = srcOffset_;
15009 return *this;
15010 }
15011
15012 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15013 {
15014 dstSubresource = dstSubresource_;
15015 return *this;
15016 }
15017
15018 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15019 {
15020 dstOffset = dstOffset_;
15021 return *this;
15022 }
15023
15024 ImageResolve& setExtent( Extent3D extent_ )
15025 {
15026 extent = extent_;
15027 return *this;
15028 }
15029
15030 operator const VkImageResolve&() const
15031 {
15032 return *reinterpret_cast<const VkImageResolve*>(this);
15033 }
15034
15035 bool operator==( ImageResolve const& rhs ) const
15036 {
15037 return ( srcSubresource == rhs.srcSubresource )
15038 && ( srcOffset == rhs.srcOffset )
15039 && ( dstSubresource == rhs.dstSubresource )
15040 && ( dstOffset == rhs.dstOffset )
15041 && ( extent == rhs.extent );
15042 }
15043
15044 bool operator!=( ImageResolve const& rhs ) const
15045 {
15046 return !operator==( rhs );
15047 }
15048
15049 ImageSubresourceLayers srcSubresource;
15050 Offset3D srcOffset;
15051 ImageSubresourceLayers dstSubresource;
15052 Offset3D dstOffset;
15053 Extent3D extent;
15054 };
15055 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15056
15057 struct ClearAttachment
15058 {
15059 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15060 : aspectMask( aspectMask_ )
15061 , colorAttachment( colorAttachment_ )
15062 , clearValue( clearValue_ )
15063 {
15064 }
15065
15066 ClearAttachment( VkClearAttachment const & rhs )
15067 {
15068 memcpy( this, &rhs, sizeof(ClearAttachment) );
15069 }
15070
15071 ClearAttachment& operator=( VkClearAttachment const & rhs )
15072 {
15073 memcpy( this, &rhs, sizeof(ClearAttachment) );
15074 return *this;
15075 }
15076
15077 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15078 {
15079 aspectMask = aspectMask_;
15080 return *this;
15081 }
15082
15083 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15084 {
15085 colorAttachment = colorAttachment_;
15086 return *this;
15087 }
15088
15089 ClearAttachment& setClearValue( ClearValue clearValue_ )
15090 {
15091 clearValue = clearValue_;
15092 return *this;
15093 }
15094
15095 operator const VkClearAttachment&() const
15096 {
15097 return *reinterpret_cast<const VkClearAttachment*>(this);
15098 }
15099
15100 ImageAspectFlags aspectMask;
15101 uint32_t colorAttachment;
15102 ClearValue clearValue;
15103 };
15104 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15105
15106 enum class SparseImageFormatFlagBits
15107 {
15108 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15109 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15110 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15111 };
15112
15113 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15114
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015115 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015116 {
15117 return SparseImageFormatFlags( bit0 ) | bit1;
15118 }
15119
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015120 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15121 {
15122 return ~( SparseImageFormatFlags( bits ) );
15123 }
15124
15125 template <> struct FlagTraits<SparseImageFormatFlagBits>
15126 {
15127 enum
15128 {
15129 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15130 };
15131 };
15132
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015133 struct SparseImageFormatProperties
15134 {
15135 operator const VkSparseImageFormatProperties&() const
15136 {
15137 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15138 }
15139
15140 bool operator==( SparseImageFormatProperties const& rhs ) const
15141 {
15142 return ( aspectMask == rhs.aspectMask )
15143 && ( imageGranularity == rhs.imageGranularity )
15144 && ( flags == rhs.flags );
15145 }
15146
15147 bool operator!=( SparseImageFormatProperties const& rhs ) const
15148 {
15149 return !operator==( rhs );
15150 }
15151
15152 ImageAspectFlags aspectMask;
15153 Extent3D imageGranularity;
15154 SparseImageFormatFlags flags;
15155 };
15156 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15157
15158 struct SparseImageMemoryRequirements
15159 {
15160 operator const VkSparseImageMemoryRequirements&() const
15161 {
15162 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15163 }
15164
15165 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15166 {
15167 return ( formatProperties == rhs.formatProperties )
15168 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15169 && ( imageMipTailSize == rhs.imageMipTailSize )
15170 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15171 && ( imageMipTailStride == rhs.imageMipTailStride );
15172 }
15173
15174 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15175 {
15176 return !operator==( rhs );
15177 }
15178
15179 SparseImageFormatProperties formatProperties;
15180 uint32_t imageMipTailFirstLod;
15181 DeviceSize imageMipTailSize;
15182 DeviceSize imageMipTailOffset;
15183 DeviceSize imageMipTailStride;
15184 };
15185 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15186
Mark Young39389872017-01-19 21:10:49 -070015187 struct SparseImageFormatProperties2KHR
15188 {
15189 operator const VkSparseImageFormatProperties2KHR&() const
15190 {
15191 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15192 }
15193
15194 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15195 {
15196 return ( sType == rhs.sType )
15197 && ( pNext == rhs.pNext )
15198 && ( properties == rhs.properties );
15199 }
15200
15201 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15202 {
15203 return !operator==( rhs );
15204 }
15205
15206 private:
15207 StructureType sType;
15208
15209 public:
15210 void* pNext;
15211 SparseImageFormatProperties properties;
15212 };
15213 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15214
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015215 enum class SparseMemoryBindFlagBits
15216 {
15217 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15218 };
15219
15220 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15221
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015222 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015223 {
15224 return SparseMemoryBindFlags( bit0 ) | bit1;
15225 }
15226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015227 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15228 {
15229 return ~( SparseMemoryBindFlags( bits ) );
15230 }
15231
15232 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15233 {
15234 enum
15235 {
15236 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15237 };
15238 };
15239
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015240 struct SparseMemoryBind
15241 {
15242 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15243 : resourceOffset( resourceOffset_ )
15244 , size( size_ )
15245 , memory( memory_ )
15246 , memoryOffset( memoryOffset_ )
15247 , flags( flags_ )
15248 {
15249 }
15250
15251 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15252 {
15253 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15254 }
15255
15256 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15257 {
15258 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15259 return *this;
15260 }
15261
15262 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15263 {
15264 resourceOffset = resourceOffset_;
15265 return *this;
15266 }
15267
15268 SparseMemoryBind& setSize( DeviceSize size_ )
15269 {
15270 size = size_;
15271 return *this;
15272 }
15273
15274 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15275 {
15276 memory = memory_;
15277 return *this;
15278 }
15279
15280 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15281 {
15282 memoryOffset = memoryOffset_;
15283 return *this;
15284 }
15285
15286 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15287 {
15288 flags = flags_;
15289 return *this;
15290 }
15291
15292 operator const VkSparseMemoryBind&() const
15293 {
15294 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15295 }
15296
15297 bool operator==( SparseMemoryBind const& rhs ) const
15298 {
15299 return ( resourceOffset == rhs.resourceOffset )
15300 && ( size == rhs.size )
15301 && ( memory == rhs.memory )
15302 && ( memoryOffset == rhs.memoryOffset )
15303 && ( flags == rhs.flags );
15304 }
15305
15306 bool operator!=( SparseMemoryBind const& rhs ) const
15307 {
15308 return !operator==( rhs );
15309 }
15310
15311 DeviceSize resourceOffset;
15312 DeviceSize size;
15313 DeviceMemory memory;
15314 DeviceSize memoryOffset;
15315 SparseMemoryBindFlags flags;
15316 };
15317 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15318
15319 struct SparseImageMemoryBind
15320 {
15321 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15322 : subresource( subresource_ )
15323 , offset( offset_ )
15324 , extent( extent_ )
15325 , memory( memory_ )
15326 , memoryOffset( memoryOffset_ )
15327 , flags( flags_ )
15328 {
15329 }
15330
15331 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15332 {
15333 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15334 }
15335
15336 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15337 {
15338 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15339 return *this;
15340 }
15341
15342 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15343 {
15344 subresource = subresource_;
15345 return *this;
15346 }
15347
15348 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15349 {
15350 offset = offset_;
15351 return *this;
15352 }
15353
15354 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15355 {
15356 extent = extent_;
15357 return *this;
15358 }
15359
15360 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15361 {
15362 memory = memory_;
15363 return *this;
15364 }
15365
15366 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15367 {
15368 memoryOffset = memoryOffset_;
15369 return *this;
15370 }
15371
15372 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15373 {
15374 flags = flags_;
15375 return *this;
15376 }
15377
15378 operator const VkSparseImageMemoryBind&() const
15379 {
15380 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15381 }
15382
15383 bool operator==( SparseImageMemoryBind const& rhs ) const
15384 {
15385 return ( subresource == rhs.subresource )
15386 && ( offset == rhs.offset )
15387 && ( extent == rhs.extent )
15388 && ( memory == rhs.memory )
15389 && ( memoryOffset == rhs.memoryOffset )
15390 && ( flags == rhs.flags );
15391 }
15392
15393 bool operator!=( SparseImageMemoryBind const& rhs ) const
15394 {
15395 return !operator==( rhs );
15396 }
15397
15398 ImageSubresource subresource;
15399 Offset3D offset;
15400 Extent3D extent;
15401 DeviceMemory memory;
15402 DeviceSize memoryOffset;
15403 SparseMemoryBindFlags flags;
15404 };
15405 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15406
15407 struct SparseBufferMemoryBindInfo
15408 {
15409 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15410 : buffer( buffer_ )
15411 , bindCount( bindCount_ )
15412 , pBinds( pBinds_ )
15413 {
15414 }
15415
15416 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15417 {
15418 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15419 }
15420
15421 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15422 {
15423 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15424 return *this;
15425 }
15426
15427 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15428 {
15429 buffer = buffer_;
15430 return *this;
15431 }
15432
15433 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15434 {
15435 bindCount = bindCount_;
15436 return *this;
15437 }
15438
15439 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15440 {
15441 pBinds = pBinds_;
15442 return *this;
15443 }
15444
15445 operator const VkSparseBufferMemoryBindInfo&() const
15446 {
15447 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15448 }
15449
15450 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15451 {
15452 return ( buffer == rhs.buffer )
15453 && ( bindCount == rhs.bindCount )
15454 && ( pBinds == rhs.pBinds );
15455 }
15456
15457 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15458 {
15459 return !operator==( rhs );
15460 }
15461
15462 Buffer buffer;
15463 uint32_t bindCount;
15464 const SparseMemoryBind* pBinds;
15465 };
15466 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15467
15468 struct SparseImageOpaqueMemoryBindInfo
15469 {
15470 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15471 : image( image_ )
15472 , bindCount( bindCount_ )
15473 , pBinds( pBinds_ )
15474 {
15475 }
15476
15477 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15478 {
15479 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15480 }
15481
15482 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15483 {
15484 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15485 return *this;
15486 }
15487
15488 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15489 {
15490 image = image_;
15491 return *this;
15492 }
15493
15494 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15495 {
15496 bindCount = bindCount_;
15497 return *this;
15498 }
15499
15500 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15501 {
15502 pBinds = pBinds_;
15503 return *this;
15504 }
15505
15506 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15507 {
15508 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15509 }
15510
15511 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15512 {
15513 return ( image == rhs.image )
15514 && ( bindCount == rhs.bindCount )
15515 && ( pBinds == rhs.pBinds );
15516 }
15517
15518 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15519 {
15520 return !operator==( rhs );
15521 }
15522
15523 Image image;
15524 uint32_t bindCount;
15525 const SparseMemoryBind* pBinds;
15526 };
15527 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15528
15529 struct SparseImageMemoryBindInfo
15530 {
15531 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15532 : image( image_ )
15533 , bindCount( bindCount_ )
15534 , pBinds( pBinds_ )
15535 {
15536 }
15537
15538 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15539 {
15540 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15541 }
15542
15543 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15544 {
15545 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15546 return *this;
15547 }
15548
15549 SparseImageMemoryBindInfo& setImage( Image image_ )
15550 {
15551 image = image_;
15552 return *this;
15553 }
15554
15555 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15556 {
15557 bindCount = bindCount_;
15558 return *this;
15559 }
15560
15561 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15562 {
15563 pBinds = pBinds_;
15564 return *this;
15565 }
15566
15567 operator const VkSparseImageMemoryBindInfo&() const
15568 {
15569 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15570 }
15571
15572 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15573 {
15574 return ( image == rhs.image )
15575 && ( bindCount == rhs.bindCount )
15576 && ( pBinds == rhs.pBinds );
15577 }
15578
15579 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15580 {
15581 return !operator==( rhs );
15582 }
15583
15584 Image image;
15585 uint32_t bindCount;
15586 const SparseImageMemoryBind* pBinds;
15587 };
15588 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15589
15590 struct BindSparseInfo
15591 {
15592 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 )
15593 : sType( StructureType::eBindSparseInfo )
15594 , pNext( nullptr )
15595 , waitSemaphoreCount( waitSemaphoreCount_ )
15596 , pWaitSemaphores( pWaitSemaphores_ )
15597 , bufferBindCount( bufferBindCount_ )
15598 , pBufferBinds( pBufferBinds_ )
15599 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15600 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15601 , imageBindCount( imageBindCount_ )
15602 , pImageBinds( pImageBinds_ )
15603 , signalSemaphoreCount( signalSemaphoreCount_ )
15604 , pSignalSemaphores( pSignalSemaphores_ )
15605 {
15606 }
15607
15608 BindSparseInfo( VkBindSparseInfo const & rhs )
15609 {
15610 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15611 }
15612
15613 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15614 {
15615 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15616 return *this;
15617 }
15618
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015619 BindSparseInfo& setPNext( const void* pNext_ )
15620 {
15621 pNext = pNext_;
15622 return *this;
15623 }
15624
15625 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15626 {
15627 waitSemaphoreCount = waitSemaphoreCount_;
15628 return *this;
15629 }
15630
15631 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15632 {
15633 pWaitSemaphores = pWaitSemaphores_;
15634 return *this;
15635 }
15636
15637 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15638 {
15639 bufferBindCount = bufferBindCount_;
15640 return *this;
15641 }
15642
15643 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15644 {
15645 pBufferBinds = pBufferBinds_;
15646 return *this;
15647 }
15648
15649 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15650 {
15651 imageOpaqueBindCount = imageOpaqueBindCount_;
15652 return *this;
15653 }
15654
15655 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15656 {
15657 pImageOpaqueBinds = pImageOpaqueBinds_;
15658 return *this;
15659 }
15660
15661 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15662 {
15663 imageBindCount = imageBindCount_;
15664 return *this;
15665 }
15666
15667 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15668 {
15669 pImageBinds = pImageBinds_;
15670 return *this;
15671 }
15672
15673 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15674 {
15675 signalSemaphoreCount = signalSemaphoreCount_;
15676 return *this;
15677 }
15678
15679 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15680 {
15681 pSignalSemaphores = pSignalSemaphores_;
15682 return *this;
15683 }
15684
15685 operator const VkBindSparseInfo&() const
15686 {
15687 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15688 }
15689
15690 bool operator==( BindSparseInfo const& rhs ) const
15691 {
15692 return ( sType == rhs.sType )
15693 && ( pNext == rhs.pNext )
15694 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
15695 && ( pWaitSemaphores == rhs.pWaitSemaphores )
15696 && ( bufferBindCount == rhs.bufferBindCount )
15697 && ( pBufferBinds == rhs.pBufferBinds )
15698 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
15699 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
15700 && ( imageBindCount == rhs.imageBindCount )
15701 && ( pImageBinds == rhs.pImageBinds )
15702 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
15703 && ( pSignalSemaphores == rhs.pSignalSemaphores );
15704 }
15705
15706 bool operator!=( BindSparseInfo const& rhs ) const
15707 {
15708 return !operator==( rhs );
15709 }
15710
15711 private:
15712 StructureType sType;
15713
15714 public:
15715 const void* pNext;
15716 uint32_t waitSemaphoreCount;
15717 const Semaphore* pWaitSemaphores;
15718 uint32_t bufferBindCount;
15719 const SparseBufferMemoryBindInfo* pBufferBinds;
15720 uint32_t imageOpaqueBindCount;
15721 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
15722 uint32_t imageBindCount;
15723 const SparseImageMemoryBindInfo* pImageBinds;
15724 uint32_t signalSemaphoreCount;
15725 const Semaphore* pSignalSemaphores;
15726 };
15727 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
15728
15729 enum class PipelineStageFlagBits
15730 {
15731 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
15732 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
15733 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
15734 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
15735 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
15736 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
15737 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
15738 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
15739 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
15740 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
15741 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
15742 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
15743 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
15744 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
15745 eHost = VK_PIPELINE_STAGE_HOST_BIT,
15746 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015747 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
15748 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015749 };
15750
15751 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
15752
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015753 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015754 {
15755 return PipelineStageFlags( bit0 ) | bit1;
15756 }
15757
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015758 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
15759 {
15760 return ~( PipelineStageFlags( bits ) );
15761 }
15762
15763 template <> struct FlagTraits<PipelineStageFlagBits>
15764 {
15765 enum
15766 {
15767 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)
15768 };
15769 };
15770
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015771 enum class CommandPoolCreateFlagBits
15772 {
15773 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
15774 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
15775 };
15776
15777 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
15778
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015779 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015780 {
15781 return CommandPoolCreateFlags( bit0 ) | bit1;
15782 }
15783
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015784 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
15785 {
15786 return ~( CommandPoolCreateFlags( bits ) );
15787 }
15788
15789 template <> struct FlagTraits<CommandPoolCreateFlagBits>
15790 {
15791 enum
15792 {
15793 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
15794 };
15795 };
15796
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015797 struct CommandPoolCreateInfo
15798 {
15799 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
15800 : sType( StructureType::eCommandPoolCreateInfo )
15801 , pNext( nullptr )
15802 , flags( flags_ )
15803 , queueFamilyIndex( queueFamilyIndex_ )
15804 {
15805 }
15806
15807 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
15808 {
15809 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15810 }
15811
15812 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
15813 {
15814 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15815 return *this;
15816 }
15817
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015818 CommandPoolCreateInfo& setPNext( const void* pNext_ )
15819 {
15820 pNext = pNext_;
15821 return *this;
15822 }
15823
15824 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
15825 {
15826 flags = flags_;
15827 return *this;
15828 }
15829
15830 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
15831 {
15832 queueFamilyIndex = queueFamilyIndex_;
15833 return *this;
15834 }
15835
15836 operator const VkCommandPoolCreateInfo&() const
15837 {
15838 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
15839 }
15840
15841 bool operator==( CommandPoolCreateInfo const& rhs ) const
15842 {
15843 return ( sType == rhs.sType )
15844 && ( pNext == rhs.pNext )
15845 && ( flags == rhs.flags )
15846 && ( queueFamilyIndex == rhs.queueFamilyIndex );
15847 }
15848
15849 bool operator!=( CommandPoolCreateInfo const& rhs ) const
15850 {
15851 return !operator==( rhs );
15852 }
15853
15854 private:
15855 StructureType sType;
15856
15857 public:
15858 const void* pNext;
15859 CommandPoolCreateFlags flags;
15860 uint32_t queueFamilyIndex;
15861 };
15862 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
15863
15864 enum class CommandPoolResetFlagBits
15865 {
15866 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
15867 };
15868
15869 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
15870
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015871 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015872 {
15873 return CommandPoolResetFlags( bit0 ) | bit1;
15874 }
15875
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015876 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
15877 {
15878 return ~( CommandPoolResetFlags( bits ) );
15879 }
15880
15881 template <> struct FlagTraits<CommandPoolResetFlagBits>
15882 {
15883 enum
15884 {
15885 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
15886 };
15887 };
15888
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015889 enum class CommandBufferResetFlagBits
15890 {
15891 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
15892 };
15893
15894 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
15895
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015896 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015897 {
15898 return CommandBufferResetFlags( bit0 ) | bit1;
15899 }
15900
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015901 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
15902 {
15903 return ~( CommandBufferResetFlags( bits ) );
15904 }
15905
15906 template <> struct FlagTraits<CommandBufferResetFlagBits>
15907 {
15908 enum
15909 {
15910 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
15911 };
15912 };
15913
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015914 enum class SampleCountFlagBits
15915 {
15916 e1 = VK_SAMPLE_COUNT_1_BIT,
15917 e2 = VK_SAMPLE_COUNT_2_BIT,
15918 e4 = VK_SAMPLE_COUNT_4_BIT,
15919 e8 = VK_SAMPLE_COUNT_8_BIT,
15920 e16 = VK_SAMPLE_COUNT_16_BIT,
15921 e32 = VK_SAMPLE_COUNT_32_BIT,
15922 e64 = VK_SAMPLE_COUNT_64_BIT
15923 };
15924
15925 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
15926
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015927 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015928 {
15929 return SampleCountFlags( bit0 ) | bit1;
15930 }
15931
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015932 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
15933 {
15934 return ~( SampleCountFlags( bits ) );
15935 }
15936
15937 template <> struct FlagTraits<SampleCountFlagBits>
15938 {
15939 enum
15940 {
15941 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
15942 };
15943 };
15944
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015945 struct ImageFormatProperties
15946 {
15947 operator const VkImageFormatProperties&() const
15948 {
15949 return *reinterpret_cast<const VkImageFormatProperties*>(this);
15950 }
15951
15952 bool operator==( ImageFormatProperties const& rhs ) const
15953 {
15954 return ( maxExtent == rhs.maxExtent )
15955 && ( maxMipLevels == rhs.maxMipLevels )
15956 && ( maxArrayLayers == rhs.maxArrayLayers )
15957 && ( sampleCounts == rhs.sampleCounts )
15958 && ( maxResourceSize == rhs.maxResourceSize );
15959 }
15960
15961 bool operator!=( ImageFormatProperties const& rhs ) const
15962 {
15963 return !operator==( rhs );
15964 }
15965
15966 Extent3D maxExtent;
15967 uint32_t maxMipLevels;
15968 uint32_t maxArrayLayers;
15969 SampleCountFlags sampleCounts;
15970 DeviceSize maxResourceSize;
15971 };
15972 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
15973
15974 struct ImageCreateInfo
15975 {
15976 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 )
15977 : sType( StructureType::eImageCreateInfo )
15978 , pNext( nullptr )
15979 , flags( flags_ )
15980 , imageType( imageType_ )
15981 , format( format_ )
15982 , extent( extent_ )
15983 , mipLevels( mipLevels_ )
15984 , arrayLayers( arrayLayers_ )
15985 , samples( samples_ )
15986 , tiling( tiling_ )
15987 , usage( usage_ )
15988 , sharingMode( sharingMode_ )
15989 , queueFamilyIndexCount( queueFamilyIndexCount_ )
15990 , pQueueFamilyIndices( pQueueFamilyIndices_ )
15991 , initialLayout( initialLayout_ )
15992 {
15993 }
15994
15995 ImageCreateInfo( VkImageCreateInfo const & rhs )
15996 {
15997 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
15998 }
15999
16000 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16001 {
16002 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16003 return *this;
16004 }
16005
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016006 ImageCreateInfo& setPNext( const void* pNext_ )
16007 {
16008 pNext = pNext_;
16009 return *this;
16010 }
16011
16012 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16013 {
16014 flags = flags_;
16015 return *this;
16016 }
16017
16018 ImageCreateInfo& setImageType( ImageType imageType_ )
16019 {
16020 imageType = imageType_;
16021 return *this;
16022 }
16023
16024 ImageCreateInfo& setFormat( Format format_ )
16025 {
16026 format = format_;
16027 return *this;
16028 }
16029
16030 ImageCreateInfo& setExtent( Extent3D extent_ )
16031 {
16032 extent = extent_;
16033 return *this;
16034 }
16035
16036 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16037 {
16038 mipLevels = mipLevels_;
16039 return *this;
16040 }
16041
16042 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16043 {
16044 arrayLayers = arrayLayers_;
16045 return *this;
16046 }
16047
16048 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16049 {
16050 samples = samples_;
16051 return *this;
16052 }
16053
16054 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16055 {
16056 tiling = tiling_;
16057 return *this;
16058 }
16059
16060 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16061 {
16062 usage = usage_;
16063 return *this;
16064 }
16065
16066 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16067 {
16068 sharingMode = sharingMode_;
16069 return *this;
16070 }
16071
16072 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16073 {
16074 queueFamilyIndexCount = queueFamilyIndexCount_;
16075 return *this;
16076 }
16077
16078 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16079 {
16080 pQueueFamilyIndices = pQueueFamilyIndices_;
16081 return *this;
16082 }
16083
16084 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16085 {
16086 initialLayout = initialLayout_;
16087 return *this;
16088 }
16089
16090 operator const VkImageCreateInfo&() const
16091 {
16092 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16093 }
16094
16095 bool operator==( ImageCreateInfo const& rhs ) const
16096 {
16097 return ( sType == rhs.sType )
16098 && ( pNext == rhs.pNext )
16099 && ( flags == rhs.flags )
16100 && ( imageType == rhs.imageType )
16101 && ( format == rhs.format )
16102 && ( extent == rhs.extent )
16103 && ( mipLevels == rhs.mipLevels )
16104 && ( arrayLayers == rhs.arrayLayers )
16105 && ( samples == rhs.samples )
16106 && ( tiling == rhs.tiling )
16107 && ( usage == rhs.usage )
16108 && ( sharingMode == rhs.sharingMode )
16109 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16110 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16111 && ( initialLayout == rhs.initialLayout );
16112 }
16113
16114 bool operator!=( ImageCreateInfo const& rhs ) const
16115 {
16116 return !operator==( rhs );
16117 }
16118
16119 private:
16120 StructureType sType;
16121
16122 public:
16123 const void* pNext;
16124 ImageCreateFlags flags;
16125 ImageType imageType;
16126 Format format;
16127 Extent3D extent;
16128 uint32_t mipLevels;
16129 uint32_t arrayLayers;
16130 SampleCountFlagBits samples;
16131 ImageTiling tiling;
16132 ImageUsageFlags usage;
16133 SharingMode sharingMode;
16134 uint32_t queueFamilyIndexCount;
16135 const uint32_t* pQueueFamilyIndices;
16136 ImageLayout initialLayout;
16137 };
16138 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16139
16140 struct PipelineMultisampleStateCreateInfo
16141 {
16142 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16143 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16144 , pNext( nullptr )
16145 , flags( flags_ )
16146 , rasterizationSamples( rasterizationSamples_ )
16147 , sampleShadingEnable( sampleShadingEnable_ )
16148 , minSampleShading( minSampleShading_ )
16149 , pSampleMask( pSampleMask_ )
16150 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16151 , alphaToOneEnable( alphaToOneEnable_ )
16152 {
16153 }
16154
16155 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16156 {
16157 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16158 }
16159
16160 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16161 {
16162 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16163 return *this;
16164 }
16165
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016166 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16167 {
16168 pNext = pNext_;
16169 return *this;
16170 }
16171
16172 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16173 {
16174 flags = flags_;
16175 return *this;
16176 }
16177
16178 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16179 {
16180 rasterizationSamples = rasterizationSamples_;
16181 return *this;
16182 }
16183
16184 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16185 {
16186 sampleShadingEnable = sampleShadingEnable_;
16187 return *this;
16188 }
16189
16190 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16191 {
16192 minSampleShading = minSampleShading_;
16193 return *this;
16194 }
16195
16196 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16197 {
16198 pSampleMask = pSampleMask_;
16199 return *this;
16200 }
16201
16202 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16203 {
16204 alphaToCoverageEnable = alphaToCoverageEnable_;
16205 return *this;
16206 }
16207
16208 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16209 {
16210 alphaToOneEnable = alphaToOneEnable_;
16211 return *this;
16212 }
16213
16214 operator const VkPipelineMultisampleStateCreateInfo&() const
16215 {
16216 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16217 }
16218
16219 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16220 {
16221 return ( sType == rhs.sType )
16222 && ( pNext == rhs.pNext )
16223 && ( flags == rhs.flags )
16224 && ( rasterizationSamples == rhs.rasterizationSamples )
16225 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16226 && ( minSampleShading == rhs.minSampleShading )
16227 && ( pSampleMask == rhs.pSampleMask )
16228 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16229 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16230 }
16231
16232 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16233 {
16234 return !operator==( rhs );
16235 }
16236
16237 private:
16238 StructureType sType;
16239
16240 public:
16241 const void* pNext;
16242 PipelineMultisampleStateCreateFlags flags;
16243 SampleCountFlagBits rasterizationSamples;
16244 Bool32 sampleShadingEnable;
16245 float minSampleShading;
16246 const SampleMask* pSampleMask;
16247 Bool32 alphaToCoverageEnable;
16248 Bool32 alphaToOneEnable;
16249 };
16250 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16251
16252 struct GraphicsPipelineCreateInfo
16253 {
16254 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 )
16255 : sType( StructureType::eGraphicsPipelineCreateInfo )
16256 , pNext( nullptr )
16257 , flags( flags_ )
16258 , stageCount( stageCount_ )
16259 , pStages( pStages_ )
16260 , pVertexInputState( pVertexInputState_ )
16261 , pInputAssemblyState( pInputAssemblyState_ )
16262 , pTessellationState( pTessellationState_ )
16263 , pViewportState( pViewportState_ )
16264 , pRasterizationState( pRasterizationState_ )
16265 , pMultisampleState( pMultisampleState_ )
16266 , pDepthStencilState( pDepthStencilState_ )
16267 , pColorBlendState( pColorBlendState_ )
16268 , pDynamicState( pDynamicState_ )
16269 , layout( layout_ )
16270 , renderPass( renderPass_ )
16271 , subpass( subpass_ )
16272 , basePipelineHandle( basePipelineHandle_ )
16273 , basePipelineIndex( basePipelineIndex_ )
16274 {
16275 }
16276
16277 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16278 {
16279 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16280 }
16281
16282 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16283 {
16284 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16285 return *this;
16286 }
16287
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016288 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16289 {
16290 pNext = pNext_;
16291 return *this;
16292 }
16293
16294 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16295 {
16296 flags = flags_;
16297 return *this;
16298 }
16299
16300 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16301 {
16302 stageCount = stageCount_;
16303 return *this;
16304 }
16305
16306 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16307 {
16308 pStages = pStages_;
16309 return *this;
16310 }
16311
16312 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16313 {
16314 pVertexInputState = pVertexInputState_;
16315 return *this;
16316 }
16317
16318 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16319 {
16320 pInputAssemblyState = pInputAssemblyState_;
16321 return *this;
16322 }
16323
16324 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16325 {
16326 pTessellationState = pTessellationState_;
16327 return *this;
16328 }
16329
16330 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16331 {
16332 pViewportState = pViewportState_;
16333 return *this;
16334 }
16335
16336 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16337 {
16338 pRasterizationState = pRasterizationState_;
16339 return *this;
16340 }
16341
16342 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16343 {
16344 pMultisampleState = pMultisampleState_;
16345 return *this;
16346 }
16347
16348 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16349 {
16350 pDepthStencilState = pDepthStencilState_;
16351 return *this;
16352 }
16353
16354 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16355 {
16356 pColorBlendState = pColorBlendState_;
16357 return *this;
16358 }
16359
16360 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16361 {
16362 pDynamicState = pDynamicState_;
16363 return *this;
16364 }
16365
16366 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16367 {
16368 layout = layout_;
16369 return *this;
16370 }
16371
16372 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16373 {
16374 renderPass = renderPass_;
16375 return *this;
16376 }
16377
16378 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16379 {
16380 subpass = subpass_;
16381 return *this;
16382 }
16383
16384 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16385 {
16386 basePipelineHandle = basePipelineHandle_;
16387 return *this;
16388 }
16389
16390 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16391 {
16392 basePipelineIndex = basePipelineIndex_;
16393 return *this;
16394 }
16395
16396 operator const VkGraphicsPipelineCreateInfo&() const
16397 {
16398 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16399 }
16400
16401 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16402 {
16403 return ( sType == rhs.sType )
16404 && ( pNext == rhs.pNext )
16405 && ( flags == rhs.flags )
16406 && ( stageCount == rhs.stageCount )
16407 && ( pStages == rhs.pStages )
16408 && ( pVertexInputState == rhs.pVertexInputState )
16409 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16410 && ( pTessellationState == rhs.pTessellationState )
16411 && ( pViewportState == rhs.pViewportState )
16412 && ( pRasterizationState == rhs.pRasterizationState )
16413 && ( pMultisampleState == rhs.pMultisampleState )
16414 && ( pDepthStencilState == rhs.pDepthStencilState )
16415 && ( pColorBlendState == rhs.pColorBlendState )
16416 && ( pDynamicState == rhs.pDynamicState )
16417 && ( layout == rhs.layout )
16418 && ( renderPass == rhs.renderPass )
16419 && ( subpass == rhs.subpass )
16420 && ( basePipelineHandle == rhs.basePipelineHandle )
16421 && ( basePipelineIndex == rhs.basePipelineIndex );
16422 }
16423
16424 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16425 {
16426 return !operator==( rhs );
16427 }
16428
16429 private:
16430 StructureType sType;
16431
16432 public:
16433 const void* pNext;
16434 PipelineCreateFlags flags;
16435 uint32_t stageCount;
16436 const PipelineShaderStageCreateInfo* pStages;
16437 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16438 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16439 const PipelineTessellationStateCreateInfo* pTessellationState;
16440 const PipelineViewportStateCreateInfo* pViewportState;
16441 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16442 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16443 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16444 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16445 const PipelineDynamicStateCreateInfo* pDynamicState;
16446 PipelineLayout layout;
16447 RenderPass renderPass;
16448 uint32_t subpass;
16449 Pipeline basePipelineHandle;
16450 int32_t basePipelineIndex;
16451 };
16452 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16453
16454 struct PhysicalDeviceLimits
16455 {
16456 operator const VkPhysicalDeviceLimits&() const
16457 {
16458 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16459 }
16460
16461 bool operator==( PhysicalDeviceLimits const& rhs ) const
16462 {
16463 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16464 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16465 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16466 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16467 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16468 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16469 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16470 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16471 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16472 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16473 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16474 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16475 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16476 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16477 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16478 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16479 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16480 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16481 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16482 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16483 && ( maxPerStageResources == rhs.maxPerStageResources )
16484 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16485 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16486 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16487 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16488 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16489 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16490 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16491 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16492 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16493 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16494 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16495 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16496 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16497 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16498 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16499 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16500 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16501 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16502 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16503 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16504 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16505 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16506 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16507 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16508 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16509 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16510 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16511 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16512 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16513 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16514 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16515 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16516 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16517 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16518 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16519 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16520 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16521 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16522 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16523 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16524 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16525 && ( maxViewports == rhs.maxViewports )
16526 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16527 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16528 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16529 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16530 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16531 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16532 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16533 && ( minTexelOffset == rhs.minTexelOffset )
16534 && ( maxTexelOffset == rhs.maxTexelOffset )
16535 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16536 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16537 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16538 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16539 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16540 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16541 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16542 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16543 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16544 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16545 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16546 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16547 && ( maxColorAttachments == rhs.maxColorAttachments )
16548 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16549 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16550 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16551 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16552 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16553 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16554 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16555 && ( timestampPeriod == rhs.timestampPeriod )
16556 && ( maxClipDistances == rhs.maxClipDistances )
16557 && ( maxCullDistances == rhs.maxCullDistances )
16558 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16559 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16560 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16561 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16562 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16563 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16564 && ( strictLines == rhs.strictLines )
16565 && ( standardSampleLocations == rhs.standardSampleLocations )
16566 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16567 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16568 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16569 }
16570
16571 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16572 {
16573 return !operator==( rhs );
16574 }
16575
16576 uint32_t maxImageDimension1D;
16577 uint32_t maxImageDimension2D;
16578 uint32_t maxImageDimension3D;
16579 uint32_t maxImageDimensionCube;
16580 uint32_t maxImageArrayLayers;
16581 uint32_t maxTexelBufferElements;
16582 uint32_t maxUniformBufferRange;
16583 uint32_t maxStorageBufferRange;
16584 uint32_t maxPushConstantsSize;
16585 uint32_t maxMemoryAllocationCount;
16586 uint32_t maxSamplerAllocationCount;
16587 DeviceSize bufferImageGranularity;
16588 DeviceSize sparseAddressSpaceSize;
16589 uint32_t maxBoundDescriptorSets;
16590 uint32_t maxPerStageDescriptorSamplers;
16591 uint32_t maxPerStageDescriptorUniformBuffers;
16592 uint32_t maxPerStageDescriptorStorageBuffers;
16593 uint32_t maxPerStageDescriptorSampledImages;
16594 uint32_t maxPerStageDescriptorStorageImages;
16595 uint32_t maxPerStageDescriptorInputAttachments;
16596 uint32_t maxPerStageResources;
16597 uint32_t maxDescriptorSetSamplers;
16598 uint32_t maxDescriptorSetUniformBuffers;
16599 uint32_t maxDescriptorSetUniformBuffersDynamic;
16600 uint32_t maxDescriptorSetStorageBuffers;
16601 uint32_t maxDescriptorSetStorageBuffersDynamic;
16602 uint32_t maxDescriptorSetSampledImages;
16603 uint32_t maxDescriptorSetStorageImages;
16604 uint32_t maxDescriptorSetInputAttachments;
16605 uint32_t maxVertexInputAttributes;
16606 uint32_t maxVertexInputBindings;
16607 uint32_t maxVertexInputAttributeOffset;
16608 uint32_t maxVertexInputBindingStride;
16609 uint32_t maxVertexOutputComponents;
16610 uint32_t maxTessellationGenerationLevel;
16611 uint32_t maxTessellationPatchSize;
16612 uint32_t maxTessellationControlPerVertexInputComponents;
16613 uint32_t maxTessellationControlPerVertexOutputComponents;
16614 uint32_t maxTessellationControlPerPatchOutputComponents;
16615 uint32_t maxTessellationControlTotalOutputComponents;
16616 uint32_t maxTessellationEvaluationInputComponents;
16617 uint32_t maxTessellationEvaluationOutputComponents;
16618 uint32_t maxGeometryShaderInvocations;
16619 uint32_t maxGeometryInputComponents;
16620 uint32_t maxGeometryOutputComponents;
16621 uint32_t maxGeometryOutputVertices;
16622 uint32_t maxGeometryTotalOutputComponents;
16623 uint32_t maxFragmentInputComponents;
16624 uint32_t maxFragmentOutputAttachments;
16625 uint32_t maxFragmentDualSrcAttachments;
16626 uint32_t maxFragmentCombinedOutputResources;
16627 uint32_t maxComputeSharedMemorySize;
16628 uint32_t maxComputeWorkGroupCount[3];
16629 uint32_t maxComputeWorkGroupInvocations;
16630 uint32_t maxComputeWorkGroupSize[3];
16631 uint32_t subPixelPrecisionBits;
16632 uint32_t subTexelPrecisionBits;
16633 uint32_t mipmapPrecisionBits;
16634 uint32_t maxDrawIndexedIndexValue;
16635 uint32_t maxDrawIndirectCount;
16636 float maxSamplerLodBias;
16637 float maxSamplerAnisotropy;
16638 uint32_t maxViewports;
16639 uint32_t maxViewportDimensions[2];
16640 float viewportBoundsRange[2];
16641 uint32_t viewportSubPixelBits;
16642 size_t minMemoryMapAlignment;
16643 DeviceSize minTexelBufferOffsetAlignment;
16644 DeviceSize minUniformBufferOffsetAlignment;
16645 DeviceSize minStorageBufferOffsetAlignment;
16646 int32_t minTexelOffset;
16647 uint32_t maxTexelOffset;
16648 int32_t minTexelGatherOffset;
16649 uint32_t maxTexelGatherOffset;
16650 float minInterpolationOffset;
16651 float maxInterpolationOffset;
16652 uint32_t subPixelInterpolationOffsetBits;
16653 uint32_t maxFramebufferWidth;
16654 uint32_t maxFramebufferHeight;
16655 uint32_t maxFramebufferLayers;
16656 SampleCountFlags framebufferColorSampleCounts;
16657 SampleCountFlags framebufferDepthSampleCounts;
16658 SampleCountFlags framebufferStencilSampleCounts;
16659 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16660 uint32_t maxColorAttachments;
16661 SampleCountFlags sampledImageColorSampleCounts;
16662 SampleCountFlags sampledImageIntegerSampleCounts;
16663 SampleCountFlags sampledImageDepthSampleCounts;
16664 SampleCountFlags sampledImageStencilSampleCounts;
16665 SampleCountFlags storageImageSampleCounts;
16666 uint32_t maxSampleMaskWords;
16667 Bool32 timestampComputeAndGraphics;
16668 float timestampPeriod;
16669 uint32_t maxClipDistances;
16670 uint32_t maxCullDistances;
16671 uint32_t maxCombinedClipAndCullDistances;
16672 uint32_t discreteQueuePriorities;
16673 float pointSizeRange[2];
16674 float lineWidthRange[2];
16675 float pointSizeGranularity;
16676 float lineWidthGranularity;
16677 Bool32 strictLines;
16678 Bool32 standardSampleLocations;
16679 DeviceSize optimalBufferCopyOffsetAlignment;
16680 DeviceSize optimalBufferCopyRowPitchAlignment;
16681 DeviceSize nonCoherentAtomSize;
16682 };
16683 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16684
16685 struct PhysicalDeviceProperties
16686 {
16687 operator const VkPhysicalDeviceProperties&() const
16688 {
16689 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
16690 }
16691
16692 bool operator==( PhysicalDeviceProperties const& rhs ) const
16693 {
16694 return ( apiVersion == rhs.apiVersion )
16695 && ( driverVersion == rhs.driverVersion )
16696 && ( vendorID == rhs.vendorID )
16697 && ( deviceID == rhs.deviceID )
16698 && ( deviceType == rhs.deviceType )
16699 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
16700 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
16701 && ( limits == rhs.limits )
16702 && ( sparseProperties == rhs.sparseProperties );
16703 }
16704
16705 bool operator!=( PhysicalDeviceProperties const& rhs ) const
16706 {
16707 return !operator==( rhs );
16708 }
16709
16710 uint32_t apiVersion;
16711 uint32_t driverVersion;
16712 uint32_t vendorID;
16713 uint32_t deviceID;
16714 PhysicalDeviceType deviceType;
16715 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
16716 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
16717 PhysicalDeviceLimits limits;
16718 PhysicalDeviceSparseProperties sparseProperties;
16719 };
16720 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
16721
Mark Young39389872017-01-19 21:10:49 -070016722 struct PhysicalDeviceProperties2KHR
16723 {
16724 operator const VkPhysicalDeviceProperties2KHR&() const
16725 {
16726 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
16727 }
16728
16729 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
16730 {
16731 return ( sType == rhs.sType )
16732 && ( pNext == rhs.pNext )
16733 && ( properties == rhs.properties );
16734 }
16735
16736 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
16737 {
16738 return !operator==( rhs );
16739 }
16740
16741 private:
16742 StructureType sType;
16743
16744 public:
16745 void* pNext;
16746 PhysicalDeviceProperties properties;
16747 };
16748 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
16749
16750 struct ImageFormatProperties2KHR
16751 {
16752 operator const VkImageFormatProperties2KHR&() const
16753 {
16754 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
16755 }
16756
16757 bool operator==( ImageFormatProperties2KHR const& rhs ) const
16758 {
16759 return ( sType == rhs.sType )
16760 && ( pNext == rhs.pNext )
16761 && ( imageFormatProperties == rhs.imageFormatProperties );
16762 }
16763
16764 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
16765 {
16766 return !operator==( rhs );
16767 }
16768
16769 private:
16770 StructureType sType;
16771
16772 public:
16773 void* pNext;
16774 ImageFormatProperties imageFormatProperties;
16775 };
16776 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16777
16778 struct PhysicalDeviceSparseImageFormatInfo2KHR
16779 {
16780 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
16781 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
16782 , pNext( nullptr )
16783 , format( format_ )
16784 , type( type_ )
16785 , samples( samples_ )
16786 , usage( usage_ )
16787 , tiling( tiling_ )
16788 {
16789 }
16790
16791 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16792 {
16793 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16794 }
16795
16796 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16797 {
16798 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16799 return *this;
16800 }
16801
Mark Young39389872017-01-19 21:10:49 -070016802 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
16803 {
16804 pNext = pNext_;
16805 return *this;
16806 }
16807
16808 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
16809 {
16810 format = format_;
16811 return *this;
16812 }
16813
16814 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
16815 {
16816 type = type_;
16817 return *this;
16818 }
16819
16820 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
16821 {
16822 samples = samples_;
16823 return *this;
16824 }
16825
16826 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
16827 {
16828 usage = usage_;
16829 return *this;
16830 }
16831
16832 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
16833 {
16834 tiling = tiling_;
16835 return *this;
16836 }
16837
16838 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
16839 {
16840 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
16841 }
16842
16843 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16844 {
16845 return ( sType == rhs.sType )
16846 && ( pNext == rhs.pNext )
16847 && ( format == rhs.format )
16848 && ( type == rhs.type )
16849 && ( samples == rhs.samples )
16850 && ( usage == rhs.usage )
16851 && ( tiling == rhs.tiling );
16852 }
16853
16854 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16855 {
16856 return !operator==( rhs );
16857 }
16858
16859 private:
16860 StructureType sType;
16861
16862 public:
16863 const void* pNext;
16864 Format format;
16865 ImageType type;
16866 SampleCountFlagBits samples;
16867 ImageUsageFlags usage;
16868 ImageTiling tiling;
16869 };
16870 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
16871
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016872 enum class AttachmentDescriptionFlagBits
16873 {
16874 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
16875 };
16876
16877 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
16878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016879 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016880 {
16881 return AttachmentDescriptionFlags( bit0 ) | bit1;
16882 }
16883
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016884 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
16885 {
16886 return ~( AttachmentDescriptionFlags( bits ) );
16887 }
16888
16889 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
16890 {
16891 enum
16892 {
16893 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
16894 };
16895 };
16896
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016897 struct AttachmentDescription
16898 {
16899 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 )
16900 : flags( flags_ )
16901 , format( format_ )
16902 , samples( samples_ )
16903 , loadOp( loadOp_ )
16904 , storeOp( storeOp_ )
16905 , stencilLoadOp( stencilLoadOp_ )
16906 , stencilStoreOp( stencilStoreOp_ )
16907 , initialLayout( initialLayout_ )
16908 , finalLayout( finalLayout_ )
16909 {
16910 }
16911
16912 AttachmentDescription( VkAttachmentDescription const & rhs )
16913 {
16914 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16915 }
16916
16917 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
16918 {
16919 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16920 return *this;
16921 }
16922
16923 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
16924 {
16925 flags = flags_;
16926 return *this;
16927 }
16928
16929 AttachmentDescription& setFormat( Format format_ )
16930 {
16931 format = format_;
16932 return *this;
16933 }
16934
16935 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
16936 {
16937 samples = samples_;
16938 return *this;
16939 }
16940
16941 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
16942 {
16943 loadOp = loadOp_;
16944 return *this;
16945 }
16946
16947 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
16948 {
16949 storeOp = storeOp_;
16950 return *this;
16951 }
16952
16953 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
16954 {
16955 stencilLoadOp = stencilLoadOp_;
16956 return *this;
16957 }
16958
16959 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
16960 {
16961 stencilStoreOp = stencilStoreOp_;
16962 return *this;
16963 }
16964
16965 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
16966 {
16967 initialLayout = initialLayout_;
16968 return *this;
16969 }
16970
16971 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
16972 {
16973 finalLayout = finalLayout_;
16974 return *this;
16975 }
16976
16977 operator const VkAttachmentDescription&() const
16978 {
16979 return *reinterpret_cast<const VkAttachmentDescription*>(this);
16980 }
16981
16982 bool operator==( AttachmentDescription const& rhs ) const
16983 {
16984 return ( flags == rhs.flags )
16985 && ( format == rhs.format )
16986 && ( samples == rhs.samples )
16987 && ( loadOp == rhs.loadOp )
16988 && ( storeOp == rhs.storeOp )
16989 && ( stencilLoadOp == rhs.stencilLoadOp )
16990 && ( stencilStoreOp == rhs.stencilStoreOp )
16991 && ( initialLayout == rhs.initialLayout )
16992 && ( finalLayout == rhs.finalLayout );
16993 }
16994
16995 bool operator!=( AttachmentDescription const& rhs ) const
16996 {
16997 return !operator==( rhs );
16998 }
16999
17000 AttachmentDescriptionFlags flags;
17001 Format format;
17002 SampleCountFlagBits samples;
17003 AttachmentLoadOp loadOp;
17004 AttachmentStoreOp storeOp;
17005 AttachmentLoadOp stencilLoadOp;
17006 AttachmentStoreOp stencilStoreOp;
17007 ImageLayout initialLayout;
17008 ImageLayout finalLayout;
17009 };
17010 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17011
17012 enum class StencilFaceFlagBits
17013 {
17014 eFront = VK_STENCIL_FACE_FRONT_BIT,
17015 eBack = VK_STENCIL_FACE_BACK_BIT,
17016 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17017 };
17018
17019 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17020
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017021 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017022 {
17023 return StencilFaceFlags( bit0 ) | bit1;
17024 }
17025
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017026 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17027 {
17028 return ~( StencilFaceFlags( bits ) );
17029 }
17030
17031 template <> struct FlagTraits<StencilFaceFlagBits>
17032 {
17033 enum
17034 {
17035 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17036 };
17037 };
17038
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017039 enum class DescriptorPoolCreateFlagBits
17040 {
17041 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17042 };
17043
17044 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17045
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017046 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017047 {
17048 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17049 }
17050
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017051 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17052 {
17053 return ~( DescriptorPoolCreateFlags( bits ) );
17054 }
17055
17056 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17057 {
17058 enum
17059 {
17060 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17061 };
17062 };
17063
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017064 struct DescriptorPoolCreateInfo
17065 {
17066 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17067 : sType( StructureType::eDescriptorPoolCreateInfo )
17068 , pNext( nullptr )
17069 , flags( flags_ )
17070 , maxSets( maxSets_ )
17071 , poolSizeCount( poolSizeCount_ )
17072 , pPoolSizes( pPoolSizes_ )
17073 {
17074 }
17075
17076 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17077 {
17078 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17079 }
17080
17081 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17082 {
17083 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17084 return *this;
17085 }
17086
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017087 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17088 {
17089 pNext = pNext_;
17090 return *this;
17091 }
17092
17093 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17094 {
17095 flags = flags_;
17096 return *this;
17097 }
17098
17099 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17100 {
17101 maxSets = maxSets_;
17102 return *this;
17103 }
17104
17105 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17106 {
17107 poolSizeCount = poolSizeCount_;
17108 return *this;
17109 }
17110
17111 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17112 {
17113 pPoolSizes = pPoolSizes_;
17114 return *this;
17115 }
17116
17117 operator const VkDescriptorPoolCreateInfo&() const
17118 {
17119 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17120 }
17121
17122 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17123 {
17124 return ( sType == rhs.sType )
17125 && ( pNext == rhs.pNext )
17126 && ( flags == rhs.flags )
17127 && ( maxSets == rhs.maxSets )
17128 && ( poolSizeCount == rhs.poolSizeCount )
17129 && ( pPoolSizes == rhs.pPoolSizes );
17130 }
17131
17132 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17133 {
17134 return !operator==( rhs );
17135 }
17136
17137 private:
17138 StructureType sType;
17139
17140 public:
17141 const void* pNext;
17142 DescriptorPoolCreateFlags flags;
17143 uint32_t maxSets;
17144 uint32_t poolSizeCount;
17145 const DescriptorPoolSize* pPoolSizes;
17146 };
17147 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17148
17149 enum class DependencyFlagBits
17150 {
Mark Young0f183a82017-02-28 09:58:04 -070017151 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17152 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17153 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017154 };
17155
17156 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017158 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017159 {
17160 return DependencyFlags( bit0 ) | bit1;
17161 }
17162
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017163 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17164 {
17165 return ~( DependencyFlags( bits ) );
17166 }
17167
17168 template <> struct FlagTraits<DependencyFlagBits>
17169 {
17170 enum
17171 {
Mark Young0f183a82017-02-28 09:58:04 -070017172 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017173 };
17174 };
17175
17176 struct SubpassDependency
17177 {
17178 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17179 : srcSubpass( srcSubpass_ )
17180 , dstSubpass( dstSubpass_ )
17181 , srcStageMask( srcStageMask_ )
17182 , dstStageMask( dstStageMask_ )
17183 , srcAccessMask( srcAccessMask_ )
17184 , dstAccessMask( dstAccessMask_ )
17185 , dependencyFlags( dependencyFlags_ )
17186 {
17187 }
17188
17189 SubpassDependency( VkSubpassDependency const & rhs )
17190 {
17191 memcpy( this, &rhs, sizeof(SubpassDependency) );
17192 }
17193
17194 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17195 {
17196 memcpy( this, &rhs, sizeof(SubpassDependency) );
17197 return *this;
17198 }
17199
17200 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17201 {
17202 srcSubpass = srcSubpass_;
17203 return *this;
17204 }
17205
17206 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17207 {
17208 dstSubpass = dstSubpass_;
17209 return *this;
17210 }
17211
17212 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17213 {
17214 srcStageMask = srcStageMask_;
17215 return *this;
17216 }
17217
17218 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17219 {
17220 dstStageMask = dstStageMask_;
17221 return *this;
17222 }
17223
17224 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17225 {
17226 srcAccessMask = srcAccessMask_;
17227 return *this;
17228 }
17229
17230 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17231 {
17232 dstAccessMask = dstAccessMask_;
17233 return *this;
17234 }
17235
17236 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17237 {
17238 dependencyFlags = dependencyFlags_;
17239 return *this;
17240 }
17241
17242 operator const VkSubpassDependency&() const
17243 {
17244 return *reinterpret_cast<const VkSubpassDependency*>(this);
17245 }
17246
17247 bool operator==( SubpassDependency const& rhs ) const
17248 {
17249 return ( srcSubpass == rhs.srcSubpass )
17250 && ( dstSubpass == rhs.dstSubpass )
17251 && ( srcStageMask == rhs.srcStageMask )
17252 && ( dstStageMask == rhs.dstStageMask )
17253 && ( srcAccessMask == rhs.srcAccessMask )
17254 && ( dstAccessMask == rhs.dstAccessMask )
17255 && ( dependencyFlags == rhs.dependencyFlags );
17256 }
17257
17258 bool operator!=( SubpassDependency const& rhs ) const
17259 {
17260 return !operator==( rhs );
17261 }
17262
17263 uint32_t srcSubpass;
17264 uint32_t dstSubpass;
17265 PipelineStageFlags srcStageMask;
17266 PipelineStageFlags dstStageMask;
17267 AccessFlags srcAccessMask;
17268 AccessFlags dstAccessMask;
17269 DependencyFlags dependencyFlags;
17270 };
17271 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017273 enum class PresentModeKHR
17274 {
17275 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17276 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17277 eFifo = VK_PRESENT_MODE_FIFO_KHR,
17278 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR
17279 };
17280
17281 enum class ColorSpaceKHR
17282 {
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070017283 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017284 };
17285
17286 struct SurfaceFormatKHR
17287 {
17288 operator const VkSurfaceFormatKHR&() const
17289 {
17290 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17291 }
17292
17293 bool operator==( SurfaceFormatKHR const& rhs ) const
17294 {
17295 return ( format == rhs.format )
17296 && ( colorSpace == rhs.colorSpace );
17297 }
17298
17299 bool operator!=( SurfaceFormatKHR const& rhs ) const
17300 {
17301 return !operator==( rhs );
17302 }
17303
17304 Format format;
17305 ColorSpaceKHR colorSpace;
17306 };
17307 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17308
17309 enum class DisplayPlaneAlphaFlagBitsKHR
17310 {
17311 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17312 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17313 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17314 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17315 };
17316
17317 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17318
17319 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17320 {
17321 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17322 }
17323
17324 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17325 {
17326 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17327 }
17328
17329 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17330 {
17331 enum
17332 {
17333 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17334 };
17335 };
17336
17337 struct DisplayPlaneCapabilitiesKHR
17338 {
17339 operator const VkDisplayPlaneCapabilitiesKHR&() const
17340 {
17341 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17342 }
17343
17344 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17345 {
17346 return ( supportedAlpha == rhs.supportedAlpha )
17347 && ( minSrcPosition == rhs.minSrcPosition )
17348 && ( maxSrcPosition == rhs.maxSrcPosition )
17349 && ( minSrcExtent == rhs.minSrcExtent )
17350 && ( maxSrcExtent == rhs.maxSrcExtent )
17351 && ( minDstPosition == rhs.minDstPosition )
17352 && ( maxDstPosition == rhs.maxDstPosition )
17353 && ( minDstExtent == rhs.minDstExtent )
17354 && ( maxDstExtent == rhs.maxDstExtent );
17355 }
17356
17357 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17358 {
17359 return !operator==( rhs );
17360 }
17361
17362 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17363 Offset2D minSrcPosition;
17364 Offset2D maxSrcPosition;
17365 Extent2D minSrcExtent;
17366 Extent2D maxSrcExtent;
17367 Offset2D minDstPosition;
17368 Offset2D maxDstPosition;
17369 Extent2D minDstExtent;
17370 Extent2D maxDstExtent;
17371 };
17372 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17373
17374 enum class CompositeAlphaFlagBitsKHR
17375 {
17376 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17377 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17378 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17379 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17380 };
17381
17382 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17383
17384 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17385 {
17386 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17387 }
17388
17389 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17390 {
17391 return ~( CompositeAlphaFlagsKHR( bits ) );
17392 }
17393
17394 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17395 {
17396 enum
17397 {
17398 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17399 };
17400 };
17401
17402 enum class SurfaceTransformFlagBitsKHR
17403 {
17404 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17405 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17406 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17407 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17408 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17409 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17410 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17411 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17412 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17413 };
17414
17415 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17416
17417 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17418 {
17419 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17420 }
17421
17422 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17423 {
17424 return ~( SurfaceTransformFlagsKHR( bits ) );
17425 }
17426
17427 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17428 {
17429 enum
17430 {
17431 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)
17432 };
17433 };
17434
17435 struct DisplayPropertiesKHR
17436 {
17437 operator const VkDisplayPropertiesKHR&() const
17438 {
17439 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17440 }
17441
17442 bool operator==( DisplayPropertiesKHR const& rhs ) const
17443 {
17444 return ( display == rhs.display )
17445 && ( displayName == rhs.displayName )
17446 && ( physicalDimensions == rhs.physicalDimensions )
17447 && ( physicalResolution == rhs.physicalResolution )
17448 && ( supportedTransforms == rhs.supportedTransforms )
17449 && ( planeReorderPossible == rhs.planeReorderPossible )
17450 && ( persistentContent == rhs.persistentContent );
17451 }
17452
17453 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17454 {
17455 return !operator==( rhs );
17456 }
17457
17458 DisplayKHR display;
17459 const char* displayName;
17460 Extent2D physicalDimensions;
17461 Extent2D physicalResolution;
17462 SurfaceTransformFlagsKHR supportedTransforms;
17463 Bool32 planeReorderPossible;
17464 Bool32 persistentContent;
17465 };
17466 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17467
17468 struct DisplaySurfaceCreateInfoKHR
17469 {
17470 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() )
17471 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17472 , pNext( nullptr )
17473 , flags( flags_ )
17474 , displayMode( displayMode_ )
17475 , planeIndex( planeIndex_ )
17476 , planeStackIndex( planeStackIndex_ )
17477 , transform( transform_ )
17478 , globalAlpha( globalAlpha_ )
17479 , alphaMode( alphaMode_ )
17480 , imageExtent( imageExtent_ )
17481 {
17482 }
17483
17484 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17485 {
17486 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17487 }
17488
17489 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17490 {
17491 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17492 return *this;
17493 }
17494
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017495 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17496 {
17497 pNext = pNext_;
17498 return *this;
17499 }
17500
17501 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17502 {
17503 flags = flags_;
17504 return *this;
17505 }
17506
17507 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17508 {
17509 displayMode = displayMode_;
17510 return *this;
17511 }
17512
17513 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17514 {
17515 planeIndex = planeIndex_;
17516 return *this;
17517 }
17518
17519 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17520 {
17521 planeStackIndex = planeStackIndex_;
17522 return *this;
17523 }
17524
17525 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17526 {
17527 transform = transform_;
17528 return *this;
17529 }
17530
17531 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17532 {
17533 globalAlpha = globalAlpha_;
17534 return *this;
17535 }
17536
17537 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17538 {
17539 alphaMode = alphaMode_;
17540 return *this;
17541 }
17542
17543 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17544 {
17545 imageExtent = imageExtent_;
17546 return *this;
17547 }
17548
17549 operator const VkDisplaySurfaceCreateInfoKHR&() const
17550 {
17551 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17552 }
17553
17554 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17555 {
17556 return ( sType == rhs.sType )
17557 && ( pNext == rhs.pNext )
17558 && ( flags == rhs.flags )
17559 && ( displayMode == rhs.displayMode )
17560 && ( planeIndex == rhs.planeIndex )
17561 && ( planeStackIndex == rhs.planeStackIndex )
17562 && ( transform == rhs.transform )
17563 && ( globalAlpha == rhs.globalAlpha )
17564 && ( alphaMode == rhs.alphaMode )
17565 && ( imageExtent == rhs.imageExtent );
17566 }
17567
17568 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17569 {
17570 return !operator==( rhs );
17571 }
17572
17573 private:
17574 StructureType sType;
17575
17576 public:
17577 const void* pNext;
17578 DisplaySurfaceCreateFlagsKHR flags;
17579 DisplayModeKHR displayMode;
17580 uint32_t planeIndex;
17581 uint32_t planeStackIndex;
17582 SurfaceTransformFlagBitsKHR transform;
17583 float globalAlpha;
17584 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17585 Extent2D imageExtent;
17586 };
17587 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17588
17589 struct SurfaceCapabilitiesKHR
17590 {
17591 operator const VkSurfaceCapabilitiesKHR&() const
17592 {
17593 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17594 }
17595
17596 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17597 {
17598 return ( minImageCount == rhs.minImageCount )
17599 && ( maxImageCount == rhs.maxImageCount )
17600 && ( currentExtent == rhs.currentExtent )
17601 && ( minImageExtent == rhs.minImageExtent )
17602 && ( maxImageExtent == rhs.maxImageExtent )
17603 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17604 && ( supportedTransforms == rhs.supportedTransforms )
17605 && ( currentTransform == rhs.currentTransform )
17606 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17607 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17608 }
17609
17610 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17611 {
17612 return !operator==( rhs );
17613 }
17614
17615 uint32_t minImageCount;
17616 uint32_t maxImageCount;
17617 Extent2D currentExtent;
17618 Extent2D minImageExtent;
17619 Extent2D maxImageExtent;
17620 uint32_t maxImageArrayLayers;
17621 SurfaceTransformFlagsKHR supportedTransforms;
17622 SurfaceTransformFlagBitsKHR currentTransform;
17623 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17624 ImageUsageFlags supportedUsageFlags;
17625 };
17626 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17627
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017628 enum class DebugReportFlagBitsEXT
17629 {
17630 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
17631 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
17632 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
17633 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
17634 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
17635 };
17636
17637 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
17638
17639 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
17640 {
17641 return DebugReportFlagsEXT( bit0 ) | bit1;
17642 }
17643
17644 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
17645 {
17646 return ~( DebugReportFlagsEXT( bits ) );
17647 }
17648
17649 template <> struct FlagTraits<DebugReportFlagBitsEXT>
17650 {
17651 enum
17652 {
17653 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
17654 };
17655 };
17656
17657 struct DebugReportCallbackCreateInfoEXT
17658 {
17659 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
17660 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
17661 , pNext( nullptr )
17662 , flags( flags_ )
17663 , pfnCallback( pfnCallback_ )
17664 , pUserData( pUserData_ )
17665 {
17666 }
17667
17668 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
17669 {
17670 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17671 }
17672
17673 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
17674 {
17675 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17676 return *this;
17677 }
17678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017679 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
17680 {
17681 pNext = pNext_;
17682 return *this;
17683 }
17684
17685 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
17686 {
17687 flags = flags_;
17688 return *this;
17689 }
17690
17691 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
17692 {
17693 pfnCallback = pfnCallback_;
17694 return *this;
17695 }
17696
17697 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
17698 {
17699 pUserData = pUserData_;
17700 return *this;
17701 }
17702
17703 operator const VkDebugReportCallbackCreateInfoEXT&() const
17704 {
17705 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
17706 }
17707
17708 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
17709 {
17710 return ( sType == rhs.sType )
17711 && ( pNext == rhs.pNext )
17712 && ( flags == rhs.flags )
17713 && ( pfnCallback == rhs.pfnCallback )
17714 && ( pUserData == rhs.pUserData );
17715 }
17716
17717 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
17718 {
17719 return !operator==( rhs );
17720 }
17721
17722 private:
17723 StructureType sType;
17724
17725 public:
17726 const void* pNext;
17727 DebugReportFlagsEXT flags;
17728 PFN_vkDebugReportCallbackEXT pfnCallback;
17729 void* pUserData;
17730 };
17731 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
17732
17733 enum class DebugReportObjectTypeEXT
17734 {
17735 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
17736 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
17737 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
17738 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
17739 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
17740 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
17741 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
17742 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
17743 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
17744 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
17745 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
17746 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
17747 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
17748 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
17749 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
17750 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
17751 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
17752 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
17753 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
17754 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
17755 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
17756 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
17757 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
17758 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
17759 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
17760 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
17761 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
17762 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
17763 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
17764 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
17765 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
17766 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
17767 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
17768 };
17769
17770 struct DebugMarkerObjectNameInfoEXT
17771 {
17772 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
17773 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
17774 , pNext( nullptr )
17775 , objectType( objectType_ )
17776 , object( object_ )
17777 , pObjectName( pObjectName_ )
17778 {
17779 }
17780
17781 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
17782 {
17783 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17784 }
17785
17786 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
17787 {
17788 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17789 return *this;
17790 }
17791
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017792 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
17793 {
17794 pNext = pNext_;
17795 return *this;
17796 }
17797
17798 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17799 {
17800 objectType = objectType_;
17801 return *this;
17802 }
17803
17804 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
17805 {
17806 object = object_;
17807 return *this;
17808 }
17809
17810 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
17811 {
17812 pObjectName = pObjectName_;
17813 return *this;
17814 }
17815
17816 operator const VkDebugMarkerObjectNameInfoEXT&() const
17817 {
17818 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
17819 }
17820
17821 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
17822 {
17823 return ( sType == rhs.sType )
17824 && ( pNext == rhs.pNext )
17825 && ( objectType == rhs.objectType )
17826 && ( object == rhs.object )
17827 && ( pObjectName == rhs.pObjectName );
17828 }
17829
17830 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
17831 {
17832 return !operator==( rhs );
17833 }
17834
17835 private:
17836 StructureType sType;
17837
17838 public:
17839 const void* pNext;
17840 DebugReportObjectTypeEXT objectType;
17841 uint64_t object;
17842 const char* pObjectName;
17843 };
17844 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
17845
17846 struct DebugMarkerObjectTagInfoEXT
17847 {
17848 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
17849 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
17850 , pNext( nullptr )
17851 , objectType( objectType_ )
17852 , object( object_ )
17853 , tagName( tagName_ )
17854 , tagSize( tagSize_ )
17855 , pTag( pTag_ )
17856 {
17857 }
17858
17859 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
17860 {
17861 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17862 }
17863
17864 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
17865 {
17866 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17867 return *this;
17868 }
17869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017870 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
17871 {
17872 pNext = pNext_;
17873 return *this;
17874 }
17875
17876 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17877 {
17878 objectType = objectType_;
17879 return *this;
17880 }
17881
17882 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
17883 {
17884 object = object_;
17885 return *this;
17886 }
17887
17888 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
17889 {
17890 tagName = tagName_;
17891 return *this;
17892 }
17893
17894 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
17895 {
17896 tagSize = tagSize_;
17897 return *this;
17898 }
17899
17900 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
17901 {
17902 pTag = pTag_;
17903 return *this;
17904 }
17905
17906 operator const VkDebugMarkerObjectTagInfoEXT&() const
17907 {
17908 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
17909 }
17910
17911 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
17912 {
17913 return ( sType == rhs.sType )
17914 && ( pNext == rhs.pNext )
17915 && ( objectType == rhs.objectType )
17916 && ( object == rhs.object )
17917 && ( tagName == rhs.tagName )
17918 && ( tagSize == rhs.tagSize )
17919 && ( pTag == rhs.pTag );
17920 }
17921
17922 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
17923 {
17924 return !operator==( rhs );
17925 }
17926
17927 private:
17928 StructureType sType;
17929
17930 public:
17931 const void* pNext;
17932 DebugReportObjectTypeEXT objectType;
17933 uint64_t object;
17934 uint64_t tagName;
17935 size_t tagSize;
17936 const void* pTag;
17937 };
17938 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
17939
17940 enum class DebugReportErrorEXT
17941 {
17942 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
17943 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
17944 };
17945
17946 enum class RasterizationOrderAMD
17947 {
17948 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
17949 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
17950 };
17951
17952 struct PipelineRasterizationStateRasterizationOrderAMD
17953 {
17954 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
17955 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
17956 , pNext( nullptr )
17957 , rasterizationOrder( rasterizationOrder_ )
17958 {
17959 }
17960
17961 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17962 {
17963 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17964 }
17965
17966 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17967 {
17968 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17969 return *this;
17970 }
17971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017972 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
17973 {
17974 pNext = pNext_;
17975 return *this;
17976 }
17977
17978 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
17979 {
17980 rasterizationOrder = rasterizationOrder_;
17981 return *this;
17982 }
17983
17984 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
17985 {
17986 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
17987 }
17988
17989 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
17990 {
17991 return ( sType == rhs.sType )
17992 && ( pNext == rhs.pNext )
17993 && ( rasterizationOrder == rhs.rasterizationOrder );
17994 }
17995
17996 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
17997 {
17998 return !operator==( rhs );
17999 }
18000
18001 private:
18002 StructureType sType;
18003
18004 public:
18005 const void* pNext;
18006 RasterizationOrderAMD rasterizationOrder;
18007 };
18008 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18009
18010 enum class ExternalMemoryHandleTypeFlagBitsNV
18011 {
18012 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18013 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18014 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18015 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18016 };
18017
18018 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18019
18020 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18021 {
18022 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18023 }
18024
18025 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18026 {
18027 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18028 }
18029
18030 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18031 {
18032 enum
18033 {
18034 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18035 };
18036 };
18037
18038 struct ExternalMemoryImageCreateInfoNV
18039 {
18040 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18041 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18042 , pNext( nullptr )
18043 , handleTypes( handleTypes_ )
18044 {
18045 }
18046
18047 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18048 {
18049 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18050 }
18051
18052 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18053 {
18054 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18055 return *this;
18056 }
18057
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018058 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18059 {
18060 pNext = pNext_;
18061 return *this;
18062 }
18063
18064 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18065 {
18066 handleTypes = handleTypes_;
18067 return *this;
18068 }
18069
18070 operator const VkExternalMemoryImageCreateInfoNV&() const
18071 {
18072 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18073 }
18074
18075 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18076 {
18077 return ( sType == rhs.sType )
18078 && ( pNext == rhs.pNext )
18079 && ( handleTypes == rhs.handleTypes );
18080 }
18081
18082 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18083 {
18084 return !operator==( rhs );
18085 }
18086
18087 private:
18088 StructureType sType;
18089
18090 public:
18091 const void* pNext;
18092 ExternalMemoryHandleTypeFlagsNV handleTypes;
18093 };
18094 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18095
18096 struct ExportMemoryAllocateInfoNV
18097 {
18098 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18099 : sType( StructureType::eExportMemoryAllocateInfoNV )
18100 , pNext( nullptr )
18101 , handleTypes( handleTypes_ )
18102 {
18103 }
18104
18105 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18106 {
18107 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18108 }
18109
18110 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18111 {
18112 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18113 return *this;
18114 }
18115
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018116 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18117 {
18118 pNext = pNext_;
18119 return *this;
18120 }
18121
18122 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18123 {
18124 handleTypes = handleTypes_;
18125 return *this;
18126 }
18127
18128 operator const VkExportMemoryAllocateInfoNV&() const
18129 {
18130 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18131 }
18132
18133 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18134 {
18135 return ( sType == rhs.sType )
18136 && ( pNext == rhs.pNext )
18137 && ( handleTypes == rhs.handleTypes );
18138 }
18139
18140 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18141 {
18142 return !operator==( rhs );
18143 }
18144
18145 private:
18146 StructureType sType;
18147
18148 public:
18149 const void* pNext;
18150 ExternalMemoryHandleTypeFlagsNV handleTypes;
18151 };
18152 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18153
18154#ifdef VK_USE_PLATFORM_WIN32_KHR
18155 struct ImportMemoryWin32HandleInfoNV
18156 {
18157 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18158 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18159 , pNext( nullptr )
18160 , handleType( handleType_ )
18161 , handle( handle_ )
18162 {
18163 }
18164
18165 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18166 {
18167 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18168 }
18169
18170 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18171 {
18172 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18173 return *this;
18174 }
18175
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018176 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18177 {
18178 pNext = pNext_;
18179 return *this;
18180 }
18181
18182 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18183 {
18184 handleType = handleType_;
18185 return *this;
18186 }
18187
18188 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18189 {
18190 handle = handle_;
18191 return *this;
18192 }
18193
18194 operator const VkImportMemoryWin32HandleInfoNV&() const
18195 {
18196 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18197 }
18198
18199 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18200 {
18201 return ( sType == rhs.sType )
18202 && ( pNext == rhs.pNext )
18203 && ( handleType == rhs.handleType )
18204 && ( handle == rhs.handle );
18205 }
18206
18207 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18208 {
18209 return !operator==( rhs );
18210 }
18211
18212 private:
18213 StructureType sType;
18214
18215 public:
18216 const void* pNext;
18217 ExternalMemoryHandleTypeFlagsNV handleType;
18218 HANDLE handle;
18219 };
18220 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18221#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18222
18223 enum class ExternalMemoryFeatureFlagBitsNV
18224 {
18225 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18226 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18227 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18228 };
18229
18230 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18231
18232 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18233 {
18234 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18235 }
18236
18237 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18238 {
18239 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18240 }
18241
18242 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18243 {
18244 enum
18245 {
18246 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18247 };
18248 };
18249
18250 struct ExternalImageFormatPropertiesNV
18251 {
18252 operator const VkExternalImageFormatPropertiesNV&() const
18253 {
18254 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18255 }
18256
18257 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18258 {
18259 return ( imageFormatProperties == rhs.imageFormatProperties )
18260 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18261 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18262 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18263 }
18264
18265 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18266 {
18267 return !operator==( rhs );
18268 }
18269
18270 ImageFormatProperties imageFormatProperties;
18271 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18272 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18273 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18274 };
18275 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18276
18277 enum class ValidationCheckEXT
18278 {
18279 eAll = VK_VALIDATION_CHECK_ALL_EXT
18280 };
18281
18282 struct ValidationFlagsEXT
18283 {
18284 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18285 : sType( StructureType::eValidationFlagsEXT )
18286 , pNext( nullptr )
18287 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18288 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18289 {
18290 }
18291
18292 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18293 {
18294 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18295 }
18296
18297 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18298 {
18299 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18300 return *this;
18301 }
18302
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018303 ValidationFlagsEXT& setPNext( const void* pNext_ )
18304 {
18305 pNext = pNext_;
18306 return *this;
18307 }
18308
18309 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18310 {
18311 disabledValidationCheckCount = disabledValidationCheckCount_;
18312 return *this;
18313 }
18314
18315 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18316 {
18317 pDisabledValidationChecks = pDisabledValidationChecks_;
18318 return *this;
18319 }
18320
18321 operator const VkValidationFlagsEXT&() const
18322 {
18323 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18324 }
18325
18326 bool operator==( ValidationFlagsEXT const& rhs ) const
18327 {
18328 return ( sType == rhs.sType )
18329 && ( pNext == rhs.pNext )
18330 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18331 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18332 }
18333
18334 bool operator!=( ValidationFlagsEXT const& rhs ) const
18335 {
18336 return !operator==( rhs );
18337 }
18338
18339 private:
18340 StructureType sType;
18341
18342 public:
18343 const void* pNext;
18344 uint32_t disabledValidationCheckCount;
18345 ValidationCheckEXT* pDisabledValidationChecks;
18346 };
18347 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18348
18349 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18350 {
18351 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18352 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18353 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18354 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18355 };
18356
18357 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18358
18359 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18360 {
18361 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18362 }
18363
18364 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18365 {
18366 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18367 }
18368
18369 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18370 {
18371 enum
18372 {
18373 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18374 };
18375 };
18376
18377 enum class ObjectEntryUsageFlagBitsNVX
18378 {
18379 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18380 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18381 };
18382
18383 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18384
18385 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18386 {
18387 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18388 }
18389
18390 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18391 {
18392 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18393 }
18394
18395 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18396 {
18397 enum
18398 {
18399 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18400 };
18401 };
18402
18403 enum class IndirectCommandsTokenTypeNVX
18404 {
18405 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18406 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18407 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18408 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18409 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18410 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18411 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18412 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18413 };
18414
18415 struct IndirectCommandsTokenNVX
18416 {
18417 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18418 : tokenType( tokenType_ )
18419 , buffer( buffer_ )
18420 , offset( offset_ )
18421 {
18422 }
18423
18424 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18425 {
18426 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18427 }
18428
18429 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18430 {
18431 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18432 return *this;
18433 }
18434
18435 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18436 {
18437 tokenType = tokenType_;
18438 return *this;
18439 }
18440
18441 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18442 {
18443 buffer = buffer_;
18444 return *this;
18445 }
18446
18447 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18448 {
18449 offset = offset_;
18450 return *this;
18451 }
18452
18453 operator const VkIndirectCommandsTokenNVX&() const
18454 {
18455 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18456 }
18457
18458 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18459 {
18460 return ( tokenType == rhs.tokenType )
18461 && ( buffer == rhs.buffer )
18462 && ( offset == rhs.offset );
18463 }
18464
18465 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18466 {
18467 return !operator==( rhs );
18468 }
18469
18470 IndirectCommandsTokenTypeNVX tokenType;
18471 Buffer buffer;
18472 DeviceSize offset;
18473 };
18474 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18475
18476 struct IndirectCommandsLayoutTokenNVX
18477 {
18478 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18479 : tokenType( tokenType_ )
18480 , bindingUnit( bindingUnit_ )
18481 , dynamicCount( dynamicCount_ )
18482 , divisor( divisor_ )
18483 {
18484 }
18485
18486 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18487 {
18488 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18489 }
18490
18491 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18492 {
18493 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18494 return *this;
18495 }
18496
18497 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18498 {
18499 tokenType = tokenType_;
18500 return *this;
18501 }
18502
18503 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18504 {
18505 bindingUnit = bindingUnit_;
18506 return *this;
18507 }
18508
18509 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18510 {
18511 dynamicCount = dynamicCount_;
18512 return *this;
18513 }
18514
18515 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18516 {
18517 divisor = divisor_;
18518 return *this;
18519 }
18520
18521 operator const VkIndirectCommandsLayoutTokenNVX&() const
18522 {
18523 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18524 }
18525
18526 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18527 {
18528 return ( tokenType == rhs.tokenType )
18529 && ( bindingUnit == rhs.bindingUnit )
18530 && ( dynamicCount == rhs.dynamicCount )
18531 && ( divisor == rhs.divisor );
18532 }
18533
18534 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18535 {
18536 return !operator==( rhs );
18537 }
18538
18539 IndirectCommandsTokenTypeNVX tokenType;
18540 uint32_t bindingUnit;
18541 uint32_t dynamicCount;
18542 uint32_t divisor;
18543 };
18544 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18545
18546 struct IndirectCommandsLayoutCreateInfoNVX
18547 {
18548 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18549 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18550 , pNext( nullptr )
18551 , pipelineBindPoint( pipelineBindPoint_ )
18552 , flags( flags_ )
18553 , tokenCount( tokenCount_ )
18554 , pTokens( pTokens_ )
18555 {
18556 }
18557
18558 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18559 {
18560 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18561 }
18562
18563 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18564 {
18565 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18566 return *this;
18567 }
18568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018569 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18570 {
18571 pNext = pNext_;
18572 return *this;
18573 }
18574
18575 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18576 {
18577 pipelineBindPoint = pipelineBindPoint_;
18578 return *this;
18579 }
18580
18581 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18582 {
18583 flags = flags_;
18584 return *this;
18585 }
18586
18587 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18588 {
18589 tokenCount = tokenCount_;
18590 return *this;
18591 }
18592
18593 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18594 {
18595 pTokens = pTokens_;
18596 return *this;
18597 }
18598
18599 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18600 {
18601 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18602 }
18603
18604 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18605 {
18606 return ( sType == rhs.sType )
18607 && ( pNext == rhs.pNext )
18608 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18609 && ( flags == rhs.flags )
18610 && ( tokenCount == rhs.tokenCount )
18611 && ( pTokens == rhs.pTokens );
18612 }
18613
18614 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18615 {
18616 return !operator==( rhs );
18617 }
18618
18619 private:
18620 StructureType sType;
18621
18622 public:
18623 const void* pNext;
18624 PipelineBindPoint pipelineBindPoint;
18625 IndirectCommandsLayoutUsageFlagsNVX flags;
18626 uint32_t tokenCount;
18627 const IndirectCommandsLayoutTokenNVX* pTokens;
18628 };
18629 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
18630
18631 enum class ObjectEntryTypeNVX
18632 {
18633 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
18634 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
18635 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
18636 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
18637 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
18638 };
18639
18640 struct ObjectTableCreateInfoNVX
18641 {
18642 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 )
18643 : sType( StructureType::eObjectTableCreateInfoNVX )
18644 , pNext( nullptr )
18645 , objectCount( objectCount_ )
18646 , pObjectEntryTypes( pObjectEntryTypes_ )
18647 , pObjectEntryCounts( pObjectEntryCounts_ )
18648 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
18649 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
18650 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
18651 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
18652 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
18653 , maxPipelineLayouts( maxPipelineLayouts_ )
18654 {
18655 }
18656
18657 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
18658 {
18659 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18660 }
18661
18662 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
18663 {
18664 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18665 return *this;
18666 }
18667
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018668 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
18669 {
18670 pNext = pNext_;
18671 return *this;
18672 }
18673
18674 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
18675 {
18676 objectCount = objectCount_;
18677 return *this;
18678 }
18679
18680 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
18681 {
18682 pObjectEntryTypes = pObjectEntryTypes_;
18683 return *this;
18684 }
18685
18686 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
18687 {
18688 pObjectEntryCounts = pObjectEntryCounts_;
18689 return *this;
18690 }
18691
18692 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
18693 {
18694 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
18695 return *this;
18696 }
18697
18698 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
18699 {
18700 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
18701 return *this;
18702 }
18703
18704 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
18705 {
18706 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
18707 return *this;
18708 }
18709
18710 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
18711 {
18712 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
18713 return *this;
18714 }
18715
18716 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
18717 {
18718 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
18719 return *this;
18720 }
18721
18722 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
18723 {
18724 maxPipelineLayouts = maxPipelineLayouts_;
18725 return *this;
18726 }
18727
18728 operator const VkObjectTableCreateInfoNVX&() const
18729 {
18730 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
18731 }
18732
18733 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
18734 {
18735 return ( sType == rhs.sType )
18736 && ( pNext == rhs.pNext )
18737 && ( objectCount == rhs.objectCount )
18738 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
18739 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
18740 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
18741 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
18742 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
18743 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
18744 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
18745 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
18746 }
18747
18748 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
18749 {
18750 return !operator==( rhs );
18751 }
18752
18753 private:
18754 StructureType sType;
18755
18756 public:
18757 const void* pNext;
18758 uint32_t objectCount;
18759 const ObjectEntryTypeNVX* pObjectEntryTypes;
18760 const uint32_t* pObjectEntryCounts;
18761 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
18762 uint32_t maxUniformBuffersPerDescriptor;
18763 uint32_t maxStorageBuffersPerDescriptor;
18764 uint32_t maxStorageImagesPerDescriptor;
18765 uint32_t maxSampledImagesPerDescriptor;
18766 uint32_t maxPipelineLayouts;
18767 };
18768 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
18769
18770 struct ObjectTableEntryNVX
18771 {
18772 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
18773 : type( type_ )
18774 , flags( flags_ )
18775 {
18776 }
18777
18778 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
18779 {
18780 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18781 }
18782
18783 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
18784 {
18785 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18786 return *this;
18787 }
18788
18789 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
18790 {
18791 type = type_;
18792 return *this;
18793 }
18794
18795 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18796 {
18797 flags = flags_;
18798 return *this;
18799 }
18800
18801 operator const VkObjectTableEntryNVX&() const
18802 {
18803 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
18804 }
18805
18806 bool operator==( ObjectTableEntryNVX const& rhs ) const
18807 {
18808 return ( type == rhs.type )
18809 && ( flags == rhs.flags );
18810 }
18811
18812 bool operator!=( ObjectTableEntryNVX const& rhs ) const
18813 {
18814 return !operator==( rhs );
18815 }
18816
18817 ObjectEntryTypeNVX type;
18818 ObjectEntryUsageFlagsNVX flags;
18819 };
18820 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
18821
18822 struct ObjectTablePipelineEntryNVX
18823 {
18824 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
18825 : type( type_ )
18826 , flags( flags_ )
18827 , pipeline( pipeline_ )
18828 {
18829 }
18830
18831 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
18832 {
18833 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18834 }
18835
18836 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
18837 {
18838 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18839 return *this;
18840 }
18841
18842 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
18843 {
18844 type = type_;
18845 return *this;
18846 }
18847
18848 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18849 {
18850 flags = flags_;
18851 return *this;
18852 }
18853
18854 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
18855 {
18856 pipeline = pipeline_;
18857 return *this;
18858 }
18859
18860 operator const VkObjectTablePipelineEntryNVX&() const
18861 {
18862 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
18863 }
18864
18865 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
18866 {
18867 return ( type == rhs.type )
18868 && ( flags == rhs.flags )
18869 && ( pipeline == rhs.pipeline );
18870 }
18871
18872 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
18873 {
18874 return !operator==( rhs );
18875 }
18876
18877 ObjectEntryTypeNVX type;
18878 ObjectEntryUsageFlagsNVX flags;
18879 Pipeline pipeline;
18880 };
18881 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
18882
18883 struct ObjectTableDescriptorSetEntryNVX
18884 {
18885 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
18886 : type( type_ )
18887 , flags( flags_ )
18888 , pipelineLayout( pipelineLayout_ )
18889 , descriptorSet( descriptorSet_ )
18890 {
18891 }
18892
18893 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
18894 {
18895 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18896 }
18897
18898 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
18899 {
18900 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18901 return *this;
18902 }
18903
18904 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
18905 {
18906 type = type_;
18907 return *this;
18908 }
18909
18910 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18911 {
18912 flags = flags_;
18913 return *this;
18914 }
18915
18916 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
18917 {
18918 pipelineLayout = pipelineLayout_;
18919 return *this;
18920 }
18921
18922 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
18923 {
18924 descriptorSet = descriptorSet_;
18925 return *this;
18926 }
18927
18928 operator const VkObjectTableDescriptorSetEntryNVX&() const
18929 {
18930 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
18931 }
18932
18933 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18934 {
18935 return ( type == rhs.type )
18936 && ( flags == rhs.flags )
18937 && ( pipelineLayout == rhs.pipelineLayout )
18938 && ( descriptorSet == rhs.descriptorSet );
18939 }
18940
18941 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18942 {
18943 return !operator==( rhs );
18944 }
18945
18946 ObjectEntryTypeNVX type;
18947 ObjectEntryUsageFlagsNVX flags;
18948 PipelineLayout pipelineLayout;
18949 DescriptorSet descriptorSet;
18950 };
18951 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
18952
18953 struct ObjectTableVertexBufferEntryNVX
18954 {
18955 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
18956 : type( type_ )
18957 , flags( flags_ )
18958 , buffer( buffer_ )
18959 {
18960 }
18961
18962 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
18963 {
18964 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18965 }
18966
18967 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
18968 {
18969 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18970 return *this;
18971 }
18972
18973 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
18974 {
18975 type = type_;
18976 return *this;
18977 }
18978
18979 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18980 {
18981 flags = flags_;
18982 return *this;
18983 }
18984
18985 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
18986 {
18987 buffer = buffer_;
18988 return *this;
18989 }
18990
18991 operator const VkObjectTableVertexBufferEntryNVX&() const
18992 {
18993 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
18994 }
18995
18996 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
18997 {
18998 return ( type == rhs.type )
18999 && ( flags == rhs.flags )
19000 && ( buffer == rhs.buffer );
19001 }
19002
19003 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19004 {
19005 return !operator==( rhs );
19006 }
19007
19008 ObjectEntryTypeNVX type;
19009 ObjectEntryUsageFlagsNVX flags;
19010 Buffer buffer;
19011 };
19012 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19013
19014 struct ObjectTableIndexBufferEntryNVX
19015 {
Mark Young39389872017-01-19 21:10:49 -070019016 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019017 : type( type_ )
19018 , flags( flags_ )
19019 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019020 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019021 {
19022 }
19023
19024 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19025 {
19026 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19027 }
19028
19029 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19030 {
19031 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19032 return *this;
19033 }
19034
19035 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19036 {
19037 type = type_;
19038 return *this;
19039 }
19040
19041 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19042 {
19043 flags = flags_;
19044 return *this;
19045 }
19046
19047 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19048 {
19049 buffer = buffer_;
19050 return *this;
19051 }
19052
Mark Young39389872017-01-19 21:10:49 -070019053 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19054 {
19055 indexType = indexType_;
19056 return *this;
19057 }
19058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019059 operator const VkObjectTableIndexBufferEntryNVX&() const
19060 {
19061 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19062 }
19063
19064 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19065 {
19066 return ( type == rhs.type )
19067 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019068 && ( buffer == rhs.buffer )
19069 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019070 }
19071
19072 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19073 {
19074 return !operator==( rhs );
19075 }
19076
19077 ObjectEntryTypeNVX type;
19078 ObjectEntryUsageFlagsNVX flags;
19079 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019080 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019081 };
19082 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19083
19084 struct ObjectTablePushConstantEntryNVX
19085 {
19086 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19087 : type( type_ )
19088 , flags( flags_ )
19089 , pipelineLayout( pipelineLayout_ )
19090 , stageFlags( stageFlags_ )
19091 {
19092 }
19093
19094 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19095 {
19096 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19097 }
19098
19099 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19100 {
19101 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19102 return *this;
19103 }
19104
19105 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19106 {
19107 type = type_;
19108 return *this;
19109 }
19110
19111 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19112 {
19113 flags = flags_;
19114 return *this;
19115 }
19116
19117 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19118 {
19119 pipelineLayout = pipelineLayout_;
19120 return *this;
19121 }
19122
19123 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19124 {
19125 stageFlags = stageFlags_;
19126 return *this;
19127 }
19128
19129 operator const VkObjectTablePushConstantEntryNVX&() const
19130 {
19131 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19132 }
19133
19134 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19135 {
19136 return ( type == rhs.type )
19137 && ( flags == rhs.flags )
19138 && ( pipelineLayout == rhs.pipelineLayout )
19139 && ( stageFlags == rhs.stageFlags );
19140 }
19141
19142 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19143 {
19144 return !operator==( rhs );
19145 }
19146
19147 ObjectEntryTypeNVX type;
19148 ObjectEntryUsageFlagsNVX flags;
19149 PipelineLayout pipelineLayout;
19150 ShaderStageFlags stageFlags;
19151 };
19152 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19153
Mark Young0f183a82017-02-28 09:58:04 -070019154 enum class DescriptorSetLayoutCreateFlagBits
19155 {
19156 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19157 };
19158
19159 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19160
19161 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19162 {
19163 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19164 }
19165
19166 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19167 {
19168 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19169 }
19170
19171 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19172 {
19173 enum
19174 {
19175 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19176 };
19177 };
19178
19179 struct DescriptorSetLayoutCreateInfo
19180 {
19181 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19182 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19183 , pNext( nullptr )
19184 , flags( flags_ )
19185 , bindingCount( bindingCount_ )
19186 , pBindings( pBindings_ )
19187 {
19188 }
19189
19190 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19191 {
19192 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19193 }
19194
19195 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19196 {
19197 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19198 return *this;
19199 }
19200
19201 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19202 {
19203 pNext = pNext_;
19204 return *this;
19205 }
19206
19207 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19208 {
19209 flags = flags_;
19210 return *this;
19211 }
19212
19213 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19214 {
19215 bindingCount = bindingCount_;
19216 return *this;
19217 }
19218
19219 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19220 {
19221 pBindings = pBindings_;
19222 return *this;
19223 }
19224
19225 operator const VkDescriptorSetLayoutCreateInfo&() const
19226 {
19227 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19228 }
19229
19230 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19231 {
19232 return ( sType == rhs.sType )
19233 && ( pNext == rhs.pNext )
19234 && ( flags == rhs.flags )
19235 && ( bindingCount == rhs.bindingCount )
19236 && ( pBindings == rhs.pBindings );
19237 }
19238
19239 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19240 {
19241 return !operator==( rhs );
19242 }
19243
19244 private:
19245 StructureType sType;
19246
19247 public:
19248 const void* pNext;
19249 DescriptorSetLayoutCreateFlags flags;
19250 uint32_t bindingCount;
19251 const DescriptorSetLayoutBinding* pBindings;
19252 };
19253 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19254
19255 enum class ExternalMemoryHandleTypeFlagBitsKHX
19256 {
19257 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19258 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19259 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19260 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19261 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19262 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19263 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19264 };
19265
19266 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19267
19268 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19269 {
19270 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19271 }
19272
19273 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19274 {
19275 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19276 }
19277
19278 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19279 {
19280 enum
19281 {
19282 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19283 };
19284 };
19285
19286 struct PhysicalDeviceExternalImageFormatInfoKHX
19287 {
19288 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19289 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19290 , pNext( nullptr )
19291 , handleType( handleType_ )
19292 {
19293 }
19294
19295 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19296 {
19297 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19298 }
19299
19300 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19301 {
19302 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19303 return *this;
19304 }
19305
19306 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19307 {
19308 pNext = pNext_;
19309 return *this;
19310 }
19311
19312 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19313 {
19314 handleType = handleType_;
19315 return *this;
19316 }
19317
19318 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19319 {
19320 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19321 }
19322
19323 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19324 {
19325 return ( sType == rhs.sType )
19326 && ( pNext == rhs.pNext )
19327 && ( handleType == rhs.handleType );
19328 }
19329
19330 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19331 {
19332 return !operator==( rhs );
19333 }
19334
19335 private:
19336 StructureType sType;
19337
19338 public:
19339 const void* pNext;
19340 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19341 };
19342 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19343
19344 struct PhysicalDeviceExternalBufferInfoKHX
19345 {
19346 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19347 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19348 , pNext( nullptr )
19349 , flags( flags_ )
19350 , usage( usage_ )
19351 , handleType( handleType_ )
19352 {
19353 }
19354
19355 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19356 {
19357 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19358 }
19359
19360 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19361 {
19362 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19363 return *this;
19364 }
19365
19366 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19367 {
19368 pNext = pNext_;
19369 return *this;
19370 }
19371
19372 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19373 {
19374 flags = flags_;
19375 return *this;
19376 }
19377
19378 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19379 {
19380 usage = usage_;
19381 return *this;
19382 }
19383
19384 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19385 {
19386 handleType = handleType_;
19387 return *this;
19388 }
19389
19390 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19391 {
19392 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19393 }
19394
19395 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19396 {
19397 return ( sType == rhs.sType )
19398 && ( pNext == rhs.pNext )
19399 && ( flags == rhs.flags )
19400 && ( usage == rhs.usage )
19401 && ( handleType == rhs.handleType );
19402 }
19403
19404 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19405 {
19406 return !operator==( rhs );
19407 }
19408
19409 private:
19410 StructureType sType;
19411
19412 public:
19413 const void* pNext;
19414 BufferCreateFlags flags;
19415 BufferUsageFlags usage;
19416 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19417 };
19418 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19419
19420 struct ExternalMemoryImageCreateInfoKHX
19421 {
19422 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19423 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19424 , pNext( nullptr )
19425 , handleTypes( handleTypes_ )
19426 {
19427 }
19428
19429 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19430 {
19431 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19432 }
19433
19434 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19435 {
19436 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19437 return *this;
19438 }
19439
19440 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19441 {
19442 pNext = pNext_;
19443 return *this;
19444 }
19445
19446 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19447 {
19448 handleTypes = handleTypes_;
19449 return *this;
19450 }
19451
19452 operator const VkExternalMemoryImageCreateInfoKHX&() const
19453 {
19454 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19455 }
19456
19457 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19458 {
19459 return ( sType == rhs.sType )
19460 && ( pNext == rhs.pNext )
19461 && ( handleTypes == rhs.handleTypes );
19462 }
19463
19464 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19465 {
19466 return !operator==( rhs );
19467 }
19468
19469 private:
19470 StructureType sType;
19471
19472 public:
19473 const void* pNext;
19474 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19475 };
19476 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19477
19478 struct ExternalMemoryBufferCreateInfoKHX
19479 {
19480 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19481 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19482 , pNext( nullptr )
19483 , handleTypes( handleTypes_ )
19484 {
19485 }
19486
19487 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19488 {
19489 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19490 }
19491
19492 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19493 {
19494 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19495 return *this;
19496 }
19497
19498 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19499 {
19500 pNext = pNext_;
19501 return *this;
19502 }
19503
19504 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19505 {
19506 handleTypes = handleTypes_;
19507 return *this;
19508 }
19509
19510 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19511 {
19512 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19513 }
19514
19515 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19516 {
19517 return ( sType == rhs.sType )
19518 && ( pNext == rhs.pNext )
19519 && ( handleTypes == rhs.handleTypes );
19520 }
19521
19522 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19523 {
19524 return !operator==( rhs );
19525 }
19526
19527 private:
19528 StructureType sType;
19529
19530 public:
19531 const void* pNext;
19532 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19533 };
19534 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19535
19536 struct ExportMemoryAllocateInfoKHX
19537 {
19538 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19539 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19540 , pNext( nullptr )
19541 , handleTypes( handleTypes_ )
19542 {
19543 }
19544
19545 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19546 {
19547 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19548 }
19549
19550 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19551 {
19552 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19553 return *this;
19554 }
19555
19556 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19557 {
19558 pNext = pNext_;
19559 return *this;
19560 }
19561
19562 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19563 {
19564 handleTypes = handleTypes_;
19565 return *this;
19566 }
19567
19568 operator const VkExportMemoryAllocateInfoKHX&() const
19569 {
19570 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19571 }
19572
19573 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19574 {
19575 return ( sType == rhs.sType )
19576 && ( pNext == rhs.pNext )
19577 && ( handleTypes == rhs.handleTypes );
19578 }
19579
19580 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19581 {
19582 return !operator==( rhs );
19583 }
19584
19585 private:
19586 StructureType sType;
19587
19588 public:
19589 const void* pNext;
19590 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19591 };
19592 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19593
19594#ifdef VK_USE_PLATFORM_WIN32_KHR
19595 struct ImportMemoryWin32HandleInfoKHX
19596 {
19597 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19598 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19599 , pNext( nullptr )
19600 , handleType( handleType_ )
19601 , handle( handle_ )
19602 {
19603 }
19604
19605 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19606 {
19607 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19608 }
19609
19610 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19611 {
19612 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19613 return *this;
19614 }
19615
19616 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19617 {
19618 pNext = pNext_;
19619 return *this;
19620 }
19621
19622 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19623 {
19624 handleType = handleType_;
19625 return *this;
19626 }
19627
19628 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19629 {
19630 handle = handle_;
19631 return *this;
19632 }
19633
19634 operator const VkImportMemoryWin32HandleInfoKHX&() const
19635 {
19636 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19637 }
19638
19639 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19640 {
19641 return ( sType == rhs.sType )
19642 && ( pNext == rhs.pNext )
19643 && ( handleType == rhs.handleType )
19644 && ( handle == rhs.handle );
19645 }
19646
19647 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19648 {
19649 return !operator==( rhs );
19650 }
19651
19652 private:
19653 StructureType sType;
19654
19655 public:
19656 const void* pNext;
19657 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19658 HANDLE handle;
19659 };
19660 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
19661#endif /*VK_USE_PLATFORM_WIN32_KHR*/
19662
19663 struct ImportMemoryFdInfoKHX
19664 {
19665 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
19666 : sType( StructureType::eImportMemoryFdInfoKHX )
19667 , pNext( nullptr )
19668 , handleType( handleType_ )
19669 , fd( fd_ )
19670 {
19671 }
19672
19673 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
19674 {
19675 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19676 }
19677
19678 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
19679 {
19680 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19681 return *this;
19682 }
19683
19684 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
19685 {
19686 pNext = pNext_;
19687 return *this;
19688 }
19689
19690 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19691 {
19692 handleType = handleType_;
19693 return *this;
19694 }
19695
19696 ImportMemoryFdInfoKHX& setFd( int fd_ )
19697 {
19698 fd = fd_;
19699 return *this;
19700 }
19701
19702 operator const VkImportMemoryFdInfoKHX&() const
19703 {
19704 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
19705 }
19706
19707 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
19708 {
19709 return ( sType == rhs.sType )
19710 && ( pNext == rhs.pNext )
19711 && ( handleType == rhs.handleType )
19712 && ( fd == rhs.fd );
19713 }
19714
19715 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
19716 {
19717 return !operator==( rhs );
19718 }
19719
19720 private:
19721 StructureType sType;
19722
19723 public:
19724 const void* pNext;
19725 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19726 int fd;
19727 };
19728 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
19729
19730 enum class ExternalMemoryFeatureFlagBitsKHX
19731 {
19732 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
19733 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
19734 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
19735 };
19736
19737 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
19738
19739 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
19740 {
19741 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
19742 }
19743
19744 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
19745 {
19746 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
19747 }
19748
19749 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
19750 {
19751 enum
19752 {
19753 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
19754 };
19755 };
19756
19757 struct ExternalMemoryPropertiesKHX
19758 {
19759 operator const VkExternalMemoryPropertiesKHX&() const
19760 {
19761 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
19762 }
19763
19764 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
19765 {
19766 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19767 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19768 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19769 }
19770
19771 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
19772 {
19773 return !operator==( rhs );
19774 }
19775
19776 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
19777 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
19778 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
19779 };
19780 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
19781
19782 struct ExternalImageFormatPropertiesKHX
19783 {
19784 operator const VkExternalImageFormatPropertiesKHX&() const
19785 {
19786 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
19787 }
19788
19789 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
19790 {
19791 return ( sType == rhs.sType )
19792 && ( pNext == rhs.pNext )
19793 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19794 }
19795
19796 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
19797 {
19798 return !operator==( rhs );
19799 }
19800
19801 private:
19802 StructureType sType;
19803
19804 public:
19805 void* pNext;
19806 ExternalMemoryPropertiesKHX externalMemoryProperties;
19807 };
19808 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
19809
19810 struct ExternalBufferPropertiesKHX
19811 {
19812 operator const VkExternalBufferPropertiesKHX&() const
19813 {
19814 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
19815 }
19816
19817 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
19818 {
19819 return ( sType == rhs.sType )
19820 && ( pNext == rhs.pNext )
19821 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19822 }
19823
19824 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
19825 {
19826 return !operator==( rhs );
19827 }
19828
19829 private:
19830 StructureType sType;
19831
19832 public:
19833 void* pNext;
19834 ExternalMemoryPropertiesKHX externalMemoryProperties;
19835 };
19836 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
19837
19838 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
19839 {
19840 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19841 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19842 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19843 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
19844 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
19845 };
19846
19847 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
19848
19849 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
19850 {
19851 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
19852 }
19853
19854 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
19855 {
19856 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
19857 }
19858
19859 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
19860 {
19861 enum
19862 {
19863 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
19864 };
19865 };
19866
19867 struct PhysicalDeviceExternalSemaphoreInfoKHX
19868 {
19869 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
19870 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
19871 , pNext( nullptr )
19872 , handleType( handleType_ )
19873 {
19874 }
19875
19876 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19877 {
19878 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19879 }
19880
19881 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19882 {
19883 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19884 return *this;
19885 }
19886
19887 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
19888 {
19889 pNext = pNext_;
19890 return *this;
19891 }
19892
19893 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
19894 {
19895 handleType = handleType_;
19896 return *this;
19897 }
19898
19899 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
19900 {
19901 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
19902 }
19903
19904 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19905 {
19906 return ( sType == rhs.sType )
19907 && ( pNext == rhs.pNext )
19908 && ( handleType == rhs.handleType );
19909 }
19910
19911 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19912 {
19913 return !operator==( rhs );
19914 }
19915
19916 private:
19917 StructureType sType;
19918
19919 public:
19920 const void* pNext;
19921 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
19922 };
19923 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
19924
19925 struct ExportSemaphoreCreateInfoKHX
19926 {
19927 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
19928 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
19929 , pNext( nullptr )
19930 , handleTypes( handleTypes_ )
19931 {
19932 }
19933
19934 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
19935 {
19936 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19937 }
19938
19939 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
19940 {
19941 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19942 return *this;
19943 }
19944
19945 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
19946 {
19947 pNext = pNext_;
19948 return *this;
19949 }
19950
19951 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
19952 {
19953 handleTypes = handleTypes_;
19954 return *this;
19955 }
19956
19957 operator const VkExportSemaphoreCreateInfoKHX&() const
19958 {
19959 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
19960 }
19961
19962 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
19963 {
19964 return ( sType == rhs.sType )
19965 && ( pNext == rhs.pNext )
19966 && ( handleTypes == rhs.handleTypes );
19967 }
19968
19969 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
19970 {
19971 return !operator==( rhs );
19972 }
19973
19974 private:
19975 StructureType sType;
19976
19977 public:
19978 const void* pNext;
19979 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
19980 };
19981 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
19982
19983#ifdef VK_USE_PLATFORM_WIN32_KHX
19984 struct ImportSemaphoreWin32HandleInfoKHX
19985 {
19986 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
19987 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
19988 , pNext( nullptr )
19989 , semaphore( semaphore_ )
19990 , handleType( handleType_ )
19991 , handle( handle_ )
19992 {
19993 }
19994
19995 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
19996 {
19997 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
19998 }
19999
20000 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20001 {
20002 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20003 return *this;
20004 }
20005
20006 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20007 {
20008 pNext = pNext_;
20009 return *this;
20010 }
20011
20012 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20013 {
20014 semaphore = semaphore_;
20015 return *this;
20016 }
20017
20018 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20019 {
20020 handleType = handleType_;
20021 return *this;
20022 }
20023
20024 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20025 {
20026 handle = handle_;
20027 return *this;
20028 }
20029
20030 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20031 {
20032 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20033 }
20034
20035 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20036 {
20037 return ( sType == rhs.sType )
20038 && ( pNext == rhs.pNext )
20039 && ( semaphore == rhs.semaphore )
20040 && ( handleType == rhs.handleType )
20041 && ( handle == rhs.handle );
20042 }
20043
20044 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20045 {
20046 return !operator==( rhs );
20047 }
20048
20049 private:
20050 StructureType sType;
20051
20052 public:
20053 const void* pNext;
20054 Semaphore semaphore;
20055 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20056 HANDLE handle;
20057 };
20058 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20059#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20060
20061 struct ImportSemaphoreFdInfoKHX
20062 {
20063 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20064 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20065 , pNext( nullptr )
20066 , semaphore( semaphore_ )
20067 , handleType( handleType_ )
20068 , fd( fd_ )
20069 {
20070 }
20071
20072 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20073 {
20074 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20075 }
20076
20077 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20078 {
20079 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20080 return *this;
20081 }
20082
20083 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20084 {
20085 pNext = pNext_;
20086 return *this;
20087 }
20088
20089 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20090 {
20091 semaphore = semaphore_;
20092 return *this;
20093 }
20094
20095 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20096 {
20097 handleType = handleType_;
20098 return *this;
20099 }
20100
20101 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20102 {
20103 fd = fd_;
20104 return *this;
20105 }
20106
20107 operator const VkImportSemaphoreFdInfoKHX&() const
20108 {
20109 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20110 }
20111
20112 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20113 {
20114 return ( sType == rhs.sType )
20115 && ( pNext == rhs.pNext )
20116 && ( semaphore == rhs.semaphore )
20117 && ( handleType == rhs.handleType )
20118 && ( fd == rhs.fd );
20119 }
20120
20121 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20122 {
20123 return !operator==( rhs );
20124 }
20125
20126 private:
20127 StructureType sType;
20128
20129 public:
20130 const void* pNext;
20131 Semaphore semaphore;
20132 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20133 int fd;
20134 };
20135 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20136
20137 enum class ExternalSemaphoreFeatureFlagBitsKHX
20138 {
20139 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20140 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20141 };
20142
20143 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20144
20145 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20146 {
20147 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20148 }
20149
20150 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20151 {
20152 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20153 }
20154
20155 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20156 {
20157 enum
20158 {
20159 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20160 };
20161 };
20162
20163 struct ExternalSemaphorePropertiesKHX
20164 {
20165 operator const VkExternalSemaphorePropertiesKHX&() const
20166 {
20167 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20168 }
20169
20170 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20171 {
20172 return ( sType == rhs.sType )
20173 && ( pNext == rhs.pNext )
20174 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20175 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20176 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20177 }
20178
20179 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20180 {
20181 return !operator==( rhs );
20182 }
20183
20184 private:
20185 StructureType sType;
20186
20187 public:
20188 void* pNext;
20189 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20190 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20191 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20192 };
20193 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20194
Mark Young39389872017-01-19 21:10:49 -070020195 enum class SurfaceCounterFlagBitsEXT
20196 {
20197 eVblankExt = VK_SURFACE_COUNTER_VBLANK_EXT
20198 };
20199
20200 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20201
20202 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20203 {
20204 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20205 }
20206
20207 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20208 {
20209 return ~( SurfaceCounterFlagsEXT( bits ) );
20210 }
20211
20212 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20213 {
20214 enum
20215 {
20216 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblankExt)
20217 };
20218 };
20219
20220 struct SurfaceCapabilities2EXT
20221 {
20222 operator const VkSurfaceCapabilities2EXT&() const
20223 {
20224 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20225 }
20226
20227 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20228 {
20229 return ( sType == rhs.sType )
20230 && ( pNext == rhs.pNext )
20231 && ( minImageCount == rhs.minImageCount )
20232 && ( maxImageCount == rhs.maxImageCount )
20233 && ( currentExtent == rhs.currentExtent )
20234 && ( minImageExtent == rhs.minImageExtent )
20235 && ( maxImageExtent == rhs.maxImageExtent )
20236 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20237 && ( supportedTransforms == rhs.supportedTransforms )
20238 && ( currentTransform == rhs.currentTransform )
20239 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20240 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20241 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20242 }
20243
20244 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20245 {
20246 return !operator==( rhs );
20247 }
20248
20249 private:
20250 StructureType sType;
20251
20252 public:
20253 void* pNext;
20254 uint32_t minImageCount;
20255 uint32_t maxImageCount;
20256 Extent2D currentExtent;
20257 Extent2D minImageExtent;
20258 Extent2D maxImageExtent;
20259 uint32_t maxImageArrayLayers;
20260 SurfaceTransformFlagsKHR supportedTransforms;
20261 SurfaceTransformFlagBitsKHR currentTransform;
20262 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20263 ImageUsageFlags supportedUsageFlags;
20264 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20265 };
20266 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20267
20268 struct SwapchainCounterCreateInfoEXT
20269 {
20270 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20271 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20272 , pNext( nullptr )
20273 , surfaceCounters( surfaceCounters_ )
20274 {
20275 }
20276
20277 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20278 {
20279 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20280 }
20281
20282 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20283 {
20284 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20285 return *this;
20286 }
20287
Mark Young39389872017-01-19 21:10:49 -070020288 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20289 {
20290 pNext = pNext_;
20291 return *this;
20292 }
20293
20294 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20295 {
20296 surfaceCounters = surfaceCounters_;
20297 return *this;
20298 }
20299
20300 operator const VkSwapchainCounterCreateInfoEXT&() const
20301 {
20302 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20303 }
20304
20305 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20306 {
20307 return ( sType == rhs.sType )
20308 && ( pNext == rhs.pNext )
20309 && ( surfaceCounters == rhs.surfaceCounters );
20310 }
20311
20312 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20313 {
20314 return !operator==( rhs );
20315 }
20316
20317 private:
20318 StructureType sType;
20319
20320 public:
20321 const void* pNext;
20322 SurfaceCounterFlagsEXT surfaceCounters;
20323 };
20324 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20325
20326 enum class DisplayPowerStateEXT
20327 {
20328 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20329 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20330 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20331 };
20332
20333 struct DisplayPowerInfoEXT
20334 {
20335 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20336 : sType( StructureType::eDisplayPowerInfoEXT )
20337 , pNext( nullptr )
20338 , powerState( powerState_ )
20339 {
20340 }
20341
20342 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20343 {
20344 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20345 }
20346
20347 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20348 {
20349 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20350 return *this;
20351 }
20352
Mark Young39389872017-01-19 21:10:49 -070020353 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20354 {
20355 pNext = pNext_;
20356 return *this;
20357 }
20358
20359 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20360 {
20361 powerState = powerState_;
20362 return *this;
20363 }
20364
20365 operator const VkDisplayPowerInfoEXT&() const
20366 {
20367 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20368 }
20369
20370 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20371 {
20372 return ( sType == rhs.sType )
20373 && ( pNext == rhs.pNext )
20374 && ( powerState == rhs.powerState );
20375 }
20376
20377 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20378 {
20379 return !operator==( rhs );
20380 }
20381
20382 private:
20383 StructureType sType;
20384
20385 public:
20386 const void* pNext;
20387 DisplayPowerStateEXT powerState;
20388 };
20389 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20390
20391 enum class DeviceEventTypeEXT
20392 {
20393 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20394 };
20395
20396 struct DeviceEventInfoEXT
20397 {
20398 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20399 : sType( StructureType::eDeviceEventInfoEXT )
20400 , pNext( nullptr )
20401 , deviceEvent( deviceEvent_ )
20402 {
20403 }
20404
20405 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20406 {
20407 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20408 }
20409
20410 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20411 {
20412 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20413 return *this;
20414 }
20415
Mark Young39389872017-01-19 21:10:49 -070020416 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20417 {
20418 pNext = pNext_;
20419 return *this;
20420 }
20421
20422 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20423 {
20424 deviceEvent = deviceEvent_;
20425 return *this;
20426 }
20427
20428 operator const VkDeviceEventInfoEXT&() const
20429 {
20430 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20431 }
20432
20433 bool operator==( DeviceEventInfoEXT const& rhs ) const
20434 {
20435 return ( sType == rhs.sType )
20436 && ( pNext == rhs.pNext )
20437 && ( deviceEvent == rhs.deviceEvent );
20438 }
20439
20440 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20441 {
20442 return !operator==( rhs );
20443 }
20444
20445 private:
20446 StructureType sType;
20447
20448 public:
20449 const void* pNext;
20450 DeviceEventTypeEXT deviceEvent;
20451 };
20452 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20453
20454 enum class DisplayEventTypeEXT
20455 {
20456 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20457 };
20458
20459 struct DisplayEventInfoEXT
20460 {
20461 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20462 : sType( StructureType::eDisplayEventInfoEXT )
20463 , pNext( nullptr )
20464 , displayEvent( displayEvent_ )
20465 {
20466 }
20467
20468 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20469 {
20470 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20471 }
20472
20473 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20474 {
20475 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20476 return *this;
20477 }
20478
Mark Young39389872017-01-19 21:10:49 -070020479 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20480 {
20481 pNext = pNext_;
20482 return *this;
20483 }
20484
20485 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20486 {
20487 displayEvent = displayEvent_;
20488 return *this;
20489 }
20490
20491 operator const VkDisplayEventInfoEXT&() const
20492 {
20493 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20494 }
20495
20496 bool operator==( DisplayEventInfoEXT const& rhs ) const
20497 {
20498 return ( sType == rhs.sType )
20499 && ( pNext == rhs.pNext )
20500 && ( displayEvent == rhs.displayEvent );
20501 }
20502
20503 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20504 {
20505 return !operator==( rhs );
20506 }
20507
20508 private:
20509 StructureType sType;
20510
20511 public:
20512 const void* pNext;
20513 DisplayEventTypeEXT displayEvent;
20514 };
20515 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20516
Mark Young0f183a82017-02-28 09:58:04 -070020517 enum class PeerMemoryFeatureFlagBitsKHX
20518 {
20519 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20520 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20521 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20522 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20523 };
20524
20525 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20526
20527 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20528 {
20529 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20530 }
20531
20532 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20533 {
20534 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20535 }
20536
20537 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20538 {
20539 enum
20540 {
20541 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20542 };
20543 };
20544
20545 enum class MemoryAllocateFlagBitsKHX
20546 {
20547 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20548 };
20549
20550 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20551
20552 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20553 {
20554 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20555 }
20556
20557 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20558 {
20559 return ~( MemoryAllocateFlagsKHX( bits ) );
20560 }
20561
20562 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20563 {
20564 enum
20565 {
20566 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20567 };
20568 };
20569
20570 struct MemoryAllocateFlagsInfoKHX
20571 {
20572 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20573 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20574 , pNext( nullptr )
20575 , flags( flags_ )
20576 , deviceMask( deviceMask_ )
20577 {
20578 }
20579
20580 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20581 {
20582 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20583 }
20584
20585 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20586 {
20587 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20588 return *this;
20589 }
20590
20591 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20592 {
20593 pNext = pNext_;
20594 return *this;
20595 }
20596
20597 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20598 {
20599 flags = flags_;
20600 return *this;
20601 }
20602
20603 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20604 {
20605 deviceMask = deviceMask_;
20606 return *this;
20607 }
20608
20609 operator const VkMemoryAllocateFlagsInfoKHX&() const
20610 {
20611 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20612 }
20613
20614 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20615 {
20616 return ( sType == rhs.sType )
20617 && ( pNext == rhs.pNext )
20618 && ( flags == rhs.flags )
20619 && ( deviceMask == rhs.deviceMask );
20620 }
20621
20622 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20623 {
20624 return !operator==( rhs );
20625 }
20626
20627 private:
20628 StructureType sType;
20629
20630 public:
20631 const void* pNext;
20632 MemoryAllocateFlagsKHX flags;
20633 uint32_t deviceMask;
20634 };
20635 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20636
20637 enum class DeviceGroupPresentModeFlagBitsKHX
20638 {
20639 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20640 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20641 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20642 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20643 };
20644
20645 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20646
20647 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20648 {
20649 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20650 }
20651
20652 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20653 {
20654 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
20655 }
20656
20657 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
20658 {
20659 enum
20660 {
20661 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
20662 };
20663 };
20664
20665 struct DeviceGroupPresentCapabilitiesKHX
20666 {
20667 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
20668 {
20669 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
20670 }
20671
20672 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20673 {
20674 return ( sType == rhs.sType )
20675 && ( pNext == rhs.pNext )
20676 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
20677 && ( modes == rhs.modes );
20678 }
20679
20680 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20681 {
20682 return !operator==( rhs );
20683 }
20684
20685 private:
20686 StructureType sType;
20687
20688 public:
20689 const void* pNext;
20690 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
20691 DeviceGroupPresentModeFlagsKHX modes;
20692 };
20693 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
20694
20695 struct DeviceGroupPresentInfoKHX
20696 {
20697 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
20698 : sType( StructureType::eDeviceGroupPresentInfoKHX )
20699 , pNext( nullptr )
20700 , swapchainCount( swapchainCount_ )
20701 , pDeviceMasks( pDeviceMasks_ )
20702 , mode( mode_ )
20703 {
20704 }
20705
20706 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
20707 {
20708 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20709 }
20710
20711 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
20712 {
20713 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20714 return *this;
20715 }
20716
20717 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
20718 {
20719 pNext = pNext_;
20720 return *this;
20721 }
20722
20723 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
20724 {
20725 swapchainCount = swapchainCount_;
20726 return *this;
20727 }
20728
20729 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
20730 {
20731 pDeviceMasks = pDeviceMasks_;
20732 return *this;
20733 }
20734
20735 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
20736 {
20737 mode = mode_;
20738 return *this;
20739 }
20740
20741 operator const VkDeviceGroupPresentInfoKHX&() const
20742 {
20743 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
20744 }
20745
20746 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
20747 {
20748 return ( sType == rhs.sType )
20749 && ( pNext == rhs.pNext )
20750 && ( swapchainCount == rhs.swapchainCount )
20751 && ( pDeviceMasks == rhs.pDeviceMasks )
20752 && ( mode == rhs.mode );
20753 }
20754
20755 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
20756 {
20757 return !operator==( rhs );
20758 }
20759
20760 private:
20761 StructureType sType;
20762
20763 public:
20764 const void* pNext;
20765 uint32_t swapchainCount;
20766 const uint32_t* pDeviceMasks;
20767 DeviceGroupPresentModeFlagBitsKHX mode;
20768 };
20769 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
20770
20771 struct DeviceGroupSwapchainCreateInfoKHX
20772 {
20773 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
20774 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
20775 , pNext( nullptr )
20776 , modes( modes_ )
20777 {
20778 }
20779
20780 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20781 {
20782 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20783 }
20784
20785 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20786 {
20787 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20788 return *this;
20789 }
20790
20791 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
20792 {
20793 pNext = pNext_;
20794 return *this;
20795 }
20796
20797 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
20798 {
20799 modes = modes_;
20800 return *this;
20801 }
20802
20803 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
20804 {
20805 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
20806 }
20807
20808 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20809 {
20810 return ( sType == rhs.sType )
20811 && ( pNext == rhs.pNext )
20812 && ( modes == rhs.modes );
20813 }
20814
20815 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20816 {
20817 return !operator==( rhs );
20818 }
20819
20820 private:
20821 StructureType sType;
20822
20823 public:
20824 const void* pNext;
20825 DeviceGroupPresentModeFlagsKHX modes;
20826 };
20827 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
20828
20829 enum class SwapchainCreateFlagBitsKHR
20830 {
20831 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
20832 };
20833
20834 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
20835
20836 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
20837 {
20838 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
20839 }
20840
20841 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
20842 {
20843 return ~( SwapchainCreateFlagsKHR( bits ) );
20844 }
20845
20846 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
20847 {
20848 enum
20849 {
20850 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
20851 };
20852 };
20853
20854 struct SwapchainCreateInfoKHR
20855 {
20856 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() )
20857 : sType( StructureType::eSwapchainCreateInfoKHR )
20858 , pNext( nullptr )
20859 , flags( flags_ )
20860 , surface( surface_ )
20861 , minImageCount( minImageCount_ )
20862 , imageFormat( imageFormat_ )
20863 , imageColorSpace( imageColorSpace_ )
20864 , imageExtent( imageExtent_ )
20865 , imageArrayLayers( imageArrayLayers_ )
20866 , imageUsage( imageUsage_ )
20867 , imageSharingMode( imageSharingMode_ )
20868 , queueFamilyIndexCount( queueFamilyIndexCount_ )
20869 , pQueueFamilyIndices( pQueueFamilyIndices_ )
20870 , preTransform( preTransform_ )
20871 , compositeAlpha( compositeAlpha_ )
20872 , presentMode( presentMode_ )
20873 , clipped( clipped_ )
20874 , oldSwapchain( oldSwapchain_ )
20875 {
20876 }
20877
20878 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
20879 {
20880 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20881 }
20882
20883 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
20884 {
20885 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20886 return *this;
20887 }
20888
20889 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
20890 {
20891 pNext = pNext_;
20892 return *this;
20893 }
20894
20895 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
20896 {
20897 flags = flags_;
20898 return *this;
20899 }
20900
20901 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
20902 {
20903 surface = surface_;
20904 return *this;
20905 }
20906
20907 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
20908 {
20909 minImageCount = minImageCount_;
20910 return *this;
20911 }
20912
20913 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
20914 {
20915 imageFormat = imageFormat_;
20916 return *this;
20917 }
20918
20919 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
20920 {
20921 imageColorSpace = imageColorSpace_;
20922 return *this;
20923 }
20924
20925 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20926 {
20927 imageExtent = imageExtent_;
20928 return *this;
20929 }
20930
20931 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
20932 {
20933 imageArrayLayers = imageArrayLayers_;
20934 return *this;
20935 }
20936
20937 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
20938 {
20939 imageUsage = imageUsage_;
20940 return *this;
20941 }
20942
20943 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
20944 {
20945 imageSharingMode = imageSharingMode_;
20946 return *this;
20947 }
20948
20949 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
20950 {
20951 queueFamilyIndexCount = queueFamilyIndexCount_;
20952 return *this;
20953 }
20954
20955 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
20956 {
20957 pQueueFamilyIndices = pQueueFamilyIndices_;
20958 return *this;
20959 }
20960
20961 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
20962 {
20963 preTransform = preTransform_;
20964 return *this;
20965 }
20966
20967 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
20968 {
20969 compositeAlpha = compositeAlpha_;
20970 return *this;
20971 }
20972
20973 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
20974 {
20975 presentMode = presentMode_;
20976 return *this;
20977 }
20978
20979 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
20980 {
20981 clipped = clipped_;
20982 return *this;
20983 }
20984
20985 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
20986 {
20987 oldSwapchain = oldSwapchain_;
20988 return *this;
20989 }
20990
20991 operator const VkSwapchainCreateInfoKHR&() const
20992 {
20993 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
20994 }
20995
20996 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
20997 {
20998 return ( sType == rhs.sType )
20999 && ( pNext == rhs.pNext )
21000 && ( flags == rhs.flags )
21001 && ( surface == rhs.surface )
21002 && ( minImageCount == rhs.minImageCount )
21003 && ( imageFormat == rhs.imageFormat )
21004 && ( imageColorSpace == rhs.imageColorSpace )
21005 && ( imageExtent == rhs.imageExtent )
21006 && ( imageArrayLayers == rhs.imageArrayLayers )
21007 && ( imageUsage == rhs.imageUsage )
21008 && ( imageSharingMode == rhs.imageSharingMode )
21009 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21010 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21011 && ( preTransform == rhs.preTransform )
21012 && ( compositeAlpha == rhs.compositeAlpha )
21013 && ( presentMode == rhs.presentMode )
21014 && ( clipped == rhs.clipped )
21015 && ( oldSwapchain == rhs.oldSwapchain );
21016 }
21017
21018 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21019 {
21020 return !operator==( rhs );
21021 }
21022
21023 private:
21024 StructureType sType;
21025
21026 public:
21027 const void* pNext;
21028 SwapchainCreateFlagsKHR flags;
21029 SurfaceKHR surface;
21030 uint32_t minImageCount;
21031 Format imageFormat;
21032 ColorSpaceKHR imageColorSpace;
21033 Extent2D imageExtent;
21034 uint32_t imageArrayLayers;
21035 ImageUsageFlags imageUsage;
21036 SharingMode imageSharingMode;
21037 uint32_t queueFamilyIndexCount;
21038 const uint32_t* pQueueFamilyIndices;
21039 SurfaceTransformFlagBitsKHR preTransform;
21040 CompositeAlphaFlagBitsKHR compositeAlpha;
21041 PresentModeKHR presentMode;
21042 Bool32 clipped;
21043 SwapchainKHR oldSwapchain;
21044 };
21045 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21046
21047 enum class ViewportCoordinateSwizzleNV
21048 {
21049 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21050 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21051 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21052 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21053 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21054 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21055 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21056 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21057 };
21058
21059 struct ViewportSwizzleNV
21060 {
21061 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21062 : x( x_ )
21063 , y( y_ )
21064 , z( z_ )
21065 , w( w_ )
21066 {
21067 }
21068
21069 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21070 {
21071 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21072 }
21073
21074 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21075 {
21076 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21077 return *this;
21078 }
21079
21080 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21081 {
21082 x = x_;
21083 return *this;
21084 }
21085
21086 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21087 {
21088 y = y_;
21089 return *this;
21090 }
21091
21092 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21093 {
21094 z = z_;
21095 return *this;
21096 }
21097
21098 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21099 {
21100 w = w_;
21101 return *this;
21102 }
21103
21104 operator const VkViewportSwizzleNV&() const
21105 {
21106 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21107 }
21108
21109 bool operator==( ViewportSwizzleNV const& rhs ) const
21110 {
21111 return ( x == rhs.x )
21112 && ( y == rhs.y )
21113 && ( z == rhs.z )
21114 && ( w == rhs.w );
21115 }
21116
21117 bool operator!=( ViewportSwizzleNV const& rhs ) const
21118 {
21119 return !operator==( rhs );
21120 }
21121
21122 ViewportCoordinateSwizzleNV x;
21123 ViewportCoordinateSwizzleNV y;
21124 ViewportCoordinateSwizzleNV z;
21125 ViewportCoordinateSwizzleNV w;
21126 };
21127 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21128
21129 struct PipelineViewportSwizzleStateCreateInfoNV
21130 {
21131 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21132 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21133 , pNext( nullptr )
21134 , flags( flags_ )
21135 , viewportCount( viewportCount_ )
21136 , pViewportSwizzles( pViewportSwizzles_ )
21137 {
21138 }
21139
21140 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21141 {
21142 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21143 }
21144
21145 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21146 {
21147 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21148 return *this;
21149 }
21150
21151 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21152 {
21153 pNext = pNext_;
21154 return *this;
21155 }
21156
21157 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21158 {
21159 flags = flags_;
21160 return *this;
21161 }
21162
21163 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21164 {
21165 viewportCount = viewportCount_;
21166 return *this;
21167 }
21168
21169 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21170 {
21171 pViewportSwizzles = pViewportSwizzles_;
21172 return *this;
21173 }
21174
21175 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21176 {
21177 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21178 }
21179
21180 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21181 {
21182 return ( sType == rhs.sType )
21183 && ( pNext == rhs.pNext )
21184 && ( flags == rhs.flags )
21185 && ( viewportCount == rhs.viewportCount )
21186 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21187 }
21188
21189 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21190 {
21191 return !operator==( rhs );
21192 }
21193
21194 private:
21195 StructureType sType;
21196
21197 public:
21198 const void* pNext;
21199 PipelineViewportSwizzleStateCreateFlagsNV flags;
21200 uint32_t viewportCount;
21201 const ViewportSwizzleNV* pViewportSwizzles;
21202 };
21203 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21204
21205 enum class DiscardRectangleModeEXT
21206 {
21207 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21208 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21209 };
21210
21211 struct PipelineDiscardRectangleStateCreateInfoEXT
21212 {
21213 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21214 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21215 , pNext( nullptr )
21216 , flags( flags_ )
21217 , discardRectangleMode( discardRectangleMode_ )
21218 , discardRectangleCount( discardRectangleCount_ )
21219 , pDiscardRectangles( pDiscardRectangles_ )
21220 {
21221 }
21222
21223 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21224 {
21225 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21226 }
21227
21228 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21229 {
21230 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21231 return *this;
21232 }
21233
21234 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21235 {
21236 pNext = pNext_;
21237 return *this;
21238 }
21239
21240 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21241 {
21242 flags = flags_;
21243 return *this;
21244 }
21245
21246 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21247 {
21248 discardRectangleMode = discardRectangleMode_;
21249 return *this;
21250 }
21251
21252 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21253 {
21254 discardRectangleCount = discardRectangleCount_;
21255 return *this;
21256 }
21257
21258 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21259 {
21260 pDiscardRectangles = pDiscardRectangles_;
21261 return *this;
21262 }
21263
21264 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21265 {
21266 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21267 }
21268
21269 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21270 {
21271 return ( sType == rhs.sType )
21272 && ( pNext == rhs.pNext )
21273 && ( flags == rhs.flags )
21274 && ( discardRectangleMode == rhs.discardRectangleMode )
21275 && ( discardRectangleCount == rhs.discardRectangleCount )
21276 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21277 }
21278
21279 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21280 {
21281 return !operator==( rhs );
21282 }
21283
21284 private:
21285 StructureType sType;
21286
21287 public:
21288 const void* pNext;
21289 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21290 DiscardRectangleModeEXT discardRectangleMode;
21291 uint32_t discardRectangleCount;
21292 const Rect2D* pDiscardRectangles;
21293 };
21294 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21295
21296 enum class SubpassDescriptionFlagBits
21297 {
21298 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21299 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21300 };
21301
21302 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21303
21304 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21305 {
21306 return SubpassDescriptionFlags( bit0 ) | bit1;
21307 }
21308
21309 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21310 {
21311 return ~( SubpassDescriptionFlags( bits ) );
21312 }
21313
21314 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21315 {
21316 enum
21317 {
21318 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21319 };
21320 };
21321
21322 struct SubpassDescription
21323 {
21324 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 )
21325 : flags( flags_ )
21326 , pipelineBindPoint( pipelineBindPoint_ )
21327 , inputAttachmentCount( inputAttachmentCount_ )
21328 , pInputAttachments( pInputAttachments_ )
21329 , colorAttachmentCount( colorAttachmentCount_ )
21330 , pColorAttachments( pColorAttachments_ )
21331 , pResolveAttachments( pResolveAttachments_ )
21332 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21333 , preserveAttachmentCount( preserveAttachmentCount_ )
21334 , pPreserveAttachments( pPreserveAttachments_ )
21335 {
21336 }
21337
21338 SubpassDescription( VkSubpassDescription const & rhs )
21339 {
21340 memcpy( this, &rhs, sizeof(SubpassDescription) );
21341 }
21342
21343 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21344 {
21345 memcpy( this, &rhs, sizeof(SubpassDescription) );
21346 return *this;
21347 }
21348
21349 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21350 {
21351 flags = flags_;
21352 return *this;
21353 }
21354
21355 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21356 {
21357 pipelineBindPoint = pipelineBindPoint_;
21358 return *this;
21359 }
21360
21361 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21362 {
21363 inputAttachmentCount = inputAttachmentCount_;
21364 return *this;
21365 }
21366
21367 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21368 {
21369 pInputAttachments = pInputAttachments_;
21370 return *this;
21371 }
21372
21373 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21374 {
21375 colorAttachmentCount = colorAttachmentCount_;
21376 return *this;
21377 }
21378
21379 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21380 {
21381 pColorAttachments = pColorAttachments_;
21382 return *this;
21383 }
21384
21385 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21386 {
21387 pResolveAttachments = pResolveAttachments_;
21388 return *this;
21389 }
21390
21391 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21392 {
21393 pDepthStencilAttachment = pDepthStencilAttachment_;
21394 return *this;
21395 }
21396
21397 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21398 {
21399 preserveAttachmentCount = preserveAttachmentCount_;
21400 return *this;
21401 }
21402
21403 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21404 {
21405 pPreserveAttachments = pPreserveAttachments_;
21406 return *this;
21407 }
21408
21409 operator const VkSubpassDescription&() const
21410 {
21411 return *reinterpret_cast<const VkSubpassDescription*>(this);
21412 }
21413
21414 bool operator==( SubpassDescription const& rhs ) const
21415 {
21416 return ( flags == rhs.flags )
21417 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21418 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21419 && ( pInputAttachments == rhs.pInputAttachments )
21420 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21421 && ( pColorAttachments == rhs.pColorAttachments )
21422 && ( pResolveAttachments == rhs.pResolveAttachments )
21423 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21424 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21425 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21426 }
21427
21428 bool operator!=( SubpassDescription const& rhs ) const
21429 {
21430 return !operator==( rhs );
21431 }
21432
21433 SubpassDescriptionFlags flags;
21434 PipelineBindPoint pipelineBindPoint;
21435 uint32_t inputAttachmentCount;
21436 const AttachmentReference* pInputAttachments;
21437 uint32_t colorAttachmentCount;
21438 const AttachmentReference* pColorAttachments;
21439 const AttachmentReference* pResolveAttachments;
21440 const AttachmentReference* pDepthStencilAttachment;
21441 uint32_t preserveAttachmentCount;
21442 const uint32_t* pPreserveAttachments;
21443 };
21444 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21445
21446 struct RenderPassCreateInfo
21447 {
21448 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 )
21449 : sType( StructureType::eRenderPassCreateInfo )
21450 , pNext( nullptr )
21451 , flags( flags_ )
21452 , attachmentCount( attachmentCount_ )
21453 , pAttachments( pAttachments_ )
21454 , subpassCount( subpassCount_ )
21455 , pSubpasses( pSubpasses_ )
21456 , dependencyCount( dependencyCount_ )
21457 , pDependencies( pDependencies_ )
21458 {
21459 }
21460
21461 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21462 {
21463 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21464 }
21465
21466 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21467 {
21468 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21469 return *this;
21470 }
21471
21472 RenderPassCreateInfo& setPNext( const void* pNext_ )
21473 {
21474 pNext = pNext_;
21475 return *this;
21476 }
21477
21478 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21479 {
21480 flags = flags_;
21481 return *this;
21482 }
21483
21484 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21485 {
21486 attachmentCount = attachmentCount_;
21487 return *this;
21488 }
21489
21490 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21491 {
21492 pAttachments = pAttachments_;
21493 return *this;
21494 }
21495
21496 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21497 {
21498 subpassCount = subpassCount_;
21499 return *this;
21500 }
21501
21502 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21503 {
21504 pSubpasses = pSubpasses_;
21505 return *this;
21506 }
21507
21508 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21509 {
21510 dependencyCount = dependencyCount_;
21511 return *this;
21512 }
21513
21514 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21515 {
21516 pDependencies = pDependencies_;
21517 return *this;
21518 }
21519
21520 operator const VkRenderPassCreateInfo&() const
21521 {
21522 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21523 }
21524
21525 bool operator==( RenderPassCreateInfo const& rhs ) const
21526 {
21527 return ( sType == rhs.sType )
21528 && ( pNext == rhs.pNext )
21529 && ( flags == rhs.flags )
21530 && ( attachmentCount == rhs.attachmentCount )
21531 && ( pAttachments == rhs.pAttachments )
21532 && ( subpassCount == rhs.subpassCount )
21533 && ( pSubpasses == rhs.pSubpasses )
21534 && ( dependencyCount == rhs.dependencyCount )
21535 && ( pDependencies == rhs.pDependencies );
21536 }
21537
21538 bool operator!=( RenderPassCreateInfo const& rhs ) const
21539 {
21540 return !operator==( rhs );
21541 }
21542
21543 private:
21544 StructureType sType;
21545
21546 public:
21547 const void* pNext;
21548 RenderPassCreateFlags flags;
21549 uint32_t attachmentCount;
21550 const AttachmentDescription* pAttachments;
21551 uint32_t subpassCount;
21552 const SubpassDescription* pSubpasses;
21553 uint32_t dependencyCount;
21554 const SubpassDependency* pDependencies;
21555 };
21556 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21557
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021558 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21560 template <typename Allocator = std::allocator<LayerProperties>>
21561 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021564 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21565 {
21566 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21567 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021569 template <typename Allocator>
21570 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021571 {
21572 std::vector<LayerProperties,Allocator> properties;
21573 uint32_t propertyCount;
21574 Result result;
21575 do
21576 {
21577 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21578 if ( ( result == Result::eSuccess ) && propertyCount )
21579 {
21580 properties.resize( propertyCount );
21581 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21582 }
21583 } while ( result == Result::eIncomplete );
21584 assert( propertyCount <= properties.size() );
21585 properties.resize( propertyCount );
21586 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21587 }
21588#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21589
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021590
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021591 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21592#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21593 template <typename Allocator = std::allocator<ExtensionProperties>>
21594 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21596
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021597 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21598 {
21599 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21600 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021602 template <typename Allocator>
21603 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021604 {
21605 std::vector<ExtensionProperties,Allocator> properties;
21606 uint32_t propertyCount;
21607 Result result;
21608 do
21609 {
21610 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21611 if ( ( result == Result::eSuccess ) && propertyCount )
21612 {
21613 properties.resize( propertyCount );
21614 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21615 }
21616 } while ( result == Result::eIncomplete );
21617 assert( propertyCount <= properties.size() );
21618 properties.resize( propertyCount );
21619 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21620 }
21621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21622
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021624 // forward declarations
21625 struct CmdProcessCommandsInfoNVX;
21626
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021627 class CommandBuffer
21628 {
21629 public:
21630 CommandBuffer()
21631 : m_commandBuffer(VK_NULL_HANDLE)
21632 {}
21633
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021634 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021635 : m_commandBuffer(VK_NULL_HANDLE)
21636 {}
21637
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021638 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021639 : m_commandBuffer(commandBuffer)
21640 {}
21641
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021642#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021643 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
21644 {
21645 m_commandBuffer = commandBuffer;
21646 return *this;
21647 }
21648#endif
21649
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021650 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021651 {
21652 m_commandBuffer = VK_NULL_HANDLE;
21653 return *this;
21654 }
21655
Lenny Komowebf33162016-08-26 14:10:08 -060021656 bool operator==(CommandBuffer const &rhs) const
21657 {
21658 return m_commandBuffer == rhs.m_commandBuffer;
21659 }
21660
21661 bool operator!=(CommandBuffer const &rhs) const
21662 {
21663 return m_commandBuffer != rhs.m_commandBuffer;
21664 }
21665
21666 bool operator<(CommandBuffer const &rhs) const
21667 {
21668 return m_commandBuffer < rhs.m_commandBuffer;
21669 }
21670
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021671 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021672#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021673 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021674#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21675
21676#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021677 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021678#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021679 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21681
21682#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021683 Result reset( CommandBufferResetFlags flags ) const;
21684#else
21685 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21687
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021688 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021689
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021690 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021692 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21694
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021695 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021697 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21699
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021700 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021701
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021702 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
21703
21704 void setBlendConstants( const float blendConstants[4] ) const;
21705
21706 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
21707
21708 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
21709
21710 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
21711
21712 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
21713
21714 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 -060021715#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021716 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 -060021717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21718
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021719 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021720
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021721 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021723 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21725
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021726 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021727
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021728 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
21729
21730 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21731
21732 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21733
Mark Young0f183a82017-02-28 09:58:04 -070021734 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021735
21736 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
21737
21738 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021740 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21742
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021743 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021744#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021745 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021746#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21747
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021748 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 -060021749#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021750 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021751#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21752
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021753 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021755 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021756#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21757
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021758 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021759#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021760 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21762
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021763 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21765 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021766 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) 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 fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021770
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021771 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021772#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021773 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21775
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021776 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021778 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21780
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021781 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021783 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021784#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21785
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021786 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021787#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021788 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21790
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021791 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021792
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021793 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
21794
21795 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 -060021796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021797 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 -060021798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21799
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021800 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 -060021801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021802 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 -060021803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21804
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021805 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021806
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021807 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021808
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021809 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021810
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021811 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021812
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021813 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 -060021814
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021815 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021816#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21817 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021818 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) 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 beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021823 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21825
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021826 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021827
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021828 void endRenderPass() const;
21829
21830 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021832 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021835 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021837 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21839
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021840 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021841
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021842 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021844 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21846
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021847 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021848
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021849 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
21850
21851 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021853 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) 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 reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021858 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21860
Mark Young0f183a82017-02-28 09:58:04 -070021861 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
21862#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21863 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
21864#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21865
21866 void setDeviceMaskKHX( uint32_t deviceMask ) const;
21867
21868 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
21869
21870 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
21871
21872 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
21873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21874 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
21875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21876
21877 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
21878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21879 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
21880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21881
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021882 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021883 {
21884 return m_commandBuffer;
21885 }
21886
21887 explicit operator bool() const
21888 {
21889 return m_commandBuffer != VK_NULL_HANDLE;
21890 }
21891
21892 bool operator!() const
21893 {
21894 return m_commandBuffer == VK_NULL_HANDLE;
21895 }
21896
21897 private:
21898 VkCommandBuffer m_commandBuffer;
21899 };
21900 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
21901
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021902 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
21903 {
21904 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
21905 }
21906#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21907 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
21908 {
21909 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
21910 return createResultValue( result, "vk::CommandBuffer::begin" );
21911 }
21912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21913
21914#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21915 VULKAN_HPP_INLINE Result CommandBuffer::end() const
21916 {
21917 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21918 }
21919#else
21920 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
21921 {
21922 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21923 return createResultValue( result, "vk::CommandBuffer::end" );
21924 }
21925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21926
21927#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21928 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
21929 {
21930 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21931 }
21932#else
21933 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
21934 {
21935 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21936 return createResultValue( result, "vk::CommandBuffer::reset" );
21937 }
21938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21939
21940 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
21941 {
21942 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
21943 }
21944
21945 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
21946 {
21947 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
21948 }
21949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21950 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
21951 {
21952 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
21953 }
21954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21955
21956 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
21957 {
21958 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
21959 }
21960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21961 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
21962 {
21963 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
21964 }
21965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21966
21967 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
21968 {
21969 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
21970 }
21971
21972 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
21973 {
21974 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
21975 }
21976
21977 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
21978 {
21979 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
21980 }
21981
21982 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
21983 {
21984 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
21985 }
21986
21987 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
21988 {
21989 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
21990 }
21991
21992 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
21993 {
21994 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
21995 }
21996
21997 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
21998 {
21999 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22000 }
22001
22002 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
22003 {
22004 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22005 }
22006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22007 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22008 {
22009 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22010 }
22011#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22012
22013 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22014 {
22015 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22016 }
22017
22018 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22019 {
22020 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22021 }
22022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22023 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22024 {
22025#ifdef VULKAN_HPP_NO_EXCEPTIONS
22026 assert( buffers.size() == offsets.size() );
22027#else
22028 if ( buffers.size() != offsets.size() )
22029 {
22030 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22031 }
22032#endif // VULKAN_HPP_NO_EXCEPTIONS
22033 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22034 }
22035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22036
22037 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22038 {
22039 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22040 }
22041
22042 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22043 {
22044 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22045 }
22046
22047 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22048 {
22049 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22050 }
22051
22052 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22053 {
22054 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22055 }
22056
Mark Young0f183a82017-02-28 09:58:04 -070022057 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022058 {
Mark Young0f183a82017-02-28 09:58:04 -070022059 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022060 }
22061
22062 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22063 {
22064 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22065 }
22066
22067 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22068 {
22069 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22070 }
22071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22072 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22073 {
22074 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22075 }
22076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22077
22078 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22079 {
22080 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 ) );
22081 }
22082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22083 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22084 {
22085 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() ) );
22086 }
22087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22088
22089 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22090 {
22091 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 ) );
22092 }
22093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22094 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22095 {
22096 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 ) );
22097 }
22098#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22099
22100 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22101 {
22102 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22103 }
22104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22105 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22106 {
22107 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22108 }
22109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22110
22111 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22112 {
22113 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22114 }
22115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22116 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22117 {
22118 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22119 }
22120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22121
22122 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22123 {
22124 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22125 }
22126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22127 template <typename T>
22128 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22129 {
22130 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22131 }
22132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22133
22134 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22135 {
22136 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22137 }
22138
22139 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22140 {
22141 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22142 }
22143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22144 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22145 {
22146 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22147 }
22148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22149
22150 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22151 {
22152 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22153 }
22154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22155 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22156 {
22157 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22158 }
22159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22160
22161 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22162 {
22163 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22164 }
22165#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22166 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22167 {
22168 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22169 }
22170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22171
22172 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22173 {
22174 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 ) );
22175 }
22176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22177 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22178 {
22179 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() ) );
22180 }
22181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22182
22183 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22184 {
22185 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22186 }
22187
22188 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22189 {
22190 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22191 }
22192
22193 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
22194 {
22195 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 ) );
22196 }
22197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22198 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
22199 {
22200 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() ) );
22201 }
22202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22203
22204 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
22205 {
22206 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 ) );
22207 }
22208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22209 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
22210 {
22211 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() ) );
22212 }
22213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22214
22215 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22216 {
22217 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22218 }
22219
22220 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22221 {
22222 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22223 }
22224
22225 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22226 {
22227 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22228 }
22229
22230 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22231 {
22232 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22233 }
22234
22235 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22236 {
22237 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22238 }
22239
22240 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22241 {
22242 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22243 }
22244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22245 template <typename T>
22246 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22247 {
22248 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22249 }
22250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22251
22252 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22253 {
22254 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22255 }
22256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22257 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22258 {
22259 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22260 }
22261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22262
22263 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22264 {
22265 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22266 }
22267
22268 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22269 {
22270 vkCmdEndRenderPass( m_commandBuffer );
22271 }
22272
22273 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22274 {
22275 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22276 }
22277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22278 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22279 {
22280 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22281 }
22282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22283
22284 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22285 {
22286 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22287 }
22288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22289 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22290 {
22291 DebugMarkerMarkerInfoEXT markerInfo;
22292 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22293 return markerInfo;
22294 }
22295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22296
22297 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22298 {
22299 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22300 }
22301
22302 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22303 {
22304 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22305 }
22306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22307 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22308 {
22309 DebugMarkerMarkerInfoEXT markerInfo;
22310 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22311 return markerInfo;
22312 }
22313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22314
22315 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22316 {
22317 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22318 }
22319
22320 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22321 {
22322 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22323 }
22324
22325 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22326 {
22327 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22328 }
22329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22330 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22331 {
22332 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22333 }
22334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22335
22336 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22337 {
22338 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22339 }
22340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22341 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22342 {
22343 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22344 }
22345#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022346
22347 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22348 {
22349 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22350 }
22351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22352 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22353 {
22354 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22355 }
22356#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22357
22358 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22359 {
22360 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22361 }
22362
22363 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
22364 {
22365 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22366 }
22367
22368 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22369 {
22370 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22371 }
22372
22373 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22374 {
22375 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22376 }
22377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22378 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22379 {
22380 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22381 }
22382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22383
22384 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22385 {
22386 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22387 }
22388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22389 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22390 {
22391 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22392 }
22393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022394
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022395 struct SubmitInfo
22396 {
22397 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 )
22398 : sType( StructureType::eSubmitInfo )
22399 , pNext( nullptr )
22400 , waitSemaphoreCount( waitSemaphoreCount_ )
22401 , pWaitSemaphores( pWaitSemaphores_ )
22402 , pWaitDstStageMask( pWaitDstStageMask_ )
22403 , commandBufferCount( commandBufferCount_ )
22404 , pCommandBuffers( pCommandBuffers_ )
22405 , signalSemaphoreCount( signalSemaphoreCount_ )
22406 , pSignalSemaphores( pSignalSemaphores_ )
22407 {
22408 }
22409
22410 SubmitInfo( VkSubmitInfo const & rhs )
22411 {
22412 memcpy( this, &rhs, sizeof(SubmitInfo) );
22413 }
22414
22415 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22416 {
22417 memcpy( this, &rhs, sizeof(SubmitInfo) );
22418 return *this;
22419 }
22420
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022421 SubmitInfo& setPNext( const void* pNext_ )
22422 {
22423 pNext = pNext_;
22424 return *this;
22425 }
22426
22427 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22428 {
22429 waitSemaphoreCount = waitSemaphoreCount_;
22430 return *this;
22431 }
22432
22433 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22434 {
22435 pWaitSemaphores = pWaitSemaphores_;
22436 return *this;
22437 }
22438
22439 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22440 {
22441 pWaitDstStageMask = pWaitDstStageMask_;
22442 return *this;
22443 }
22444
22445 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22446 {
22447 commandBufferCount = commandBufferCount_;
22448 return *this;
22449 }
22450
22451 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22452 {
22453 pCommandBuffers = pCommandBuffers_;
22454 return *this;
22455 }
22456
22457 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22458 {
22459 signalSemaphoreCount = signalSemaphoreCount_;
22460 return *this;
22461 }
22462
22463 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22464 {
22465 pSignalSemaphores = pSignalSemaphores_;
22466 return *this;
22467 }
22468
22469 operator const VkSubmitInfo&() const
22470 {
22471 return *reinterpret_cast<const VkSubmitInfo*>(this);
22472 }
22473
22474 bool operator==( SubmitInfo const& rhs ) const
22475 {
22476 return ( sType == rhs.sType )
22477 && ( pNext == rhs.pNext )
22478 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22479 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22480 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22481 && ( commandBufferCount == rhs.commandBufferCount )
22482 && ( pCommandBuffers == rhs.pCommandBuffers )
22483 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22484 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22485 }
22486
22487 bool operator!=( SubmitInfo const& rhs ) const
22488 {
22489 return !operator==( rhs );
22490 }
22491
22492 private:
22493 StructureType sType;
22494
22495 public:
22496 const void* pNext;
22497 uint32_t waitSemaphoreCount;
22498 const Semaphore* pWaitSemaphores;
22499 const PipelineStageFlags* pWaitDstStageMask;
22500 uint32_t commandBufferCount;
22501 const CommandBuffer* pCommandBuffers;
22502 uint32_t signalSemaphoreCount;
22503 const Semaphore* pSignalSemaphores;
22504 };
22505 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22506
22507 class Queue
22508 {
22509 public:
22510 Queue()
22511 : m_queue(VK_NULL_HANDLE)
22512 {}
22513
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022514 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022515 : m_queue(VK_NULL_HANDLE)
22516 {}
22517
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022518 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022519 : m_queue(queue)
22520 {}
22521
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022522#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022523 Queue& operator=(VkQueue queue)
22524 {
22525 m_queue = queue;
22526 return *this;
22527 }
22528#endif
22529
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022530 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022531 {
22532 m_queue = VK_NULL_HANDLE;
22533 return *this;
22534 }
22535
Lenny Komowebf33162016-08-26 14:10:08 -060022536 bool operator==(Queue const &rhs) const
22537 {
22538 return m_queue == rhs.m_queue;
22539 }
22540
22541 bool operator!=(Queue const &rhs) const
22542 {
22543 return m_queue != rhs.m_queue;
22544 }
22545
22546 bool operator<(Queue const &rhs) const
22547 {
22548 return m_queue < rhs.m_queue;
22549 }
22550
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022551 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022553 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22555
22556#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022557 Result waitIdle() const;
22558#else
22559 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022560#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22561
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022562 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022564 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22566
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022567 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022569 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22571
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022572 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022573 {
22574 return m_queue;
22575 }
22576
22577 explicit operator bool() const
22578 {
22579 return m_queue != VK_NULL_HANDLE;
22580 }
22581
22582 bool operator!() const
22583 {
22584 return m_queue == VK_NULL_HANDLE;
22585 }
22586
22587 private:
22588 VkQueue m_queue;
22589 };
22590 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22591
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022592 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22593 {
22594 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22595 }
22596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22597 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22598 {
22599 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22600 return createResultValue( result, "vk::Queue::submit" );
22601 }
22602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22603
22604#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22605 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22606 {
22607 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22608 }
22609#else
22610 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22611 {
22612 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22613 return createResultValue( result, "vk::Queue::waitIdle" );
22614 }
22615#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22616
22617 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22618 {
22619 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22620 }
22621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22622 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22623 {
22624 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22625 return createResultValue( result, "vk::Queue::bindSparse" );
22626 }
22627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22628
22629 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22630 {
22631 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22632 }
22633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22634 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22635 {
22636 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22637 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22638 }
22639#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022640
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022641#ifndef VULKAN_HPP_NO_SMART_HANDLE
22642 class BufferDeleter;
22643 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22644 class BufferViewDeleter;
22645 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22646 class CommandBufferDeleter;
22647 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22648 class CommandPoolDeleter;
22649 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22650 class DescriptorPoolDeleter;
22651 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22652 class DescriptorSetDeleter;
22653 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22654 class DescriptorSetLayoutDeleter;
22655 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022656 class DescriptorUpdateTemplateKHRDeleter;
22657 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022658 class DeviceMemoryDeleter;
22659 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
22660 class EventDeleter;
22661 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
22662 class FenceDeleter;
22663 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
22664 class FramebufferDeleter;
22665 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
22666 class ImageDeleter;
22667 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
22668 class ImageViewDeleter;
22669 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
22670 class IndirectCommandsLayoutNVXDeleter;
22671 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
22672 class ObjectTableNVXDeleter;
22673 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
22674 class PipelineDeleter;
22675 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
22676 class PipelineCacheDeleter;
22677 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
22678 class PipelineLayoutDeleter;
22679 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
22680 class QueryPoolDeleter;
22681 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
22682 class RenderPassDeleter;
22683 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
22684 class SamplerDeleter;
22685 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
22686 class SemaphoreDeleter;
22687 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
22688 class ShaderModuleDeleter;
22689 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
22690 class SwapchainKHRDeleter;
22691 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
22692#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22693
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022694 class Device
22695 {
22696 public:
22697 Device()
22698 : m_device(VK_NULL_HANDLE)
22699 {}
22700
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022701 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022702 : m_device(VK_NULL_HANDLE)
22703 {}
22704
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022705 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022706 : m_device(device)
22707 {}
22708
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022709#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022710 Device& operator=(VkDevice device)
22711 {
22712 m_device = device;
22713 return *this;
22714 }
22715#endif
22716
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022717 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022718 {
22719 m_device = VK_NULL_HANDLE;
22720 return *this;
22721 }
22722
Lenny Komowebf33162016-08-26 14:10:08 -060022723 bool operator==(Device const &rhs) const
22724 {
22725 return m_device == rhs.m_device;
22726 }
22727
22728 bool operator!=(Device const &rhs) const
22729 {
22730 return m_device != rhs.m_device;
22731 }
22732
22733 bool operator<(Device const &rhs) const
22734 {
22735 return m_device < rhs.m_device;
22736 }
22737
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022738 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022740 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22742
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022743 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022744#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022745 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022746#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22747
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022748 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022749#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022750 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022751#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22752
22753#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022754 Result waitIdle() const;
22755#else
22756 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22758
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022759 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022761 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22762#ifndef VULKAN_HPP_NO_SMART_HANDLE
22763 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22764#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22766
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022767 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022769 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22771
22772 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
22773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22774 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
22775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22776
22777 void unmapMemory( DeviceMemory memory ) const;
22778
22779 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22781 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22783
22784 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22786 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22788
22789 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
22790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22791 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
22792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22793
22794 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
22795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22796 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22798
22799#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022800 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22801#else
22802 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022804
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022805 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022807 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22809
22810#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022811 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
22812#else
22813 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22815
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022816 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022818 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
22819 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022820#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22821
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022822 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022824 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22825#ifndef VULKAN_HPP_NO_SMART_HANDLE
22826 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22827#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22829
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022830 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022832 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022835 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022837 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22839
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022840 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022841
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022842 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022844 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
22845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22846
22847 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
22848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22849 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22850#ifndef VULKAN_HPP_NO_SMART_HANDLE
22851 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22852#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22854
22855 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
22856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22857 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22859
22860 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
22861#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22862 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22863#ifndef VULKAN_HPP_NO_SMART_HANDLE
22864 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22865#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22867
22868 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
22869#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22870 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022871#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22872
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022873 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022874
22875#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022876 Result setEvent( Event event ) const;
22877#else
22878 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22880
22881#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022882 Result resetEvent( Event event ) const;
22883#else
22884 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22886
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022887 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022889 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22890#ifndef VULKAN_HPP_NO_SMART_HANDLE
22891 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22892#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22894
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022895 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022897 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22899
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022900 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 -060022901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22902 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022903 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 -060022904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22905
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022906 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022908 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22909#ifndef VULKAN_HPP_NO_SMART_HANDLE
22910 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22911#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22913
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022914 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022916 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022919 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022921 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22922#ifndef VULKAN_HPP_NO_SMART_HANDLE
22923 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22924#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22926
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022927 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022928#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022929 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22931
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022932 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022933#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022934 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22935#ifndef VULKAN_HPP_NO_SMART_HANDLE
22936 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22937#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22939
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022940 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022941#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022942 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22944
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022945 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022947 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22949
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022950 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022952 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22953#ifndef VULKAN_HPP_NO_SMART_HANDLE
22954 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22955#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022956#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022958 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022960 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22962
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022963 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022965 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22966#ifndef VULKAN_HPP_NO_SMART_HANDLE
22967 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22968#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22970
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022971 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022973 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22975
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022976 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022978 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22979#ifndef VULKAN_HPP_NO_SMART_HANDLE
22980 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22981#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022984 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022986 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022989 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022991 template <typename Allocator = std::allocator<uint8_t>>
22992 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22994
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022995 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022997 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22999
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023000 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023002 template <typename Allocator = std::allocator<Pipeline>>
23003 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23004 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23005#ifndef VULKAN_HPP_NO_SMART_HANDLE
23006 template <typename Allocator = std::allocator<Pipeline>>
23007 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23008 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23009#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23011
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023012 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023014 template <typename Allocator = std::allocator<Pipeline>>
23015 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23016 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23017#ifndef VULKAN_HPP_NO_SMART_HANDLE
23018 template <typename Allocator = std::allocator<Pipeline>>
23019 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23020 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23021#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023022#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23023
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023024 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023026 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23028
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023029 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023031 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23032#ifndef VULKAN_HPP_NO_SMART_HANDLE
23033 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23034#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23036
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023037 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023039 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23041
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023042 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023044 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23045#ifndef VULKAN_HPP_NO_SMART_HANDLE
23046 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23049
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023050 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023052 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23054
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023055 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023057 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23058#ifndef VULKAN_HPP_NO_SMART_HANDLE
23059 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23060#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23062
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023063 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023065 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23067
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023068 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023070 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23071#ifndef VULKAN_HPP_NO_SMART_HANDLE
23072 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23073#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23075
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023076 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023078 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023079#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23080
23081#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023082 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23083#else
23084 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23086
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023087 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023088#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023089 template <typename Allocator = std::allocator<DescriptorSet>>
23090 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23091#ifndef VULKAN_HPP_NO_SMART_HANDLE
23092 template <typename Allocator = std::allocator<DescriptorSet>>
23093 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23094#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023097 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023099 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023102 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023104 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023107 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023109 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23110#ifndef VULKAN_HPP_NO_SMART_HANDLE
23111 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23112#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23114
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023115 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023117 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23119
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023120 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023122 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23123#ifndef VULKAN_HPP_NO_SMART_HANDLE
23124 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23125#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23127
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023128 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023130 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23132
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023133 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023135 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23137
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023138 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023140 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23141#ifndef VULKAN_HPP_NO_SMART_HANDLE
23142 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23143#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023144#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23145
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023146 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023148 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23150
23151#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023152 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23153#else
23154 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23156
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023157 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023159 template <typename Allocator = std::allocator<CommandBuffer>>
23160 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23161#ifndef VULKAN_HPP_NO_SMART_HANDLE
23162 template <typename Allocator = std::allocator<CommandBuffer>>
23163 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23164#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23166
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023167 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023169 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23171
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023172 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023174 template <typename Allocator = std::allocator<SwapchainKHR>>
23175 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23176 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23177#ifndef VULKAN_HPP_NO_SMART_HANDLE
23178 template <typename Allocator = std::allocator<SwapchainKHR>>
23179 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23180 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23181#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23183
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023184 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023186 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23187#ifndef VULKAN_HPP_NO_SMART_HANDLE
23188 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23189#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23191
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023192 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023194 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23196
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023197 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023198#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023199 template <typename Allocator = std::allocator<Image>>
23200 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023203 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023205 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023208 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023210 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() 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 debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023215 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23217
Lenny Komow6501c122016-08-31 15:03:49 -060023218#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023219 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23221 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023223#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23224
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023225 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023227 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23228#ifndef VULKAN_HPP_NO_SMART_HANDLE
23229 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23230#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23232
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023233 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023235 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23237
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023238 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023240 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23241#ifndef VULKAN_HPP_NO_SMART_HANDLE
23242 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23243#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23245
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023246 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023248 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23250
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023251 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023252#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023253 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23255
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023256 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023257#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023258 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023259#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23260
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023261#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023262 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023263#else
23264 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023266
Mark Young0f183a82017-02-28 09:58:04 -070023267#ifdef VK_USE_PLATFORM_WIN32_KHR
23268 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23270 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23271#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23272#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23273
23274#ifdef VK_USE_PLATFORM_WIN32_KHR
23275 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23277 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23279#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23280
23281 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23283 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23285
23286 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23288 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23290
23291#ifdef VK_USE_PLATFORM_WIN32_KHX
23292 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23294 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23296#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23297
23298#ifdef VK_USE_PLATFORM_WIN32_KHX
23299 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23300#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23301 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23303#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23304
23305 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23307 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23309
23310 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23312 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23314
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023315 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023317 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23319
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023320 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023322 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23324
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023325 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023327 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23329
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023330 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023332 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23334
Mark Young0f183a82017-02-28 09:58:04 -070023335 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23336#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23337 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23339
23340 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23342 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23344
23345 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23346#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23347 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23349
23350 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23352 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23354
23355 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23357 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23359
23360 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23362 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23364
23365 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23367 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23368#ifndef VULKAN_HPP_NO_SMART_HANDLE
23369 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23370#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23372
23373 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23374#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23375 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23377
23378 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23379
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023380 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23382 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23384
23385 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23387 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23389
23390 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23392 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23393 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23395
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023396 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023397 {
23398 return m_device;
23399 }
23400
23401 explicit operator bool() const
23402 {
23403 return m_device != VK_NULL_HANDLE;
23404 }
23405
23406 bool operator!() const
23407 {
23408 return m_device == VK_NULL_HANDLE;
23409 }
23410
23411 private:
23412 VkDevice m_device;
23413 };
23414 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23415
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023416#ifndef VULKAN_HPP_NO_SMART_HANDLE
23417 class BufferDeleter
23418 {
23419 public:
23420 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23421 : m_device( device )
23422 , m_allocator( allocator )
23423 {}
23424
23425 void operator()( Buffer buffer )
23426 {
23427 m_device.destroyBuffer( buffer, m_allocator );
23428 }
23429
23430 private:
23431 Device m_device;
23432 Optional<const AllocationCallbacks> m_allocator;
23433 };
23434
23435 class BufferViewDeleter
23436 {
23437 public:
23438 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23439 : m_device( device )
23440 , m_allocator( allocator )
23441 {}
23442
23443 void operator()( BufferView bufferView )
23444 {
23445 m_device.destroyBufferView( bufferView, m_allocator );
23446 }
23447
23448 private:
23449 Device m_device;
23450 Optional<const AllocationCallbacks> m_allocator;
23451 };
23452
23453 class CommandBufferDeleter
23454 {
23455 public:
23456 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23457 : m_device( device )
23458 , m_commandPool( commandPool )
23459 {}
23460
23461 void operator()( CommandBuffer commandBuffer )
23462 {
23463 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23464 }
23465
23466 private:
23467 Device m_device;
23468 CommandPool m_commandPool;
23469 };
23470
23471 class CommandPoolDeleter
23472 {
23473 public:
23474 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23475 : m_device( device )
23476 , m_allocator( allocator )
23477 {}
23478
23479 void operator()( CommandPool commandPool )
23480 {
23481 m_device.destroyCommandPool( commandPool, m_allocator );
23482 }
23483
23484 private:
23485 Device m_device;
23486 Optional<const AllocationCallbacks> m_allocator;
23487 };
23488
23489 class DescriptorPoolDeleter
23490 {
23491 public:
23492 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23493 : m_device( device )
23494 , m_allocator( allocator )
23495 {}
23496
23497 void operator()( DescriptorPool descriptorPool )
23498 {
23499 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23500 }
23501
23502 private:
23503 Device m_device;
23504 Optional<const AllocationCallbacks> m_allocator;
23505 };
23506
23507 class DescriptorSetDeleter
23508 {
23509 public:
23510 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23511 : m_device( device )
23512 , m_descriptorPool( descriptorPool )
23513 {}
23514
23515 void operator()( DescriptorSet descriptorSet )
23516 {
23517 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23518 }
23519
23520 private:
23521 Device m_device;
23522 DescriptorPool m_descriptorPool;
23523 };
23524
23525 class DescriptorSetLayoutDeleter
23526 {
23527 public:
23528 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23529 : m_device( device )
23530 , m_allocator( allocator )
23531 {}
23532
23533 void operator()( DescriptorSetLayout descriptorSetLayout )
23534 {
23535 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23536 }
23537
23538 private:
23539 Device m_device;
23540 Optional<const AllocationCallbacks> m_allocator;
23541 };
23542
Mark Young0f183a82017-02-28 09:58:04 -070023543 class DescriptorUpdateTemplateKHRDeleter
23544 {
23545 public:
23546 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23547 : m_device( device )
23548 , m_allocator( allocator )
23549 {}
23550
23551 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23552 {
23553 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23554 }
23555
23556 private:
23557 Device m_device;
23558 Optional<const AllocationCallbacks> m_allocator;
23559 };
23560
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023561 class DeviceMemoryDeleter
23562 {
23563 public:
23564 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23565 : m_device( device )
23566 , m_allocator( allocator )
23567 {}
23568
23569 void operator()( DeviceMemory deviceMemory )
23570 {
23571 m_device.freeMemory( deviceMemory, m_allocator );
23572 }
23573
23574 private:
23575 Device m_device;
23576 Optional<const AllocationCallbacks> m_allocator;
23577 };
23578
23579 class EventDeleter
23580 {
23581 public:
23582 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23583 : m_device( device )
23584 , m_allocator( allocator )
23585 {}
23586
23587 void operator()( Event event )
23588 {
23589 m_device.destroyEvent( event, m_allocator );
23590 }
23591
23592 private:
23593 Device m_device;
23594 Optional<const AllocationCallbacks> m_allocator;
23595 };
23596
23597 class FenceDeleter
23598 {
23599 public:
23600 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23601 : m_device( device )
23602 , m_allocator( allocator )
23603 {}
23604
23605 void operator()( Fence fence )
23606 {
23607 m_device.destroyFence( fence, m_allocator );
23608 }
23609
23610 private:
23611 Device m_device;
23612 Optional<const AllocationCallbacks> m_allocator;
23613 };
23614
23615 class FramebufferDeleter
23616 {
23617 public:
23618 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23619 : m_device( device )
23620 , m_allocator( allocator )
23621 {}
23622
23623 void operator()( Framebuffer framebuffer )
23624 {
23625 m_device.destroyFramebuffer( framebuffer, m_allocator );
23626 }
23627
23628 private:
23629 Device m_device;
23630 Optional<const AllocationCallbacks> m_allocator;
23631 };
23632
23633 class ImageDeleter
23634 {
23635 public:
23636 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23637 : m_device( device )
23638 , m_allocator( allocator )
23639 {}
23640
23641 void operator()( Image image )
23642 {
23643 m_device.destroyImage( image, m_allocator );
23644 }
23645
23646 private:
23647 Device m_device;
23648 Optional<const AllocationCallbacks> m_allocator;
23649 };
23650
23651 class ImageViewDeleter
23652 {
23653 public:
23654 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23655 : m_device( device )
23656 , m_allocator( allocator )
23657 {}
23658
23659 void operator()( ImageView imageView )
23660 {
23661 m_device.destroyImageView( imageView, m_allocator );
23662 }
23663
23664 private:
23665 Device m_device;
23666 Optional<const AllocationCallbacks> m_allocator;
23667 };
23668
23669 class IndirectCommandsLayoutNVXDeleter
23670 {
23671 public:
23672 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23673 : m_device( device )
23674 , m_allocator( allocator )
23675 {}
23676
23677 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
23678 {
23679 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
23680 }
23681
23682 private:
23683 Device m_device;
23684 Optional<const AllocationCallbacks> m_allocator;
23685 };
23686
23687 class ObjectTableNVXDeleter
23688 {
23689 public:
23690 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23691 : m_device( device )
23692 , m_allocator( allocator )
23693 {}
23694
23695 void operator()( ObjectTableNVX objectTableNVX )
23696 {
23697 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
23698 }
23699
23700 private:
23701 Device m_device;
23702 Optional<const AllocationCallbacks> m_allocator;
23703 };
23704
23705 class PipelineDeleter
23706 {
23707 public:
23708 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23709 : m_device( device )
23710 , m_allocator( allocator )
23711 {}
23712
23713 void operator()( Pipeline pipeline )
23714 {
23715 m_device.destroyPipeline( pipeline, m_allocator );
23716 }
23717
23718 private:
23719 Device m_device;
23720 Optional<const AllocationCallbacks> m_allocator;
23721 };
23722
23723 class PipelineCacheDeleter
23724 {
23725 public:
23726 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23727 : m_device( device )
23728 , m_allocator( allocator )
23729 {}
23730
23731 void operator()( PipelineCache pipelineCache )
23732 {
23733 m_device.destroyPipelineCache( pipelineCache, m_allocator );
23734 }
23735
23736 private:
23737 Device m_device;
23738 Optional<const AllocationCallbacks> m_allocator;
23739 };
23740
23741 class PipelineLayoutDeleter
23742 {
23743 public:
23744 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23745 : m_device( device )
23746 , m_allocator( allocator )
23747 {}
23748
23749 void operator()( PipelineLayout pipelineLayout )
23750 {
23751 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
23752 }
23753
23754 private:
23755 Device m_device;
23756 Optional<const AllocationCallbacks> m_allocator;
23757 };
23758
23759 class QueryPoolDeleter
23760 {
23761 public:
23762 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23763 : m_device( device )
23764 , m_allocator( allocator )
23765 {}
23766
23767 void operator()( QueryPool queryPool )
23768 {
23769 m_device.destroyQueryPool( queryPool, m_allocator );
23770 }
23771
23772 private:
23773 Device m_device;
23774 Optional<const AllocationCallbacks> m_allocator;
23775 };
23776
23777 class RenderPassDeleter
23778 {
23779 public:
23780 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23781 : m_device( device )
23782 , m_allocator( allocator )
23783 {}
23784
23785 void operator()( RenderPass renderPass )
23786 {
23787 m_device.destroyRenderPass( renderPass, m_allocator );
23788 }
23789
23790 private:
23791 Device m_device;
23792 Optional<const AllocationCallbacks> m_allocator;
23793 };
23794
23795 class SamplerDeleter
23796 {
23797 public:
23798 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23799 : m_device( device )
23800 , m_allocator( allocator )
23801 {}
23802
23803 void operator()( Sampler sampler )
23804 {
23805 m_device.destroySampler( sampler, m_allocator );
23806 }
23807
23808 private:
23809 Device m_device;
23810 Optional<const AllocationCallbacks> m_allocator;
23811 };
23812
23813 class SemaphoreDeleter
23814 {
23815 public:
23816 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23817 : m_device( device )
23818 , m_allocator( allocator )
23819 {}
23820
23821 void operator()( Semaphore semaphore )
23822 {
23823 m_device.destroySemaphore( semaphore, m_allocator );
23824 }
23825
23826 private:
23827 Device m_device;
23828 Optional<const AllocationCallbacks> m_allocator;
23829 };
23830
23831 class ShaderModuleDeleter
23832 {
23833 public:
23834 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23835 : m_device( device )
23836 , m_allocator( allocator )
23837 {}
23838
23839 void operator()( ShaderModule shaderModule )
23840 {
23841 m_device.destroyShaderModule( shaderModule, m_allocator );
23842 }
23843
23844 private:
23845 Device m_device;
23846 Optional<const AllocationCallbacks> m_allocator;
23847 };
23848
23849 class SwapchainKHRDeleter
23850 {
23851 public:
23852 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23853 : m_device( device )
23854 , m_allocator( allocator )
23855 {}
23856
23857 void operator()( SwapchainKHR swapchainKHR )
23858 {
23859 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
23860 }
23861
23862 private:
23863 Device m_device;
23864 Optional<const AllocationCallbacks> m_allocator;
23865 };
23866#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23867
23868 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
23869 {
23870 return vkGetDeviceProcAddr( m_device, pName );
23871 }
23872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23873 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
23874 {
23875 return vkGetDeviceProcAddr( m_device, name.c_str() );
23876 }
23877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23878
23879 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
23880 {
23881 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23882 }
23883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23884 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
23885 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023886 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023887 }
23888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23889
23890 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
23891 {
23892 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
23893 }
23894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23895 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
23896 {
23897 Queue queue;
23898 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
23899 return queue;
23900 }
23901#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23902
23903#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
23904 VULKAN_HPP_INLINE Result Device::waitIdle() const
23905 {
23906 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23907 }
23908#else
23909 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
23910 {
23911 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23912 return createResultValue( result, "vk::Device::waitIdle" );
23913 }
23914#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23915
23916 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
23917 {
23918 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
23919 }
23920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23921 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23922 {
23923 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023924 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 -070023925 return createResultValue( result, memory, "vk::Device::allocateMemory" );
23926 }
23927#ifndef VULKAN_HPP_NO_SMART_HANDLE
23928 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23929 {
23930 DeviceMemoryDeleter deleter( *this, allocator );
23931 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
23932 }
23933#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23934#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23935
23936 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
23937 {
23938 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23939 }
23940#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23941 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
23942 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023943 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023944 }
23945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23946
23947 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
23948 {
23949 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
23950 }
23951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23952 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
23953 {
23954 void* pData;
23955 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
23956 return createResultValue( result, pData, "vk::Device::mapMemory" );
23957 }
23958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23959
23960 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
23961 {
23962 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
23963 }
23964
23965 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23966 {
23967 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23968 }
23969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23970 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23971 {
23972 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
23973 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
23974 }
23975#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23976
23977 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23978 {
23979 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23980 }
23981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23982 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23983 {
23984 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
23985 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
23986 }
23987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23988
23989 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
23990 {
23991 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
23992 }
23993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23994 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
23995 {
23996 DeviceSize committedMemoryInBytes;
23997 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
23998 return committedMemoryInBytes;
23999 }
24000#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24001
24002 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24003 {
24004 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24005 }
24006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24007 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24008 {
24009 MemoryRequirements memoryRequirements;
24010 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24011 return memoryRequirements;
24012 }
24013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24014
24015#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24016 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24017 {
24018 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24019 }
24020#else
24021 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24022 {
24023 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24024 return createResultValue( result, "vk::Device::bindBufferMemory" );
24025 }
24026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24027
24028 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24029 {
24030 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24031 }
24032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24033 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24034 {
24035 MemoryRequirements memoryRequirements;
24036 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24037 return memoryRequirements;
24038 }
24039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24040
24041#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24042 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24043 {
24044 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24045 }
24046#else
24047 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24048 {
24049 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24050 return createResultValue( result, "vk::Device::bindImageMemory" );
24051 }
24052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24053
24054 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24055 {
24056 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24057 }
24058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24059 template <typename Allocator>
24060 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24061 {
24062 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24063 uint32_t sparseMemoryRequirementCount;
24064 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24065 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24066 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24067 return sparseMemoryRequirements;
24068 }
24069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24070
24071 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24072 {
24073 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24074 }
24075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24076 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24077 {
24078 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024079 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 -070024080 return createResultValue( result, fence, "vk::Device::createFence" );
24081 }
24082#ifndef VULKAN_HPP_NO_SMART_HANDLE
24083 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24084 {
24085 FenceDeleter deleter( *this, allocator );
24086 return UniqueFence( createFence( createInfo, allocator ), deleter );
24087 }
24088#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24090
24091 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24092 {
24093 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24094 }
24095#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24096 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24097 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024098 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024099 }
24100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24101
24102 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24103 {
24104 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24105 }
24106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24107 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24108 {
24109 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24110 return createResultValue( result, "vk::Device::resetFences" );
24111 }
24112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24113
24114#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24115 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24116 {
24117 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24118 }
24119#else
24120 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24121 {
24122 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24123 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24124 }
24125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24126
24127 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24128 {
24129 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24130 }
24131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24132 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24133 {
24134 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24135 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24136 }
24137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24138
24139 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24140 {
24141 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24142 }
24143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24144 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24145 {
24146 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024147 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 -070024148 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24149 }
24150#ifndef VULKAN_HPP_NO_SMART_HANDLE
24151 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24152 {
24153 SemaphoreDeleter deleter( *this, allocator );
24154 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24155 }
24156#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24158
24159 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24160 {
24161 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24162 }
24163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24164 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24165 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024166 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024167 }
24168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24169
24170 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24171 {
24172 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24173 }
24174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24175 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24176 {
24177 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024178 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 -070024179 return createResultValue( result, event, "vk::Device::createEvent" );
24180 }
24181#ifndef VULKAN_HPP_NO_SMART_HANDLE
24182 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24183 {
24184 EventDeleter deleter( *this, allocator );
24185 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24186 }
24187#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24189
24190 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24191 {
24192 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24193 }
24194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24195 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24196 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024197 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024198 }
24199#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24200
24201#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24202 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24203 {
24204 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24205 }
24206#else
24207 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24208 {
24209 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24210 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24211 }
24212#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24213
24214#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24215 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24216 {
24217 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24218 }
24219#else
24220 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24221 {
24222 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24223 return createResultValue( result, "vk::Device::setEvent" );
24224 }
24225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24226
24227#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24228 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24229 {
24230 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24231 }
24232#else
24233 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24234 {
24235 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24236 return createResultValue( result, "vk::Device::resetEvent" );
24237 }
24238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24239
24240 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24241 {
24242 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24243 }
24244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24245 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24246 {
24247 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024248 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 -070024249 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24250 }
24251#ifndef VULKAN_HPP_NO_SMART_HANDLE
24252 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24253 {
24254 QueryPoolDeleter deleter( *this, allocator );
24255 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24256 }
24257#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24259
24260 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24261 {
24262 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24263 }
24264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24265 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24266 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024267 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024268 }
24269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24270
24271 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24272 {
24273 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24274 }
24275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24276 template <typename T>
24277 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24278 {
24279 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 ) ) );
24280 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24281 }
24282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24283
24284 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24285 {
24286 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24287 }
24288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24289 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24290 {
24291 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024292 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 -070024293 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24294 }
24295#ifndef VULKAN_HPP_NO_SMART_HANDLE
24296 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24297 {
24298 BufferDeleter deleter( *this, allocator );
24299 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24300 }
24301#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24303
24304 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24305 {
24306 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24307 }
24308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24309 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24310 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024311 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024312 }
24313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24314
24315 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24316 {
24317 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24318 }
24319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24320 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24321 {
24322 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024323 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 -070024324 return createResultValue( result, view, "vk::Device::createBufferView" );
24325 }
24326#ifndef VULKAN_HPP_NO_SMART_HANDLE
24327 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24328 {
24329 BufferViewDeleter deleter( *this, allocator );
24330 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24331 }
24332#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24334
24335 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24336 {
24337 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24338 }
24339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24340 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24341 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024342 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024343 }
24344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24345
24346 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24347 {
24348 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24349 }
24350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24351 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24352 {
24353 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024354 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 -070024355 return createResultValue( result, image, "vk::Device::createImage" );
24356 }
24357#ifndef VULKAN_HPP_NO_SMART_HANDLE
24358 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24359 {
24360 ImageDeleter deleter( *this, allocator );
24361 return UniqueImage( createImage( createInfo, allocator ), deleter );
24362 }
24363#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24365
24366 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24367 {
24368 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24369 }
24370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24371 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24372 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024373 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024374 }
24375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24376
24377 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24378 {
24379 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24380 }
24381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24382 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24383 {
24384 SubresourceLayout layout;
24385 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24386 return layout;
24387 }
24388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24389
24390 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24391 {
24392 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24393 }
24394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24395 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24396 {
24397 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024398 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 -070024399 return createResultValue( result, view, "vk::Device::createImageView" );
24400 }
24401#ifndef VULKAN_HPP_NO_SMART_HANDLE
24402 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24403 {
24404 ImageViewDeleter deleter( *this, allocator );
24405 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24406 }
24407#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24409
24410 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24411 {
24412 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24413 }
24414#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24415 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24416 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024417 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024418 }
24419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24420
24421 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24422 {
24423 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24424 }
24425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24426 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24427 {
24428 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024429 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 -070024430 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24431 }
24432#ifndef VULKAN_HPP_NO_SMART_HANDLE
24433 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24434 {
24435 ShaderModuleDeleter deleter( *this, allocator );
24436 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24437 }
24438#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24440
24441 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24442 {
24443 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24444 }
24445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24446 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24447 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024448 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024449 }
24450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24451
24452 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24453 {
24454 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24455 }
24456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24457 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24458 {
24459 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024460 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 -070024461 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24462 }
24463#ifndef VULKAN_HPP_NO_SMART_HANDLE
24464 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24465 {
24466 PipelineCacheDeleter deleter( *this, allocator );
24467 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24468 }
24469#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24471
24472 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24473 {
24474 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24475 }
24476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24477 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24478 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024479 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024480 }
24481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24482
24483 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24484 {
24485 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24486 }
24487#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24488 template <typename Allocator>
24489 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24490 {
24491 std::vector<uint8_t,Allocator> data;
24492 size_t dataSize;
24493 Result result;
24494 do
24495 {
24496 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24497 if ( ( result == Result::eSuccess ) && dataSize )
24498 {
24499 data.resize( dataSize );
24500 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24501 }
24502 } while ( result == Result::eIncomplete );
24503 assert( dataSize <= data.size() );
24504 data.resize( dataSize );
24505 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24506 }
24507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24508
24509 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24510 {
24511 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24512 }
24513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24514 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24515 {
24516 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24517 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24518 }
24519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24520
24521 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24522 {
24523 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 ) ) );
24524 }
24525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24526 template <typename Allocator>
24527 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24528 {
24529 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024530 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 -070024531 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24532 }
24533 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24534 {
24535 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024536 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 -070024537 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24538 }
24539#ifndef VULKAN_HPP_NO_SMART_HANDLE
24540 template <typename Allocator>
24541 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24542 {
24543 PipelineDeleter deleter( *this, allocator );
24544 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24545 std::vector<UniquePipeline> uniquePipelines;
24546 uniquePipelines.reserve( pipelines.size() );
24547 for ( auto pipeline : pipelines )
24548 {
24549 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24550 }
24551 return uniquePipelines;
24552 }
24553 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24554 {
24555 PipelineDeleter deleter( *this, allocator );
24556 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24557 }
24558#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24560
24561 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24562 {
24563 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 ) ) );
24564 }
24565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24566 template <typename Allocator>
24567 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24568 {
24569 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024570 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 -070024571 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24572 }
24573 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24574 {
24575 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024576 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 -070024577 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24578 }
24579#ifndef VULKAN_HPP_NO_SMART_HANDLE
24580 template <typename Allocator>
24581 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24582 {
24583 PipelineDeleter deleter( *this, allocator );
24584 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24585 std::vector<UniquePipeline> uniquePipelines;
24586 uniquePipelines.reserve( pipelines.size() );
24587 for ( auto pipeline : pipelines )
24588 {
24589 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24590 }
24591 return uniquePipelines;
24592 }
24593 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24594 {
24595 PipelineDeleter deleter( *this, allocator );
24596 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24597 }
24598#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24599#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24600
24601 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24602 {
24603 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24604 }
24605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24606 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24607 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024608 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024609 }
24610#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24611
24612 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24613 {
24614 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24615 }
24616#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24617 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24618 {
24619 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024620 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 -070024621 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24622 }
24623#ifndef VULKAN_HPP_NO_SMART_HANDLE
24624 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24625 {
24626 PipelineLayoutDeleter deleter( *this, allocator );
24627 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24628 }
24629#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24631
24632 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24633 {
24634 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24635 }
24636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24637 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24638 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024639 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024640 }
24641#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24642
24643 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24644 {
24645 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24646 }
24647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24648 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24649 {
24650 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024651 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 -070024652 return createResultValue( result, sampler, "vk::Device::createSampler" );
24653 }
24654#ifndef VULKAN_HPP_NO_SMART_HANDLE
24655 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24656 {
24657 SamplerDeleter deleter( *this, allocator );
24658 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
24659 }
24660#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24662
24663 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
24664 {
24665 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24666 }
24667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24668 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
24669 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024670 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024671 }
24672#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24673
24674 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
24675 {
24676 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
24677 }
24678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24679 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24680 {
24681 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024682 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 -070024683 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
24684 }
24685#ifndef VULKAN_HPP_NO_SMART_HANDLE
24686 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24687 {
24688 DescriptorSetLayoutDeleter deleter( *this, allocator );
24689 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
24690 }
24691#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24693
24694 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
24695 {
24696 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24697 }
24698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24699 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
24700 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024701 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024702 }
24703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24704
24705 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
24706 {
24707 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
24708 }
24709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24710 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24711 {
24712 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024713 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 -070024714 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
24715 }
24716#ifndef VULKAN_HPP_NO_SMART_HANDLE
24717 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24718 {
24719 DescriptorPoolDeleter deleter( *this, allocator );
24720 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
24721 }
24722#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24724
24725 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
24726 {
24727 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24728 }
24729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24730 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
24731 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024732 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024733 }
24734#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24735
24736#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24737 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24738 {
24739 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24740 }
24741#else
24742 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24743 {
24744 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24745 return createResultValue( result, "vk::Device::resetDescriptorPool" );
24746 }
24747#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24748
24749 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
24750 {
24751 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
24752 }
24753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24754 template <typename Allocator>
24755 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
24756 {
24757 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
24758 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
24759 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
24760 }
24761#ifndef VULKAN_HPP_NO_SMART_HANDLE
24762 template <typename Allocator>
24763 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
24764 {
24765 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
24766 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
24767 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
24768 uniqueDescriptorSets.reserve( descriptorSets.size() );
24769 for ( auto descriptorSet : descriptorSets )
24770 {
24771 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
24772 }
24773 return uniqueDescriptorSets;
24774 }
24775#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24777
24778 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
24779 {
24780 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
24781 }
24782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24783 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
24784 {
24785 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
24786 return createResultValue( result, "vk::Device::freeDescriptorSets" );
24787 }
24788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24789
24790 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
24791 {
24792 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
24793 }
24794#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24795 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
24796 {
24797 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
24798 }
24799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24800
24801 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
24802 {
24803 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
24804 }
24805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24806 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24807 {
24808 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024809 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 -070024810 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
24811 }
24812#ifndef VULKAN_HPP_NO_SMART_HANDLE
24813 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24814 {
24815 FramebufferDeleter deleter( *this, allocator );
24816 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
24817 }
24818#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24820
24821 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
24822 {
24823 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24824 }
24825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24826 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
24827 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024828 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024829 }
24830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24831
24832 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
24833 {
24834 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
24835 }
24836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24837 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24838 {
24839 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024840 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 -070024841 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
24842 }
24843#ifndef VULKAN_HPP_NO_SMART_HANDLE
24844 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24845 {
24846 RenderPassDeleter deleter( *this, allocator );
24847 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
24848 }
24849#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24851
24852 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
24853 {
24854 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24855 }
24856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24857 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
24858 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024859 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024860 }
24861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24862
24863 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
24864 {
24865 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
24866 }
24867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24868 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
24869 {
24870 Extent2D granularity;
24871 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
24872 return granularity;
24873 }
24874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24875
24876 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
24877 {
24878 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
24879 }
24880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24881 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24882 {
24883 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024884 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 -070024885 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
24886 }
24887#ifndef VULKAN_HPP_NO_SMART_HANDLE
24888 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24889 {
24890 CommandPoolDeleter deleter( *this, allocator );
24891 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
24892 }
24893#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24895
24896 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
24897 {
24898 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24899 }
24900#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24901 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
24902 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024903 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024904 }
24905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24906
24907#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24908 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24909 {
24910 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24911 }
24912#else
24913 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24914 {
24915 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24916 return createResultValue( result, "vk::Device::resetCommandPool" );
24917 }
24918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24919
24920 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
24921 {
24922 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
24923 }
24924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24925 template <typename Allocator>
24926 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
24927 {
24928 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
24929 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
24930 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
24931 }
24932#ifndef VULKAN_HPP_NO_SMART_HANDLE
24933 template <typename Allocator>
24934 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
24935 {
24936 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
24937 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
24938 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
24939 uniqueCommandBuffers.reserve( commandBuffers.size() );
24940 for ( auto commandBuffer : commandBuffers )
24941 {
24942 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
24943 }
24944 return uniqueCommandBuffers;
24945 }
24946#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24948
24949 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
24950 {
24951 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
24952 }
24953#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24954 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
24955 {
24956 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
24957 }
24958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24959
24960 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
24961 {
24962 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
24963 }
24964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24965 template <typename Allocator>
24966 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24967 {
24968 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024969 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 -070024970 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
24971 }
24972 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
24973 {
24974 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024975 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 -070024976 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
24977 }
24978#ifndef VULKAN_HPP_NO_SMART_HANDLE
24979 template <typename Allocator>
24980 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24981 {
24982 SwapchainKHRDeleter deleter( *this, allocator );
24983 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
24984 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
24985 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
24986 for ( auto swapchainKHR : swapchainKHRs )
24987 {
24988 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
24989 }
24990 return uniqueSwapchainKHRs;
24991 }
24992 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
24993 {
24994 SwapchainKHRDeleter deleter( *this, allocator );
24995 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
24996 }
24997#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24999
25000 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25001 {
25002 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25003 }
25004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25005 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25006 {
25007 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025008 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 -070025009 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25010 }
25011#ifndef VULKAN_HPP_NO_SMART_HANDLE
25012 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25013 {
25014 SwapchainKHRDeleter deleter( *this, allocator );
25015 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25016 }
25017#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25019
25020 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25021 {
25022 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25023 }
25024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25025 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25026 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025027 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025028 }
25029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25030
25031 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25032 {
25033 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25034 }
25035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25036 template <typename Allocator>
25037 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25038 {
25039 std::vector<Image,Allocator> swapchainImages;
25040 uint32_t swapchainImageCount;
25041 Result result;
25042 do
25043 {
25044 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25045 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25046 {
25047 swapchainImages.resize( swapchainImageCount );
25048 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25049 }
25050 } while ( result == Result::eIncomplete );
25051 assert( swapchainImageCount <= swapchainImages.size() );
25052 swapchainImages.resize( swapchainImageCount );
25053 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25054 }
25055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25056
25057 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25058 {
25059 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25060 }
25061#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25062 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25063 {
25064 uint32_t imageIndex;
25065 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25066 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25067 }
25068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25069
25070 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25071 {
25072 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25073 }
25074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25075 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25076 {
25077 DebugMarkerObjectNameInfoEXT nameInfo;
25078 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25079 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25080 }
25081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25082
25083 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25084 {
25085 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25086 }
25087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25088 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25089 {
25090 DebugMarkerObjectTagInfoEXT tagInfo;
25091 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25092 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25093 }
25094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25095
25096#ifdef VK_USE_PLATFORM_WIN32_KHR
25097 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25098 {
25099 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25100 }
25101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25102 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25103 {
25104 HANDLE handle;
25105 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25106 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25107 }
25108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25109#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25110
25111 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25112 {
25113 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25114 }
25115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25116 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25117 {
25118 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025119 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 -070025120 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25121 }
25122#ifndef VULKAN_HPP_NO_SMART_HANDLE
25123 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25124 {
25125 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25126 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25127 }
25128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25130
25131 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25132 {
25133 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25134 }
25135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25136 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25137 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025138 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025139 }
25140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25141
25142 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25143 {
25144 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25145 }
25146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25147 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25148 {
25149 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025150 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 -070025151 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25152 }
25153#ifndef VULKAN_HPP_NO_SMART_HANDLE
25154 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25155 {
25156 ObjectTableNVXDeleter deleter( *this, allocator );
25157 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25158 }
25159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25161
25162 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25163 {
25164 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25165 }
25166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25167 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25168 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025169 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025170 }
25171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25172
25173 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25174 {
25175 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25176 }
25177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25178 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25179 {
25180#ifdef VULKAN_HPP_NO_EXCEPTIONS
25181 assert( pObjectTableEntries.size() == objectIndices.size() );
25182#else
25183 if ( pObjectTableEntries.size() != objectIndices.size() )
25184 {
25185 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25186 }
25187#endif // VULKAN_HPP_NO_EXCEPTIONS
25188 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25189 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25190 }
25191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25192
25193 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25194 {
25195 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25196 }
25197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25198 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25199 {
25200#ifdef VULKAN_HPP_NO_EXCEPTIONS
25201 assert( objectEntryTypes.size() == objectIndices.size() );
25202#else
25203 if ( objectEntryTypes.size() != objectIndices.size() )
25204 {
25205 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25206 }
25207#endif // VULKAN_HPP_NO_EXCEPTIONS
25208 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25209 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25210 }
25211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25212
25213 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25214 {
25215 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25216 }
25217
Mark Young0f183a82017-02-28 09:58:04 -070025218#ifdef VK_USE_PLATFORM_WIN32_KHR
25219 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25220 {
25221 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25222 }
25223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25224 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25225 {
25226 HANDLE handle;
25227 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25228 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25229 }
25230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25231#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25232
25233#ifdef VK_USE_PLATFORM_WIN32_KHR
25234 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25235 {
25236 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25237 }
25238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25239 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25240 {
25241 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25242 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25243 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25244 }
25245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25246#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25247
25248 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25249 {
25250 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25251 }
25252#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25253 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25254 {
25255 int fd;
25256 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25257 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25258 }
25259#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25260
25261 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25262 {
25263 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25264 }
25265#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25266 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25267 {
25268 MemoryFdPropertiesKHX memoryFdProperties;
25269 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25270 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25271 }
25272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25273
25274#ifdef VK_USE_PLATFORM_WIN32_KHX
25275 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25276 {
25277 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25278 }
25279#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25280 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25281 {
25282 HANDLE handle;
25283 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25284 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25285 }
25286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25287#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25288
25289#ifdef VK_USE_PLATFORM_WIN32_KHX
25290 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25291 {
25292 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25293 }
25294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25295 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25296 {
25297 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25298 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25299 }
25300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25301#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25302
25303 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25304 {
25305 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25306 }
25307#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25308 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25309 {
25310 int fd;
25311 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25312 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25313 }
25314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25315
25316 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25317 {
25318 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25319 }
25320#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25321 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25322 {
25323 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25324 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25325 }
25326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25327
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025328 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25329 {
25330 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25331 }
25332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25333 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25334 {
25335 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25336 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25337 }
25338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25339
25340 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25341 {
25342 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25343 }
25344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25345 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25346 {
25347 Fence fence;
25348 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25349 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25350 }
25351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25352
25353 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25354 {
25355 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 ) ) );
25356 }
25357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25358 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25359 {
25360 Fence fence;
25361 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 ) ) );
25362 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25363 }
25364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25365
25366 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25367 {
25368 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25369 }
25370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25371 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25372 {
25373 uint64_t counterValue;
25374 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25375 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25376 }
25377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025378
25379 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25380 {
25381 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25382 }
25383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25384 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25385 {
25386 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25387 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25388 return peerMemoryFeatures;
25389 }
25390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25391
25392 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25393 {
25394 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25395 }
25396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25397 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25398 {
25399 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25400 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25401 }
25402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25403
25404 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25405 {
25406 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25407 }
25408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25409 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25410 {
25411 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25412 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25413 }
25414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25415
25416 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25417 {
25418 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25419 }
25420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25421 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25422 {
25423 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25424 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25425 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25426 }
25427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25428
25429 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25430 {
25431 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25432 }
25433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25434 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25435 {
25436 DeviceGroupPresentModeFlagsKHX modes;
25437 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25438 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25439 }
25440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25441
25442 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25443 {
25444 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25445 }
25446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25447 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25448 {
25449 uint32_t imageIndex;
25450 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25451 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25452 }
25453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25454
25455 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25456 {
25457 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25458 }
25459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25460 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25461 {
25462 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025463 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 -070025464 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25465 }
25466#ifndef VULKAN_HPP_NO_SMART_HANDLE
25467 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25468 {
25469 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25470 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25471 }
25472#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25474
25475 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25476 {
25477 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25478 }
25479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25480 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25481 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025482 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025483 }
25484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25485
25486 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25487 {
25488 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25489 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025490
25491 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25492 {
25493 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25494 }
25495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25496 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25497 {
25498#ifdef VULKAN_HPP_NO_EXCEPTIONS
25499 assert( swapchains.size() == metadata.size() );
25500#else
25501 if ( swapchains.size() != metadata.size() )
25502 {
25503 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25504 }
25505#endif // VULKAN_HPP_NO_EXCEPTIONS
25506 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25507 }
25508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25509
25510 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25511 {
25512 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25513 }
25514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25515 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25516 {
25517 RefreshCycleDurationGOOGLE displayTimingProperties;
25518 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25519 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25520 }
25521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25522
25523 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25524 {
25525 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25526 }
25527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25528 template <typename Allocator>
25529 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25530 {
25531 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25532 uint32_t presentationTimingCount;
25533 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25534 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25535 {
25536 presentationTimings.resize( presentationTimingCount );
25537 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25538 }
25539 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25540 }
25541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25542
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025543#ifndef VULKAN_HPP_NO_SMART_HANDLE
25544 class DeviceDeleter;
25545 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25546#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25547
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025548 class PhysicalDevice
25549 {
25550 public:
25551 PhysicalDevice()
25552 : m_physicalDevice(VK_NULL_HANDLE)
25553 {}
25554
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025555 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025556 : m_physicalDevice(VK_NULL_HANDLE)
25557 {}
25558
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025559 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025560 : m_physicalDevice(physicalDevice)
25561 {}
25562
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025563#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025564 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25565 {
25566 m_physicalDevice = physicalDevice;
25567 return *this;
25568 }
25569#endif
25570
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025571 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025572 {
25573 m_physicalDevice = VK_NULL_HANDLE;
25574 return *this;
25575 }
25576
Lenny Komowebf33162016-08-26 14:10:08 -060025577 bool operator==(PhysicalDevice const &rhs) const
25578 {
25579 return m_physicalDevice == rhs.m_physicalDevice;
25580 }
25581
25582 bool operator!=(PhysicalDevice const &rhs) const
25583 {
25584 return m_physicalDevice != rhs.m_physicalDevice;
25585 }
25586
25587 bool operator<(PhysicalDevice const &rhs) const
25588 {
25589 return m_physicalDevice < rhs.m_physicalDevice;
25590 }
25591
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025592 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025593#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025594 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25596
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025597 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025599 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25600 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25602
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025603 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025604#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025605 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025606#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25607
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025608 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025610 PhysicalDeviceFeatures getFeatures() 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 getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025614#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025615 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25617
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025618 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025619#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025620 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25622
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025623 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025625 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25626#ifndef VULKAN_HPP_NO_SMART_HANDLE
25627 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25628#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025629#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25630
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025631 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025633 template <typename Allocator = std::allocator<LayerProperties>>
25634 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25636
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025637 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025639 template <typename Allocator = std::allocator<ExtensionProperties>>
25640 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025641#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25642
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025643 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 -060025644#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025645 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
25646 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025647#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25648
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025649 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025650#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025651 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
25652 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25654
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025655 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025657 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
25658 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025659#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25660
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025661 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025663 template <typename Allocator = std::allocator<DisplayKHR>>
25664 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25666
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025667 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025669 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
25670 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25672
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025673 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025675 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25677
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025678 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025680 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25682
25683#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025684 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
25685#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25686 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
25687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025688#endif /*VK_USE_PLATFORM_MIR_KHR*/
25689
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025690 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025692 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25694
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025695 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025697 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25699
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025700 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025702 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
25703 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25705
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025706 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025708 template <typename Allocator = std::allocator<PresentModeKHR>>
25709 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25711
25712#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025713 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
25714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25715 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
25716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025717#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
25718
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025719#ifdef VK_USE_PLATFORM_WIN32_KHR
25720 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
25721#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25722
25723#ifdef VK_USE_PLATFORM_XLIB_KHR
25724 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025726 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
25727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25728#endif /*VK_USE_PLATFORM_XLIB_KHR*/
25729
25730#ifdef VK_USE_PLATFORM_XCB_KHR
25731 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
25732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25733 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
25734#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25735#endif /*VK_USE_PLATFORM_XCB_KHR*/
25736
25737 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
25738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25739 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
25740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25741
25742 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
25743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25744 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
25745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25746
25747 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
25748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25749 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
25750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25751
25752 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
25753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25754 PhysicalDeviceProperties2KHR getProperties2KHR() const;
25755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25756
25757 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
25758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25759 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
25760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25761
25762 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
25763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25764 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
25765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25766
25767 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
25768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25769 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
25770 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
25771#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25772
25773 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
25774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25775 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
25776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25777
25778 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
25779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25780 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
25781 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25783
Mark Young0f183a82017-02-28 09:58:04 -070025784 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
25785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25786 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
25787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25788
25789 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
25790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25791 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
25792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25793
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025794#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025795 Result releaseDisplayEXT( DisplayKHR display ) const;
25796#else
25797 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25799
25800#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025801 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025802#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025803 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070025805#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
25806
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025807#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
25808 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070025809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025810 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070025811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025812#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070025813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025814 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070025815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025816 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070025817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25818
Mark Young0f183a82017-02-28 09:58:04 -070025819 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
25820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25821 template <typename Allocator = std::allocator<Rect2D>>
25822 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
25823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25824
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025825 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025826 {
25827 return m_physicalDevice;
25828 }
25829
25830 explicit operator bool() const
25831 {
25832 return m_physicalDevice != VK_NULL_HANDLE;
25833 }
25834
25835 bool operator!() const
25836 {
25837 return m_physicalDevice == VK_NULL_HANDLE;
25838 }
25839
25840 private:
25841 VkPhysicalDevice m_physicalDevice;
25842 };
25843 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
25844
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025845#ifndef VULKAN_HPP_NO_SMART_HANDLE
25846 class DeviceDeleter
25847 {
25848 public:
25849 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
25850 : m_allocator( allocator )
25851 {}
25852
25853 void operator()( Device device )
25854 {
25855 device.destroy( m_allocator );
25856 }
25857
25858 private:
25859 Optional<const AllocationCallbacks> m_allocator;
25860 };
25861#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25862
25863 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
25864 {
25865 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
25866 }
25867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25868 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
25869 {
25870 PhysicalDeviceProperties properties;
25871 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
25872 return properties;
25873 }
25874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25875
25876 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
25877 {
25878 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
25879 }
25880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25881 template <typename Allocator>
25882 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
25883 {
25884 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
25885 uint32_t queueFamilyPropertyCount;
25886 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
25887 queueFamilyProperties.resize( queueFamilyPropertyCount );
25888 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
25889 return queueFamilyProperties;
25890 }
25891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25892
25893 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
25894 {
25895 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
25896 }
25897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25898 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
25899 {
25900 PhysicalDeviceMemoryProperties memoryProperties;
25901 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
25902 return memoryProperties;
25903 }
25904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25905
25906 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
25907 {
25908 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
25909 }
25910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25911 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
25912 {
25913 PhysicalDeviceFeatures features;
25914 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
25915 return features;
25916 }
25917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25918
25919 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
25920 {
25921 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
25922 }
25923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25924 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
25925 {
25926 FormatProperties formatProperties;
25927 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
25928 return formatProperties;
25929 }
25930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25931
25932 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
25933 {
25934 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 ) ) );
25935 }
25936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25937 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
25938 {
25939 ImageFormatProperties imageFormatProperties;
25940 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 ) ) );
25941 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
25942 }
25943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25944
25945 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
25946 {
25947 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
25948 }
25949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25950 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25951 {
25952 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025953 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 -070025954 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
25955 }
25956#ifndef VULKAN_HPP_NO_SMART_HANDLE
25957 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25958 {
25959 DeviceDeleter deleter( allocator );
25960 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
25961 }
25962#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25964
25965 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
25966 {
25967 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25968 }
25969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25970 template <typename Allocator>
25971 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
25972 {
25973 std::vector<LayerProperties,Allocator> properties;
25974 uint32_t propertyCount;
25975 Result result;
25976 do
25977 {
25978 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
25979 if ( ( result == Result::eSuccess ) && propertyCount )
25980 {
25981 properties.resize( propertyCount );
25982 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25983 }
25984 } while ( result == Result::eIncomplete );
25985 assert( propertyCount <= properties.size() );
25986 properties.resize( propertyCount );
25987 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
25988 }
25989#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25990
25991 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
25992 {
25993 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25994 }
25995#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25996 template <typename Allocator>
25997 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
25998 {
25999 std::vector<ExtensionProperties,Allocator> properties;
26000 uint32_t propertyCount;
26001 Result result;
26002 do
26003 {
26004 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26005 if ( ( result == Result::eSuccess ) && propertyCount )
26006 {
26007 properties.resize( propertyCount );
26008 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26009 }
26010 } while ( result == Result::eIncomplete );
26011 assert( propertyCount <= properties.size() );
26012 properties.resize( propertyCount );
26013 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26014 }
26015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26016
26017 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26018 {
26019 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 ) );
26020 }
26021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26022 template <typename Allocator>
26023 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26024 {
26025 std::vector<SparseImageFormatProperties,Allocator> properties;
26026 uint32_t propertyCount;
26027 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 );
26028 properties.resize( propertyCount );
26029 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() ) );
26030 return properties;
26031 }
26032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26033
26034 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26035 {
26036 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26037 }
26038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26039 template <typename Allocator>
26040 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26041 {
26042 std::vector<DisplayPropertiesKHR,Allocator> properties;
26043 uint32_t propertyCount;
26044 Result result;
26045 do
26046 {
26047 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26048 if ( ( result == Result::eSuccess ) && propertyCount )
26049 {
26050 properties.resize( propertyCount );
26051 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26052 }
26053 } while ( result == Result::eIncomplete );
26054 assert( propertyCount <= properties.size() );
26055 properties.resize( propertyCount );
26056 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26057 }
26058#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26059
26060 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26061 {
26062 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26063 }
26064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26065 template <typename Allocator>
26066 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26067 {
26068 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26069 uint32_t propertyCount;
26070 Result result;
26071 do
26072 {
26073 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26074 if ( ( result == Result::eSuccess ) && propertyCount )
26075 {
26076 properties.resize( propertyCount );
26077 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26078 }
26079 } while ( result == Result::eIncomplete );
26080 assert( propertyCount <= properties.size() );
26081 properties.resize( propertyCount );
26082 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26083 }
26084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26085
26086 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26087 {
26088 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26089 }
26090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26091 template <typename Allocator>
26092 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26093 {
26094 std::vector<DisplayKHR,Allocator> displays;
26095 uint32_t displayCount;
26096 Result result;
26097 do
26098 {
26099 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26100 if ( ( result == Result::eSuccess ) && displayCount )
26101 {
26102 displays.resize( displayCount );
26103 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26104 }
26105 } while ( result == Result::eIncomplete );
26106 assert( displayCount <= displays.size() );
26107 displays.resize( displayCount );
26108 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26109 }
26110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26111
26112 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26113 {
26114 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26115 }
26116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26117 template <typename Allocator>
26118 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26119 {
26120 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26121 uint32_t propertyCount;
26122 Result result;
26123 do
26124 {
26125 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26126 if ( ( result == Result::eSuccess ) && propertyCount )
26127 {
26128 properties.resize( propertyCount );
26129 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26130 }
26131 } while ( result == Result::eIncomplete );
26132 assert( propertyCount <= properties.size() );
26133 properties.resize( propertyCount );
26134 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26135 }
26136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26137
26138 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26139 {
26140 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 ) ) );
26141 }
26142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26143 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26144 {
26145 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026146 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 -070026147 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26148 }
26149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26150
26151 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26152 {
26153 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26154 }
26155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26156 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26157 {
26158 DisplayPlaneCapabilitiesKHR capabilities;
26159 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26160 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26161 }
26162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26163
26164#ifdef VK_USE_PLATFORM_MIR_KHR
26165 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26166 {
26167 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26168 }
26169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26170 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26171 {
26172 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26173 }
26174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26175#endif /*VK_USE_PLATFORM_MIR_KHR*/
26176
26177 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26178 {
26179 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26180 }
26181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26182 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26183 {
26184 Bool32 supported;
26185 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26186 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26187 }
26188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26189
26190 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26191 {
26192 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26193 }
26194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26195 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26196 {
26197 SurfaceCapabilitiesKHR surfaceCapabilities;
26198 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26199 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26200 }
26201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26202
26203 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26204 {
26205 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26206 }
26207#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26208 template <typename Allocator>
26209 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26210 {
26211 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26212 uint32_t surfaceFormatCount;
26213 Result result;
26214 do
26215 {
26216 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26217 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26218 {
26219 surfaceFormats.resize( surfaceFormatCount );
26220 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26221 }
26222 } while ( result == Result::eIncomplete );
26223 assert( surfaceFormatCount <= surfaceFormats.size() );
26224 surfaceFormats.resize( surfaceFormatCount );
26225 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26226 }
26227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26228
26229 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26230 {
26231 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26232 }
26233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26234 template <typename Allocator>
26235 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26236 {
26237 std::vector<PresentModeKHR,Allocator> presentModes;
26238 uint32_t presentModeCount;
26239 Result result;
26240 do
26241 {
26242 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26243 if ( ( result == Result::eSuccess ) && presentModeCount )
26244 {
26245 presentModes.resize( presentModeCount );
26246 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26247 }
26248 } while ( result == Result::eIncomplete );
26249 assert( presentModeCount <= presentModes.size() );
26250 presentModes.resize( presentModeCount );
26251 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26252 }
26253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26254
26255#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26256 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26257 {
26258 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26259 }
26260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26261 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26262 {
26263 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26264 }
26265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26266#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26267
26268#ifdef VK_USE_PLATFORM_WIN32_KHR
26269 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26270 {
26271 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26272 }
26273#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26274
26275#ifdef VK_USE_PLATFORM_XLIB_KHR
26276 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26277 {
26278 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26279 }
26280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26281 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26282 {
26283 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26284 }
26285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26286#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26287
26288#ifdef VK_USE_PLATFORM_XCB_KHR
26289 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26290 {
26291 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26292 }
26293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26294 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26295 {
26296 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26297 }
26298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26299#endif /*VK_USE_PLATFORM_XCB_KHR*/
26300
26301 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26302 {
26303 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 ) ) );
26304 }
26305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26306 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26307 {
26308 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26309 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 ) ) );
26310 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26311 }
26312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26313
26314 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26315 {
26316 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26317 }
26318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26319 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26320 {
26321 DeviceGeneratedCommandsLimitsNVX limits;
26322 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26323 return limits;
26324 }
26325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26326
26327 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26328 {
26329 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26330 }
26331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26332 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26333 {
26334 PhysicalDeviceFeatures2KHR features;
26335 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26336 return features;
26337 }
26338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26339
26340 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26341 {
26342 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26343 }
26344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26345 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26346 {
26347 PhysicalDeviceProperties2KHR properties;
26348 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26349 return properties;
26350 }
26351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26352
26353 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26354 {
26355 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26356 }
26357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26358 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26359 {
26360 FormatProperties2KHR formatProperties;
26361 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26362 return formatProperties;
26363 }
26364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26365
26366 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26367 {
26368 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26369 }
26370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26371 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26372 {
26373 ImageFormatProperties2KHR imageFormatProperties;
26374 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26375 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26376 }
26377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26378
26379 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26380 {
26381 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26382 }
26383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26384 template <typename Allocator>
26385 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26386 {
26387 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26388 uint32_t queueFamilyPropertyCount;
26389 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26390 queueFamilyProperties.resize( queueFamilyPropertyCount );
26391 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26392 return queueFamilyProperties;
26393 }
26394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26395
26396 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26397 {
26398 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26399 }
26400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26401 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26402 {
26403 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26404 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26405 return memoryProperties;
26406 }
26407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26408
26409 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26410 {
26411 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26412 }
26413#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26414 template <typename Allocator>
26415 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26416 {
26417 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26418 uint32_t propertyCount;
26419 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26420 properties.resize( propertyCount );
26421 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26422 return properties;
26423 }
26424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26425
Mark Young0f183a82017-02-28 09:58:04 -070026426 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26427 {
26428 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26429 }
26430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26431 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26432 {
26433 ExternalBufferPropertiesKHX externalBufferProperties;
26434 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26435 return externalBufferProperties;
26436 }
26437#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26438
26439 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26440 {
26441 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26442 }
26443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26444 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26445 {
26446 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26447 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26448 return externalSemaphoreProperties;
26449 }
26450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26451
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026452#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26453 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26454 {
26455 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26456 }
26457#else
26458 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26459 {
26460 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26461 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26462 }
26463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26464
26465#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26466 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26467 {
26468 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26469 }
26470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26471 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26472 {
26473 Display dpy;
26474 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26475 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26476 }
26477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26478#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26479
26480#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26481 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26482 {
26483 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26484 }
26485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26486 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26487 {
26488 DisplayKHR display;
26489 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26490 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26491 }
26492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26493#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26494
26495 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26496 {
26497 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26498 }
26499#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26500 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26501 {
26502 SurfaceCapabilities2EXT surfaceCapabilities;
26503 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26504 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26505 }
26506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026507
26508 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26509 {
26510 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26511 }
26512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26513 template <typename Allocator>
26514 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26515 {
26516 std::vector<Rect2D,Allocator> rects;
26517 uint32_t rectCount;
26518 Result result;
26519 do
26520 {
26521 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26522 if ( ( result == Result::eSuccess ) && rectCount )
26523 {
26524 rects.resize( rectCount );
26525 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26526 }
26527 } while ( result == Result::eIncomplete );
26528 assert( rectCount <= rects.size() );
26529 rects.resize( rectCount );
26530 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26531 }
26532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026533
Mark Young0f183a82017-02-28 09:58:04 -070026534 struct CmdProcessCommandsInfoNVX
26535 {
26536 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 )
26537 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26538 , pNext( nullptr )
26539 , objectTable( objectTable_ )
26540 , indirectCommandsLayout( indirectCommandsLayout_ )
26541 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26542 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26543 , maxSequencesCount( maxSequencesCount_ )
26544 , targetCommandBuffer( targetCommandBuffer_ )
26545 , sequencesCountBuffer( sequencesCountBuffer_ )
26546 , sequencesCountOffset( sequencesCountOffset_ )
26547 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26548 , sequencesIndexOffset( sequencesIndexOffset_ )
26549 {
26550 }
26551
26552 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26553 {
26554 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26555 }
26556
26557 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26558 {
26559 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26560 return *this;
26561 }
26562
26563 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26564 {
26565 pNext = pNext_;
26566 return *this;
26567 }
26568
26569 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26570 {
26571 objectTable = objectTable_;
26572 return *this;
26573 }
26574
26575 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26576 {
26577 indirectCommandsLayout = indirectCommandsLayout_;
26578 return *this;
26579 }
26580
26581 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26582 {
26583 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26584 return *this;
26585 }
26586
26587 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
26588 {
26589 pIndirectCommandsTokens = pIndirectCommandsTokens_;
26590 return *this;
26591 }
26592
26593 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
26594 {
26595 maxSequencesCount = maxSequencesCount_;
26596 return *this;
26597 }
26598
26599 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
26600 {
26601 targetCommandBuffer = targetCommandBuffer_;
26602 return *this;
26603 }
26604
26605 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
26606 {
26607 sequencesCountBuffer = sequencesCountBuffer_;
26608 return *this;
26609 }
26610
26611 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
26612 {
26613 sequencesCountOffset = sequencesCountOffset_;
26614 return *this;
26615 }
26616
26617 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
26618 {
26619 sequencesIndexBuffer = sequencesIndexBuffer_;
26620 return *this;
26621 }
26622
26623 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
26624 {
26625 sequencesIndexOffset = sequencesIndexOffset_;
26626 return *this;
26627 }
26628
26629 operator const VkCmdProcessCommandsInfoNVX&() const
26630 {
26631 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
26632 }
26633
26634 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
26635 {
26636 return ( sType == rhs.sType )
26637 && ( pNext == rhs.pNext )
26638 && ( objectTable == rhs.objectTable )
26639 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
26640 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
26641 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
26642 && ( maxSequencesCount == rhs.maxSequencesCount )
26643 && ( targetCommandBuffer == rhs.targetCommandBuffer )
26644 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
26645 && ( sequencesCountOffset == rhs.sequencesCountOffset )
26646 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
26647 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
26648 }
26649
26650 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
26651 {
26652 return !operator==( rhs );
26653 }
26654
26655 private:
26656 StructureType sType;
26657
26658 public:
26659 const void* pNext;
26660 ObjectTableNVX objectTable;
26661 IndirectCommandsLayoutNVX indirectCommandsLayout;
26662 uint32_t indirectCommandsTokenCount;
26663 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
26664 uint32_t maxSequencesCount;
26665 CommandBuffer targetCommandBuffer;
26666 Buffer sequencesCountBuffer;
26667 DeviceSize sequencesCountOffset;
26668 Buffer sequencesIndexBuffer;
26669 DeviceSize sequencesIndexOffset;
26670 };
26671 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
26672
26673 struct PhysicalDeviceGroupPropertiesKHX
26674 {
26675 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
26676 {
26677 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
26678 }
26679
26680 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26681 {
26682 return ( sType == rhs.sType )
26683 && ( pNext == rhs.pNext )
26684 && ( physicalDeviceCount == rhs.physicalDeviceCount )
26685 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
26686 && ( subsetAllocation == rhs.subsetAllocation );
26687 }
26688
26689 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26690 {
26691 return !operator==( rhs );
26692 }
26693
26694 private:
26695 StructureType sType;
26696
26697 public:
26698 const void* pNext;
26699 uint32_t physicalDeviceCount;
26700 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
26701 Bool32 subsetAllocation;
26702 };
26703 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
26704
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026705#ifndef VULKAN_HPP_NO_SMART_HANDLE
26706 class DebugReportCallbackEXTDeleter;
26707 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
26708 class SurfaceKHRDeleter;
26709 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
26710#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26711
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026712 class Instance
26713 {
26714 public:
26715 Instance()
26716 : m_instance(VK_NULL_HANDLE)
26717 {}
26718
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026719 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026720 : m_instance(VK_NULL_HANDLE)
26721 {}
26722
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026723 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026724 : m_instance(instance)
26725 {}
26726
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026727#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026728 Instance& operator=(VkInstance instance)
26729 {
26730 m_instance = instance;
26731 return *this;
26732 }
26733#endif
26734
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026735 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026736 {
26737 m_instance = VK_NULL_HANDLE;
26738 return *this;
26739 }
26740
Lenny Komowebf33162016-08-26 14:10:08 -060026741 bool operator==(Instance const &rhs) const
26742 {
26743 return m_instance == rhs.m_instance;
26744 }
26745
26746 bool operator!=(Instance const &rhs) const
26747 {
26748 return m_instance != rhs.m_instance;
26749 }
26750
26751 bool operator<(Instance const &rhs) const
26752 {
26753 return m_instance < rhs.m_instance;
26754 }
26755
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026756 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026757#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026758 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26760
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026761 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026762#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026763 template <typename Allocator = std::allocator<PhysicalDevice>>
26764 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26766
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026767 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026769 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26771
26772#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026773 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026775 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26776#ifndef VULKAN_HPP_NO_SMART_HANDLE
26777 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26778#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026780#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026781
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026782 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026783#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026784 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26785#ifndef VULKAN_HPP_NO_SMART_HANDLE
26786 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26787#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26789
26790#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026791 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026793 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26794#ifndef VULKAN_HPP_NO_SMART_HANDLE
26795 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26796#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026798#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026799
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026800 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026802 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26804
Mark Young39389872017-01-19 21:10:49 -070026805#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026806 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26808 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26809#ifndef VULKAN_HPP_NO_SMART_HANDLE
26810 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26811#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026813#endif /*VK_USE_PLATFORM_VI_NN*/
26814
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026815#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026816 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26818 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26819#ifndef VULKAN_HPP_NO_SMART_HANDLE
26820 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26821#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026823#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26824
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026825#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026826 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26827#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26828 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26829#ifndef VULKAN_HPP_NO_SMART_HANDLE
26830 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26831#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26832#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026833#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26834
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026835#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026836 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26838 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26839#ifndef VULKAN_HPP_NO_SMART_HANDLE
26840 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26841#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26842#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026843#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26844
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026845#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026846 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26848 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26849#ifndef VULKAN_HPP_NO_SMART_HANDLE
26850 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26851#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026853#endif /*VK_USE_PLATFORM_XCB_KHR*/
26854
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026855 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026857 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26858#ifndef VULKAN_HPP_NO_SMART_HANDLE
26859 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26860#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26862
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026863 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026865 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26867
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026868 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 -060026869#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026870 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 -060026871#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26872
Mark Young0f183a82017-02-28 09:58:04 -070026873 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
26874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26875 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
26876 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
26877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26878
26879#ifdef VK_USE_PLATFORM_IOS_MVK
26880 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26881#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26882 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26883#ifndef VULKAN_HPP_NO_SMART_HANDLE
26884 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26885#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26886#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26887#endif /*VK_USE_PLATFORM_IOS_MVK*/
26888
26889#ifdef VK_USE_PLATFORM_MACOS_MVK
26890 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26892 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26893#ifndef VULKAN_HPP_NO_SMART_HANDLE
26894 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26895#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26897#endif /*VK_USE_PLATFORM_MACOS_MVK*/
26898
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026899 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026900 {
26901 return m_instance;
26902 }
26903
26904 explicit operator bool() const
26905 {
26906 return m_instance != VK_NULL_HANDLE;
26907 }
26908
26909 bool operator!() const
26910 {
26911 return m_instance == VK_NULL_HANDLE;
26912 }
26913
26914 private:
26915 VkInstance m_instance;
26916 };
26917 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
26918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026919#ifndef VULKAN_HPP_NO_SMART_HANDLE
26920 class DebugReportCallbackEXTDeleter
26921 {
26922 public:
26923 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26924 : m_instance( instance )
26925 , m_allocator( allocator )
26926 {}
26927
26928 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
26929 {
26930 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
26931 }
26932
26933 private:
26934 Instance m_instance;
26935 Optional<const AllocationCallbacks> m_allocator;
26936 };
26937
26938 class SurfaceKHRDeleter
26939 {
26940 public:
26941 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26942 : m_instance( instance )
26943 , m_allocator( allocator )
26944 {}
26945
26946 void operator()( SurfaceKHR surfaceKHR )
26947 {
26948 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
26949 }
26950
26951 private:
26952 Instance m_instance;
26953 Optional<const AllocationCallbacks> m_allocator;
26954 };
26955#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26956
26957 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
26958 {
26959 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26960 }
26961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26962 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
26963 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026964 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 }
26966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26967
26968 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
26969 {
26970 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
26971 }
26972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26973 template <typename Allocator>
26974 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
26975 {
26976 std::vector<PhysicalDevice,Allocator> physicalDevices;
26977 uint32_t physicalDeviceCount;
26978 Result result;
26979 do
26980 {
26981 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
26982 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
26983 {
26984 physicalDevices.resize( physicalDeviceCount );
26985 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
26986 }
26987 } while ( result == Result::eIncomplete );
26988 assert( physicalDeviceCount <= physicalDevices.size() );
26989 physicalDevices.resize( physicalDeviceCount );
26990 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
26991 }
26992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26993
26994 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
26995 {
26996 return vkGetInstanceProcAddr( m_instance, pName );
26997 }
26998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26999 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27000 {
27001 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27002 }
27003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27004
27005#ifdef VK_USE_PLATFORM_ANDROID_KHR
27006 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27007 {
27008 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27009 }
27010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27011 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27012 {
27013 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027014 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 -070027015 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27016 }
27017#ifndef VULKAN_HPP_NO_SMART_HANDLE
27018 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27019 {
27020 SurfaceKHRDeleter deleter( *this, allocator );
27021 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27022 }
27023#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27024#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27025#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27026
27027 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27028 {
27029 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27030 }
27031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27032 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27033 {
27034 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027035 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 -070027036 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27037 }
27038#ifndef VULKAN_HPP_NO_SMART_HANDLE
27039 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27040 {
27041 SurfaceKHRDeleter deleter( *this, allocator );
27042 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27043 }
27044#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27046
27047#ifdef VK_USE_PLATFORM_MIR_KHR
27048 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27049 {
27050 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27051 }
27052#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27053 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27054 {
27055 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027056 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 -070027057 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27058 }
27059#ifndef VULKAN_HPP_NO_SMART_HANDLE
27060 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27061 {
27062 SurfaceKHRDeleter deleter( *this, allocator );
27063 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27064 }
27065#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27067#endif /*VK_USE_PLATFORM_MIR_KHR*/
27068
27069 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27070 {
27071 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27072 }
27073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27074 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27075 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027076 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027077 }
27078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27079
27080#ifdef VK_USE_PLATFORM_VI_NN
27081 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27082 {
27083 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27084 }
27085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27086 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27087 {
27088 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027089 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 -070027090 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27091 }
27092#ifndef VULKAN_HPP_NO_SMART_HANDLE
27093 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27094 {
27095 SurfaceKHRDeleter deleter( *this, allocator );
27096 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27097 }
27098#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27100#endif /*VK_USE_PLATFORM_VI_NN*/
27101
27102#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27103 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27104 {
27105 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27106 }
27107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27108 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27109 {
27110 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027111 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 -070027112 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27113 }
27114#ifndef VULKAN_HPP_NO_SMART_HANDLE
27115 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27116 {
27117 SurfaceKHRDeleter deleter( *this, allocator );
27118 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27119 }
27120#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27122#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27123
27124#ifdef VK_USE_PLATFORM_WIN32_KHR
27125 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27126 {
27127 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27128 }
27129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27130 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27131 {
27132 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027133 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 -070027134 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27135 }
27136#ifndef VULKAN_HPP_NO_SMART_HANDLE
27137 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27138 {
27139 SurfaceKHRDeleter deleter( *this, allocator );
27140 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27141 }
27142#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27144#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27145
27146#ifdef VK_USE_PLATFORM_XLIB_KHR
27147 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27148 {
27149 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27150 }
27151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27152 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27153 {
27154 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027155 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 -070027156 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27157 }
27158#ifndef VULKAN_HPP_NO_SMART_HANDLE
27159 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27160 {
27161 SurfaceKHRDeleter deleter( *this, allocator );
27162 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27163 }
27164#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27166#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27167
27168#ifdef VK_USE_PLATFORM_XCB_KHR
27169 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27170 {
27171 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27172 }
27173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27174 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27175 {
27176 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027177 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 -070027178 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27179 }
27180#ifndef VULKAN_HPP_NO_SMART_HANDLE
27181 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27182 {
27183 SurfaceKHRDeleter deleter( *this, allocator );
27184 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27185 }
27186#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27187#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27188#endif /*VK_USE_PLATFORM_XCB_KHR*/
27189
27190 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27191 {
27192 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27193 }
27194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27195 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27196 {
27197 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027198 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 -070027199 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27200 }
27201#ifndef VULKAN_HPP_NO_SMART_HANDLE
27202 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27203 {
27204 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27205 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27206 }
27207#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27209
27210 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27211 {
27212 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27213 }
27214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27215 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27216 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027217 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027218 }
27219#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27220
27221 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
27222 {
27223 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27224 }
27225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27226 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
27227 {
27228#ifdef VULKAN_HPP_NO_EXCEPTIONS
27229 assert( layerPrefix.size() == message.size() );
27230#else
27231 if ( layerPrefix.size() != message.size() )
27232 {
27233 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27234 }
27235#endif // VULKAN_HPP_NO_EXCEPTIONS
27236 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27237 }
27238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027239
27240 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027241 {
Mark Young0f183a82017-02-28 09:58:04 -070027242 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27243 }
27244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27245 template <typename Allocator>
27246 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27247 {
27248 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27249 uint32_t physicalDeviceGroupCount;
27250 Result result;
27251 do
27252 {
27253 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27254 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27255 {
27256 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27257 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27258 }
27259 } while ( result == Result::eIncomplete );
27260 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27261 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27262 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27263 }
27264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27265
27266#ifdef VK_USE_PLATFORM_IOS_MVK
27267 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27268 {
27269 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27270 }
27271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27272 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27273 {
27274 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027275 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 -070027276 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27277 }
27278#ifndef VULKAN_HPP_NO_SMART_HANDLE
27279 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27280 {
27281 SurfaceKHRDeleter deleter( *this, allocator );
27282 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27283 }
27284#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27286#endif /*VK_USE_PLATFORM_IOS_MVK*/
27287
27288#ifdef VK_USE_PLATFORM_MACOS_MVK
27289 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27290 {
27291 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27292 }
27293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27294 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27295 {
27296 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027297 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 -070027298 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27299 }
27300#ifndef VULKAN_HPP_NO_SMART_HANDLE
27301 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27302 {
27303 SurfaceKHRDeleter deleter( *this, allocator );
27304 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27305 }
27306#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27308#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027309
Mark Young0f183a82017-02-28 09:58:04 -070027310 struct DeviceGroupDeviceCreateInfoKHX
27311 {
27312 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27313 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027314 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027315 , physicalDeviceCount( physicalDeviceCount_ )
27316 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027317 {
27318 }
27319
Mark Young0f183a82017-02-28 09:58:04 -070027320 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027321 {
Mark Young0f183a82017-02-28 09:58:04 -070027322 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027323 }
27324
Mark Young0f183a82017-02-28 09:58:04 -070027325 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027326 {
Mark Young0f183a82017-02-28 09:58:04 -070027327 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027328 return *this;
27329 }
27330
Mark Young0f183a82017-02-28 09:58:04 -070027331 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027332 {
27333 pNext = pNext_;
27334 return *this;
27335 }
27336
Mark Young0f183a82017-02-28 09:58:04 -070027337 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027338 {
Mark Young0f183a82017-02-28 09:58:04 -070027339 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027340 return *this;
27341 }
27342
Mark Young0f183a82017-02-28 09:58:04 -070027343 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027344 {
Mark Young0f183a82017-02-28 09:58:04 -070027345 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027346 return *this;
27347 }
27348
Mark Young0f183a82017-02-28 09:58:04 -070027349 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027350 {
Mark Young0f183a82017-02-28 09:58:04 -070027351 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027352 }
27353
Mark Young0f183a82017-02-28 09:58:04 -070027354 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027355 {
27356 return ( sType == rhs.sType )
27357 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027358 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27359 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027360 }
27361
Mark Young0f183a82017-02-28 09:58:04 -070027362 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027363 {
27364 return !operator==( rhs );
27365 }
27366
27367 private:
27368 StructureType sType;
27369
27370 public:
27371 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027372 uint32_t physicalDeviceCount;
27373 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027374 };
Mark Young0f183a82017-02-28 09:58:04 -070027375 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027376
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027377#ifndef VULKAN_HPP_NO_SMART_HANDLE
27378 class InstanceDeleter;
27379 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27380#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27381
27382 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27384 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27385#ifndef VULKAN_HPP_NO_SMART_HANDLE
27386 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27387#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27389
27390#ifndef VULKAN_HPP_NO_SMART_HANDLE
27391 class InstanceDeleter
27392 {
27393 public:
27394 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27395 : m_allocator( allocator )
27396 {}
27397
27398 void operator()( Instance instance )
27399 {
27400 instance.destroy( m_allocator );
27401 }
27402
27403 private:
27404 Optional<const AllocationCallbacks> m_allocator;
27405 };
27406#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27407
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027408 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027409 {
27410 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27411 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027413 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027414 {
27415 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027416 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 -060027417 return createResultValue( result, instance, "vk::createInstance" );
27418 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027419#ifndef VULKAN_HPP_NO_SMART_HANDLE
27420 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27421 {
27422 InstanceDeleter deleter( allocator );
27423 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27424 }
27425#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027426#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27427
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027428
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027429 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027430 {
27431 return "(void)";
27432 }
27433
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027434 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027435 {
27436 return "{}";
27437 }
27438
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027439 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027440 {
27441 return "(void)";
27442 }
27443
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027444 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027445 {
27446 return "{}";
27447 }
27448
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027449 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027450 {
27451 return "(void)";
27452 }
27453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027454 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027455 {
27456 return "{}";
27457 }
27458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027459 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027460 {
27461 return "(void)";
27462 }
27463
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027464 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027465 {
27466 return "{}";
27467 }
27468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027469 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027470 {
27471 return "(void)";
27472 }
27473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027474 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027475 {
27476 return "{}";
27477 }
27478
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027479 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027480 {
27481 return "(void)";
27482 }
27483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027484 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027485 {
27486 return "{}";
27487 }
27488
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027489 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027490 {
27491 return "(void)";
27492 }
27493
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027494 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027495 {
27496 return "{}";
27497 }
27498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027499 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027500 {
27501 return "(void)";
27502 }
27503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027504 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027505 {
27506 return "{}";
27507 }
27508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027509 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027510 {
27511 return "(void)";
27512 }
27513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027514 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027515 {
27516 return "{}";
27517 }
27518
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027519 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027520 {
27521 return "(void)";
27522 }
27523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027524 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027525 {
27526 return "{}";
27527 }
27528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027529 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027530 {
27531 return "(void)";
27532 }
27533
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027534 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027535 {
27536 return "{}";
27537 }
27538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027539 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027540 {
27541 return "(void)";
27542 }
27543
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027544 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027545 {
27546 return "{}";
27547 }
27548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027549 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027550 {
27551 return "(void)";
27552 }
27553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027554 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027555 {
27556 return "{}";
27557 }
27558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027559 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027560 {
27561 return "(void)";
27562 }
27563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027564 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027565 {
27566 return "{}";
27567 }
27568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027569 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027570 {
27571 return "(void)";
27572 }
27573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027574 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027575 {
27576 return "{}";
27577 }
27578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027579 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027580 {
27581 return "(void)";
27582 }
27583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027584 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027585 {
27586 return "{}";
27587 }
27588
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027589 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027590 {
27591 return "(void)";
27592 }
27593
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027594 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027595 {
27596 return "{}";
27597 }
27598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027599 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027600 {
27601 return "(void)";
27602 }
27603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027604 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027605 {
27606 return "{}";
27607 }
27608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027609 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027610 {
27611 return "(void)";
27612 }
27613
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027614 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027615 {
27616 return "{}";
27617 }
27618
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027619 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027620 {
27621 return "(void)";
27622 }
27623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027624 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027625 {
27626 return "{}";
27627 }
27628
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027629 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027630 {
27631 return "(void)";
27632 }
27633
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027634 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027635 {
27636 return "{}";
27637 }
27638
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027639 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027640 {
27641 return "(void)";
27642 }
27643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027644 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027645 {
27646 return "{}";
27647 }
27648
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027649 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027650 {
27651 return "(void)";
27652 }
27653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027654 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027655 {
27656 return "{}";
27657 }
27658
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027659 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027660 {
27661 return "(void)";
27662 }
27663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027664 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027665 {
27666 return "{}";
27667 }
27668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027669 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027670 {
27671 return "(void)";
27672 }
27673
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027674 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027675 {
27676 return "{}";
27677 }
27678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027679 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027680 {
27681 return "(void)";
27682 }
27683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027684 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027685 {
27686 return "{}";
27687 }
27688
Mark Young0f183a82017-02-28 09:58:04 -070027689 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027690 {
27691 return "(void)";
27692 }
27693
Mark Young0f183a82017-02-28 09:58:04 -070027694 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027695 {
27696 return "{}";
27697 }
27698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027699 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027700 {
27701 return "(void)";
27702 }
27703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027704 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027705 {
27706 return "{}";
27707 }
27708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027709 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027710 {
27711 return "(void)";
27712 }
27713
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027714 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027715 {
27716 return "{}";
27717 }
27718
27719#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027720 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027721 {
27722 return "(void)";
27723 }
27724#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27725
27726#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027727 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027728 {
27729 return "{}";
27730 }
27731#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27732
27733#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027734 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027735 {
27736 return "(void)";
27737 }
27738#endif /*VK_USE_PLATFORM_MIR_KHR*/
27739
27740#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027741 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027742 {
27743 return "{}";
27744 }
27745#endif /*VK_USE_PLATFORM_MIR_KHR*/
27746
Mark Young39389872017-01-19 21:10:49 -070027747#ifdef VK_USE_PLATFORM_VI_NN
27748 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
27749 {
27750 return "(void)";
27751 }
27752#endif /*VK_USE_PLATFORM_VI_NN*/
27753
27754#ifdef VK_USE_PLATFORM_VI_NN
27755 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
27756 {
27757 return "{}";
27758 }
27759#endif /*VK_USE_PLATFORM_VI_NN*/
27760
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027761#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027762 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027763 {
27764 return "(void)";
27765 }
27766#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27767
27768#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027769 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027770 {
27771 return "{}";
27772 }
27773#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27774
27775#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027776 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027777 {
27778 return "(void)";
27779 }
27780#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27781
27782#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027783 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027784 {
27785 return "{}";
27786 }
27787#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27788
27789#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027790 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027791 {
27792 return "(void)";
27793 }
27794#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27795
27796#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027797 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027798 {
27799 return "{}";
27800 }
27801#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27802
27803#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027804 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027805 {
27806 return "(void)";
27807 }
27808#endif /*VK_USE_PLATFORM_XCB_KHR*/
27809
27810#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027811 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027812 {
27813 return "{}";
27814 }
27815#endif /*VK_USE_PLATFORM_XCB_KHR*/
27816
Mark Young0f183a82017-02-28 09:58:04 -070027817#ifdef VK_USE_PLATFORM_IOS_MVK
27818 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
27819 {
27820 return "(void)";
27821 }
27822#endif /*VK_USE_PLATFORM_IOS_MVK*/
27823
27824#ifdef VK_USE_PLATFORM_IOS_MVK
27825 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
27826 {
27827 return "{}";
27828 }
27829#endif /*VK_USE_PLATFORM_IOS_MVK*/
27830
27831#ifdef VK_USE_PLATFORM_MACOS_MVK
27832 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
27833 {
27834 return "(void)";
27835 }
27836#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27837
27838#ifdef VK_USE_PLATFORM_MACOS_MVK
27839 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
27840 {
27841 return "{}";
27842 }
27843#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27844
Mark Young39389872017-01-19 21:10:49 -070027845 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
27846 {
27847 return "(void)";
27848 }
27849
27850 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
27851 {
27852 return "{}";
27853 }
27854
Mark Young0f183a82017-02-28 09:58:04 -070027855 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
27856 {
27857 return "(void)";
27858 }
27859
27860 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
27861 {
27862 return "{}";
27863 }
27864
27865 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
27866 {
27867 return "(void)";
27868 }
27869
27870 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
27871 {
27872 return "{}";
27873 }
27874
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027875 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027876 {
27877 switch (value)
27878 {
27879 case ImageLayout::eUndefined: return "Undefined";
27880 case ImageLayout::eGeneral: return "General";
27881 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
27882 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
27883 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
27884 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
27885 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
27886 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
27887 case ImageLayout::ePreinitialized: return "Preinitialized";
27888 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
27889 default: return "invalid";
27890 }
27891 }
27892
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027893 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027894 {
27895 switch (value)
27896 {
27897 case AttachmentLoadOp::eLoad: return "Load";
27898 case AttachmentLoadOp::eClear: return "Clear";
27899 case AttachmentLoadOp::eDontCare: return "DontCare";
27900 default: return "invalid";
27901 }
27902 }
27903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027904 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027905 {
27906 switch (value)
27907 {
27908 case AttachmentStoreOp::eStore: return "Store";
27909 case AttachmentStoreOp::eDontCare: return "DontCare";
27910 default: return "invalid";
27911 }
27912 }
27913
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027914 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027915 {
27916 switch (value)
27917 {
27918 case ImageType::e1D: return "1D";
27919 case ImageType::e2D: return "2D";
27920 case ImageType::e3D: return "3D";
27921 default: return "invalid";
27922 }
27923 }
27924
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027925 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027926 {
27927 switch (value)
27928 {
27929 case ImageTiling::eOptimal: return "Optimal";
27930 case ImageTiling::eLinear: return "Linear";
27931 default: return "invalid";
27932 }
27933 }
27934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027935 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027936 {
27937 switch (value)
27938 {
27939 case ImageViewType::e1D: return "1D";
27940 case ImageViewType::e2D: return "2D";
27941 case ImageViewType::e3D: return "3D";
27942 case ImageViewType::eCube: return "Cube";
27943 case ImageViewType::e1DArray: return "1DArray";
27944 case ImageViewType::e2DArray: return "2DArray";
27945 case ImageViewType::eCubeArray: return "CubeArray";
27946 default: return "invalid";
27947 }
27948 }
27949
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027950 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027951 {
27952 switch (value)
27953 {
27954 case CommandBufferLevel::ePrimary: return "Primary";
27955 case CommandBufferLevel::eSecondary: return "Secondary";
27956 default: return "invalid";
27957 }
27958 }
27959
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027960 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027961 {
27962 switch (value)
27963 {
27964 case ComponentSwizzle::eIdentity: return "Identity";
27965 case ComponentSwizzle::eZero: return "Zero";
27966 case ComponentSwizzle::eOne: return "One";
27967 case ComponentSwizzle::eR: return "R";
27968 case ComponentSwizzle::eG: return "G";
27969 case ComponentSwizzle::eB: return "B";
27970 case ComponentSwizzle::eA: return "A";
27971 default: return "invalid";
27972 }
27973 }
27974
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027975 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027976 {
27977 switch (value)
27978 {
27979 case DescriptorType::eSampler: return "Sampler";
27980 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
27981 case DescriptorType::eSampledImage: return "SampledImage";
27982 case DescriptorType::eStorageImage: return "StorageImage";
27983 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
27984 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
27985 case DescriptorType::eUniformBuffer: return "UniformBuffer";
27986 case DescriptorType::eStorageBuffer: return "StorageBuffer";
27987 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
27988 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
27989 case DescriptorType::eInputAttachment: return "InputAttachment";
27990 default: return "invalid";
27991 }
27992 }
27993
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027994 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027995 {
27996 switch (value)
27997 {
27998 case QueryType::eOcclusion: return "Occlusion";
27999 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28000 case QueryType::eTimestamp: return "Timestamp";
28001 default: return "invalid";
28002 }
28003 }
28004
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028005 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028006 {
28007 switch (value)
28008 {
28009 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28010 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28011 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28012 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28013 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28014 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28015 default: return "invalid";
28016 }
28017 }
28018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028019 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028020 {
28021 switch (value)
28022 {
28023 case PipelineBindPoint::eGraphics: return "Graphics";
28024 case PipelineBindPoint::eCompute: return "Compute";
28025 default: return "invalid";
28026 }
28027 }
28028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028029 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028030 {
28031 switch (value)
28032 {
28033 case PipelineCacheHeaderVersion::eOne: return "One";
28034 default: return "invalid";
28035 }
28036 }
28037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028038 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028039 {
28040 switch (value)
28041 {
28042 case PrimitiveTopology::ePointList: return "PointList";
28043 case PrimitiveTopology::eLineList: return "LineList";
28044 case PrimitiveTopology::eLineStrip: return "LineStrip";
28045 case PrimitiveTopology::eTriangleList: return "TriangleList";
28046 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28047 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28048 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28049 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28050 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28051 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28052 case PrimitiveTopology::ePatchList: return "PatchList";
28053 default: return "invalid";
28054 }
28055 }
28056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028057 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028058 {
28059 switch (value)
28060 {
28061 case SharingMode::eExclusive: return "Exclusive";
28062 case SharingMode::eConcurrent: return "Concurrent";
28063 default: return "invalid";
28064 }
28065 }
28066
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028067 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028068 {
28069 switch (value)
28070 {
28071 case IndexType::eUint16: return "Uint16";
28072 case IndexType::eUint32: return "Uint32";
28073 default: return "invalid";
28074 }
28075 }
28076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028077 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028078 {
28079 switch (value)
28080 {
28081 case Filter::eNearest: return "Nearest";
28082 case Filter::eLinear: return "Linear";
28083 case Filter::eCubicIMG: return "CubicIMG";
28084 default: return "invalid";
28085 }
28086 }
28087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028088 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028089 {
28090 switch (value)
28091 {
28092 case SamplerMipmapMode::eNearest: return "Nearest";
28093 case SamplerMipmapMode::eLinear: return "Linear";
28094 default: return "invalid";
28095 }
28096 }
28097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028098 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028099 {
28100 switch (value)
28101 {
28102 case SamplerAddressMode::eRepeat: return "Repeat";
28103 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28104 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28105 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28106 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28107 default: return "invalid";
28108 }
28109 }
28110
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028111 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028112 {
28113 switch (value)
28114 {
28115 case CompareOp::eNever: return "Never";
28116 case CompareOp::eLess: return "Less";
28117 case CompareOp::eEqual: return "Equal";
28118 case CompareOp::eLessOrEqual: return "LessOrEqual";
28119 case CompareOp::eGreater: return "Greater";
28120 case CompareOp::eNotEqual: return "NotEqual";
28121 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28122 case CompareOp::eAlways: return "Always";
28123 default: return "invalid";
28124 }
28125 }
28126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028127 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028128 {
28129 switch (value)
28130 {
28131 case PolygonMode::eFill: return "Fill";
28132 case PolygonMode::eLine: return "Line";
28133 case PolygonMode::ePoint: return "Point";
28134 default: return "invalid";
28135 }
28136 }
28137
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028138 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028139 {
28140 switch (value)
28141 {
28142 case CullModeFlagBits::eNone: return "None";
28143 case CullModeFlagBits::eFront: return "Front";
28144 case CullModeFlagBits::eBack: return "Back";
28145 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28146 default: return "invalid";
28147 }
28148 }
28149
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028150 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028151 {
28152 if (!value) return "{}";
28153 std::string result;
28154 if (value & CullModeFlagBits::eNone) result += "None | ";
28155 if (value & CullModeFlagBits::eFront) result += "Front | ";
28156 if (value & CullModeFlagBits::eBack) result += "Back | ";
28157 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28158 return "{" + result.substr(0, result.size() - 3) + "}";
28159 }
28160
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028161 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028162 {
28163 switch (value)
28164 {
28165 case FrontFace::eCounterClockwise: return "CounterClockwise";
28166 case FrontFace::eClockwise: return "Clockwise";
28167 default: return "invalid";
28168 }
28169 }
28170
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028171 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028172 {
28173 switch (value)
28174 {
28175 case BlendFactor::eZero: return "Zero";
28176 case BlendFactor::eOne: return "One";
28177 case BlendFactor::eSrcColor: return "SrcColor";
28178 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28179 case BlendFactor::eDstColor: return "DstColor";
28180 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28181 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28182 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28183 case BlendFactor::eDstAlpha: return "DstAlpha";
28184 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28185 case BlendFactor::eConstantColor: return "ConstantColor";
28186 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28187 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28188 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28189 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28190 case BlendFactor::eSrc1Color: return "Src1Color";
28191 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28192 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28193 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28194 default: return "invalid";
28195 }
28196 }
28197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028198 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028199 {
28200 switch (value)
28201 {
28202 case BlendOp::eAdd: return "Add";
28203 case BlendOp::eSubtract: return "Subtract";
28204 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28205 case BlendOp::eMin: return "Min";
28206 case BlendOp::eMax: return "Max";
28207 default: return "invalid";
28208 }
28209 }
28210
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028211 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028212 {
28213 switch (value)
28214 {
28215 case StencilOp::eKeep: return "Keep";
28216 case StencilOp::eZero: return "Zero";
28217 case StencilOp::eReplace: return "Replace";
28218 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28219 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28220 case StencilOp::eInvert: return "Invert";
28221 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28222 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28223 default: return "invalid";
28224 }
28225 }
28226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028227 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028228 {
28229 switch (value)
28230 {
28231 case LogicOp::eClear: return "Clear";
28232 case LogicOp::eAnd: return "And";
28233 case LogicOp::eAndReverse: return "AndReverse";
28234 case LogicOp::eCopy: return "Copy";
28235 case LogicOp::eAndInverted: return "AndInverted";
28236 case LogicOp::eNoOp: return "NoOp";
28237 case LogicOp::eXor: return "Xor";
28238 case LogicOp::eOr: return "Or";
28239 case LogicOp::eNor: return "Nor";
28240 case LogicOp::eEquivalent: return "Equivalent";
28241 case LogicOp::eInvert: return "Invert";
28242 case LogicOp::eOrReverse: return "OrReverse";
28243 case LogicOp::eCopyInverted: return "CopyInverted";
28244 case LogicOp::eOrInverted: return "OrInverted";
28245 case LogicOp::eNand: return "Nand";
28246 case LogicOp::eSet: return "Set";
28247 default: return "invalid";
28248 }
28249 }
28250
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028251 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028252 {
28253 switch (value)
28254 {
28255 case InternalAllocationType::eExecutable: return "Executable";
28256 default: return "invalid";
28257 }
28258 }
28259
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028260 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028261 {
28262 switch (value)
28263 {
28264 case SystemAllocationScope::eCommand: return "Command";
28265 case SystemAllocationScope::eObject: return "Object";
28266 case SystemAllocationScope::eCache: return "Cache";
28267 case SystemAllocationScope::eDevice: return "Device";
28268 case SystemAllocationScope::eInstance: return "Instance";
28269 default: return "invalid";
28270 }
28271 }
28272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028273 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028274 {
28275 switch (value)
28276 {
28277 case PhysicalDeviceType::eOther: return "Other";
28278 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28279 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28280 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28281 case PhysicalDeviceType::eCpu: return "Cpu";
28282 default: return "invalid";
28283 }
28284 }
28285
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028286 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028287 {
28288 switch (value)
28289 {
28290 case VertexInputRate::eVertex: return "Vertex";
28291 case VertexInputRate::eInstance: return "Instance";
28292 default: return "invalid";
28293 }
28294 }
28295
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028296 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028297 {
28298 switch (value)
28299 {
28300 case Format::eUndefined: return "Undefined";
28301 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28302 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28303 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28304 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28305 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28306 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28307 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28308 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28309 case Format::eR8Unorm: return "R8Unorm";
28310 case Format::eR8Snorm: return "R8Snorm";
28311 case Format::eR8Uscaled: return "R8Uscaled";
28312 case Format::eR8Sscaled: return "R8Sscaled";
28313 case Format::eR8Uint: return "R8Uint";
28314 case Format::eR8Sint: return "R8Sint";
28315 case Format::eR8Srgb: return "R8Srgb";
28316 case Format::eR8G8Unorm: return "R8G8Unorm";
28317 case Format::eR8G8Snorm: return "R8G8Snorm";
28318 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28319 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28320 case Format::eR8G8Uint: return "R8G8Uint";
28321 case Format::eR8G8Sint: return "R8G8Sint";
28322 case Format::eR8G8Srgb: return "R8G8Srgb";
28323 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28324 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28325 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28326 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28327 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28328 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28329 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28330 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28331 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28332 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28333 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28334 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28335 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28336 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28337 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28338 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28339 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28340 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28341 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28342 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28343 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28344 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28345 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28346 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28347 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28348 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28349 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28350 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28351 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28352 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28353 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28354 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28355 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28356 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28357 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28358 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28359 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28360 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28361 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28362 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28363 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28364 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28365 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28366 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28367 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28368 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28369 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28370 case Format::eR16Unorm: return "R16Unorm";
28371 case Format::eR16Snorm: return "R16Snorm";
28372 case Format::eR16Uscaled: return "R16Uscaled";
28373 case Format::eR16Sscaled: return "R16Sscaled";
28374 case Format::eR16Uint: return "R16Uint";
28375 case Format::eR16Sint: return "R16Sint";
28376 case Format::eR16Sfloat: return "R16Sfloat";
28377 case Format::eR16G16Unorm: return "R16G16Unorm";
28378 case Format::eR16G16Snorm: return "R16G16Snorm";
28379 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28380 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28381 case Format::eR16G16Uint: return "R16G16Uint";
28382 case Format::eR16G16Sint: return "R16G16Sint";
28383 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28384 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28385 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28386 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28387 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28388 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28389 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28390 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28391 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28392 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28393 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28394 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28395 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28396 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28397 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28398 case Format::eR32Uint: return "R32Uint";
28399 case Format::eR32Sint: return "R32Sint";
28400 case Format::eR32Sfloat: return "R32Sfloat";
28401 case Format::eR32G32Uint: return "R32G32Uint";
28402 case Format::eR32G32Sint: return "R32G32Sint";
28403 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28404 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28405 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28406 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28407 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28408 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28409 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28410 case Format::eR64Uint: return "R64Uint";
28411 case Format::eR64Sint: return "R64Sint";
28412 case Format::eR64Sfloat: return "R64Sfloat";
28413 case Format::eR64G64Uint: return "R64G64Uint";
28414 case Format::eR64G64Sint: return "R64G64Sint";
28415 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28416 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28417 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28418 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28419 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28420 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28421 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28422 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28423 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28424 case Format::eD16Unorm: return "D16Unorm";
28425 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28426 case Format::eD32Sfloat: return "D32Sfloat";
28427 case Format::eS8Uint: return "S8Uint";
28428 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28429 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28430 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28431 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28432 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28433 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28434 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28435 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28436 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28437 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28438 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28439 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28440 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28441 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28442 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28443 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28444 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28445 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28446 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28447 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28448 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28449 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28450 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28451 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28452 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28453 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28454 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28455 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28456 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28457 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28458 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28459 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28460 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28461 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28462 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28463 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28464 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28465 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28466 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28467 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28468 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28469 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28470 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28471 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28472 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28473 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28474 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28475 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28476 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28477 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28478 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28479 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28480 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28481 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28482 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28483 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28484 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028485 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28486 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28487 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28488 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28489 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28490 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28491 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28492 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028493 default: return "invalid";
28494 }
28495 }
28496
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028497 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028498 {
28499 switch (value)
28500 {
28501 case StructureType::eApplicationInfo: return "ApplicationInfo";
28502 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28503 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28504 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28505 case StructureType::eSubmitInfo: return "SubmitInfo";
28506 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28507 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28508 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28509 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28510 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28511 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28512 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28513 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28514 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28515 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28516 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28517 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28518 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28519 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28520 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28521 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28522 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28523 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28524 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28525 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28526 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28527 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28528 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28529 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28530 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28531 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28532 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28533 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28534 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28535 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28536 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28537 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28538 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28539 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28540 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28541 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28542 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28543 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28544 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28545 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28546 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28547 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28548 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28549 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28550 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28551 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28552 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28553 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28554 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28555 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28556 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28557 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28558 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28559 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28560 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28561 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28562 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28563 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28564 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28565 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28566 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28567 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28568 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070028569 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28570 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28571 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028572 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28573 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28574 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28575 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28576 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028577 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28578 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28579 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28580 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28581 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28582 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
28583 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
28584 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
28585 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070028586 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
28587 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
28588 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
28589 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
28590 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
28591 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
28592 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
28593 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
28594 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
28595 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
28596 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
28597 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
28598 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060028599 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070028600 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070028601 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
28602 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
28603 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
28604 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
28605 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
28606 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
28607 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Young0f183a82017-02-28 09:58:04 -070028608 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
28609 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
28610 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
28611 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
28612 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
28613 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
28614 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
28615 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
28616 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
28617 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
28618 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
28619 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
28620 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
28621 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
28622 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
28623 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
28624 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
28625 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028626 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
28627 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
28628 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
28629 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
28630 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
28631 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070028632 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028633 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
28634 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
28635 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
28636 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
28637 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028638 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070028639 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
28640 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
28641 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
28642 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028643 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Young0f183a82017-02-28 09:58:04 -070028644 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
28645 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028646 default: return "invalid";
28647 }
28648 }
28649
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028650 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028651 {
28652 switch (value)
28653 {
28654 case SubpassContents::eInline: return "Inline";
28655 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
28656 default: return "invalid";
28657 }
28658 }
28659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028660 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028661 {
28662 switch (value)
28663 {
28664 case DynamicState::eViewport: return "Viewport";
28665 case DynamicState::eScissor: return "Scissor";
28666 case DynamicState::eLineWidth: return "LineWidth";
28667 case DynamicState::eDepthBias: return "DepthBias";
28668 case DynamicState::eBlendConstants: return "BlendConstants";
28669 case DynamicState::eDepthBounds: return "DepthBounds";
28670 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
28671 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
28672 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070028673 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
28674 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
28675 default: return "invalid";
28676 }
28677 }
28678
28679 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
28680 {
28681 switch (value)
28682 {
28683 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
28684 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028685 default: return "invalid";
28686 }
28687 }
28688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028689 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028690 {
28691 switch (value)
28692 {
28693 case QueueFlagBits::eGraphics: return "Graphics";
28694 case QueueFlagBits::eCompute: return "Compute";
28695 case QueueFlagBits::eTransfer: return "Transfer";
28696 case QueueFlagBits::eSparseBinding: return "SparseBinding";
28697 default: return "invalid";
28698 }
28699 }
28700
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028701 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028702 {
28703 if (!value) return "{}";
28704 std::string result;
28705 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
28706 if (value & QueueFlagBits::eCompute) result += "Compute | ";
28707 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
28708 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
28709 return "{" + result.substr(0, result.size() - 3) + "}";
28710 }
28711
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028712 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028713 {
28714 switch (value)
28715 {
28716 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
28717 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
28718 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
28719 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
28720 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
28721 default: return "invalid";
28722 }
28723 }
28724
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028725 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028726 {
28727 if (!value) return "{}";
28728 std::string result;
28729 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
28730 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
28731 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
28732 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
28733 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
28734 return "{" + result.substr(0, result.size() - 3) + "}";
28735 }
28736
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028737 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028738 {
28739 switch (value)
28740 {
28741 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070028742 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028743 default: return "invalid";
28744 }
28745 }
28746
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028747 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028748 {
28749 if (!value) return "{}";
28750 std::string result;
28751 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070028752 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028753 return "{" + result.substr(0, result.size() - 3) + "}";
28754 }
28755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028756 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028757 {
28758 switch (value)
28759 {
28760 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
28761 case AccessFlagBits::eIndexRead: return "IndexRead";
28762 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
28763 case AccessFlagBits::eUniformRead: return "UniformRead";
28764 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
28765 case AccessFlagBits::eShaderRead: return "ShaderRead";
28766 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
28767 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
28768 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
28769 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
28770 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
28771 case AccessFlagBits::eTransferRead: return "TransferRead";
28772 case AccessFlagBits::eTransferWrite: return "TransferWrite";
28773 case AccessFlagBits::eHostRead: return "HostRead";
28774 case AccessFlagBits::eHostWrite: return "HostWrite";
28775 case AccessFlagBits::eMemoryRead: return "MemoryRead";
28776 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028777 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
28778 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028779 default: return "invalid";
28780 }
28781 }
28782
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028783 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028784 {
28785 if (!value) return "{}";
28786 std::string result;
28787 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
28788 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
28789 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
28790 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
28791 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
28792 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
28793 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
28794 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
28795 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
28796 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
28797 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
28798 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
28799 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
28800 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
28801 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
28802 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
28803 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028804 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
28805 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028806 return "{" + result.substr(0, result.size() - 3) + "}";
28807 }
28808
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028809 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028810 {
28811 switch (value)
28812 {
28813 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
28814 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
28815 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
28816 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
28817 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
28818 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
28819 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
28820 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
28821 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
28822 default: return "invalid";
28823 }
28824 }
28825
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028826 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028827 {
28828 if (!value) return "{}";
28829 std::string result;
28830 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28831 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
28832 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
28833 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
28834 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
28835 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
28836 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
28837 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
28838 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
28839 return "{" + result.substr(0, result.size() - 3) + "}";
28840 }
28841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028842 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028843 {
28844 switch (value)
28845 {
28846 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
28847 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
28848 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
28849 default: return "invalid";
28850 }
28851 }
28852
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028853 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028854 {
28855 if (!value) return "{}";
28856 std::string result;
28857 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28858 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28859 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28860 return "{" + result.substr(0, result.size() - 3) + "}";
28861 }
28862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028863 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028864 {
28865 switch (value)
28866 {
28867 case ShaderStageFlagBits::eVertex: return "Vertex";
28868 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
28869 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
28870 case ShaderStageFlagBits::eGeometry: return "Geometry";
28871 case ShaderStageFlagBits::eFragment: return "Fragment";
28872 case ShaderStageFlagBits::eCompute: return "Compute";
28873 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
28874 case ShaderStageFlagBits::eAll: return "All";
28875 default: return "invalid";
28876 }
28877 }
28878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028879 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028880 {
28881 if (!value) return "{}";
28882 std::string result;
28883 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
28884 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
28885 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
28886 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
28887 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
28888 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
28889 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
28890 if (value & ShaderStageFlagBits::eAll) result += "All | ";
28891 return "{" + result.substr(0, result.size() - 3) + "}";
28892 }
28893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028894 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028895 {
28896 switch (value)
28897 {
28898 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
28899 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
28900 case ImageUsageFlagBits::eSampled: return "Sampled";
28901 case ImageUsageFlagBits::eStorage: return "Storage";
28902 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
28903 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
28904 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
28905 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
28906 default: return "invalid";
28907 }
28908 }
28909
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028910 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028911 {
28912 if (!value) return "{}";
28913 std::string result;
28914 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28915 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
28916 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
28917 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
28918 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
28919 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
28920 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
28921 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
28922 return "{" + result.substr(0, result.size() - 3) + "}";
28923 }
28924
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028925 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028926 {
28927 switch (value)
28928 {
28929 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
28930 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
28931 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
28932 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
28933 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070028934 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070028935 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028936 default: return "invalid";
28937 }
28938 }
28939
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028940 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028941 {
28942 if (!value) return "{}";
28943 std::string result;
28944 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28945 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28946 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28947 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
28948 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070028949 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070028950 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028951 return "{" + result.substr(0, result.size() - 3) + "}";
28952 }
28953
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028954 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028955 {
28956 switch (value)
28957 {
28958 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
28959 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
28960 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070028961 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
28962 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028963 default: return "invalid";
28964 }
28965 }
28966
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028967 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028968 {
28969 if (!value) return "{}";
28970 std::string result;
28971 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
28972 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
28973 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070028974 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
28975 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028976 return "{" + result.substr(0, result.size() - 3) + "}";
28977 }
28978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028979 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028980 {
28981 switch (value)
28982 {
28983 case ColorComponentFlagBits::eR: return "R";
28984 case ColorComponentFlagBits::eG: return "G";
28985 case ColorComponentFlagBits::eB: return "B";
28986 case ColorComponentFlagBits::eA: return "A";
28987 default: return "invalid";
28988 }
28989 }
28990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028991 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028992 {
28993 if (!value) return "{}";
28994 std::string result;
28995 if (value & ColorComponentFlagBits::eR) result += "R | ";
28996 if (value & ColorComponentFlagBits::eG) result += "G | ";
28997 if (value & ColorComponentFlagBits::eB) result += "B | ";
28998 if (value & ColorComponentFlagBits::eA) result += "A | ";
28999 return "{" + result.substr(0, result.size() - 3) + "}";
29000 }
29001
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029002 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029003 {
29004 switch (value)
29005 {
29006 case FenceCreateFlagBits::eSignaled: return "Signaled";
29007 default: return "invalid";
29008 }
29009 }
29010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029011 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029012 {
29013 if (!value) return "{}";
29014 std::string result;
29015 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29016 return "{" + result.substr(0, result.size() - 3) + "}";
29017 }
29018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029019 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029020 {
29021 switch (value)
29022 {
29023 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29024 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29025 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29026 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29027 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29028 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29029 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29030 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29031 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29032 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29033 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29034 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29035 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29036 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029037 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29038 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029039 default: return "invalid";
29040 }
29041 }
29042
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029043 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029044 {
29045 if (!value) return "{}";
29046 std::string result;
29047 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29048 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29049 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29050 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29051 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29052 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29053 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29054 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29055 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29056 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29057 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29058 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29059 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29060 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029061 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29062 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029063 return "{" + result.substr(0, result.size() - 3) + "}";
29064 }
29065
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029066 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029067 {
29068 switch (value)
29069 {
29070 case QueryControlFlagBits::ePrecise: return "Precise";
29071 default: return "invalid";
29072 }
29073 }
29074
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029075 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029076 {
29077 if (!value) return "{}";
29078 std::string result;
29079 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29080 return "{" + result.substr(0, result.size() - 3) + "}";
29081 }
29082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029083 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029084 {
29085 switch (value)
29086 {
29087 case QueryResultFlagBits::e64: return "64";
29088 case QueryResultFlagBits::eWait: return "Wait";
29089 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29090 case QueryResultFlagBits::ePartial: return "Partial";
29091 default: return "invalid";
29092 }
29093 }
29094
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029095 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029096 {
29097 if (!value) return "{}";
29098 std::string result;
29099 if (value & QueryResultFlagBits::e64) result += "64 | ";
29100 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29101 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29102 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29103 return "{" + result.substr(0, result.size() - 3) + "}";
29104 }
29105
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029106 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029107 {
29108 switch (value)
29109 {
29110 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29111 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29112 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29113 default: return "invalid";
29114 }
29115 }
29116
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029117 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029118 {
29119 if (!value) return "{}";
29120 std::string result;
29121 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29122 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29123 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29124 return "{" + result.substr(0, result.size() - 3) + "}";
29125 }
29126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029127 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029128 {
29129 switch (value)
29130 {
29131 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29132 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29133 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29134 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29135 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29136 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29137 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29138 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29139 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29140 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29141 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29142 default: return "invalid";
29143 }
29144 }
29145
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029146 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029147 {
29148 if (!value) return "{}";
29149 std::string result;
29150 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29151 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29152 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29153 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29154 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29155 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29156 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29157 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29158 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29159 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29160 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29161 return "{" + result.substr(0, result.size() - 3) + "}";
29162 }
29163
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029164 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029165 {
29166 switch (value)
29167 {
29168 case ImageAspectFlagBits::eColor: return "Color";
29169 case ImageAspectFlagBits::eDepth: return "Depth";
29170 case ImageAspectFlagBits::eStencil: return "Stencil";
29171 case ImageAspectFlagBits::eMetadata: return "Metadata";
29172 default: return "invalid";
29173 }
29174 }
29175
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029176 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029177 {
29178 if (!value) return "{}";
29179 std::string result;
29180 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29181 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29182 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29183 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29184 return "{" + result.substr(0, result.size() - 3) + "}";
29185 }
29186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029187 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029188 {
29189 switch (value)
29190 {
29191 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29192 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29193 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29194 default: return "invalid";
29195 }
29196 }
29197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029198 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029199 {
29200 if (!value) return "{}";
29201 std::string result;
29202 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29203 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29204 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29205 return "{" + result.substr(0, result.size() - 3) + "}";
29206 }
29207
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029208 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029209 {
29210 switch (value)
29211 {
29212 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29213 default: return "invalid";
29214 }
29215 }
29216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029217 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029218 {
29219 if (!value) return "{}";
29220 std::string result;
29221 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29222 return "{" + result.substr(0, result.size() - 3) + "}";
29223 }
29224
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029225 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029226 {
29227 switch (value)
29228 {
29229 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29230 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29231 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29232 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29233 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29234 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29235 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29236 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29237 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29238 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29239 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29240 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29241 case PipelineStageFlagBits::eTransfer: return "Transfer";
29242 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29243 case PipelineStageFlagBits::eHost: return "Host";
29244 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29245 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029246 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029247 default: return "invalid";
29248 }
29249 }
29250
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029251 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029252 {
29253 if (!value) return "{}";
29254 std::string result;
29255 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29256 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29257 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29258 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29259 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29260 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29261 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29262 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29263 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29264 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29265 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29266 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29267 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29268 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29269 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29270 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29271 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029272 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029273 return "{" + result.substr(0, result.size() - 3) + "}";
29274 }
29275
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029276 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029277 {
29278 switch (value)
29279 {
29280 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29281 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29282 default: return "invalid";
29283 }
29284 }
29285
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029286 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029287 {
29288 if (!value) return "{}";
29289 std::string result;
29290 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29291 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29292 return "{" + result.substr(0, result.size() - 3) + "}";
29293 }
29294
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029295 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029296 {
29297 switch (value)
29298 {
29299 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29300 default: return "invalid";
29301 }
29302 }
29303
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029304 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029305 {
29306 if (!value) return "{}";
29307 std::string result;
29308 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29309 return "{" + result.substr(0, result.size() - 3) + "}";
29310 }
29311
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029312 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029313 {
29314 switch (value)
29315 {
29316 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29317 default: return "invalid";
29318 }
29319 }
29320
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029321 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029322 {
29323 if (!value) return "{}";
29324 std::string result;
29325 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29326 return "{" + result.substr(0, result.size() - 3) + "}";
29327 }
29328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029329 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029330 {
29331 switch (value)
29332 {
29333 case SampleCountFlagBits::e1: return "1";
29334 case SampleCountFlagBits::e2: return "2";
29335 case SampleCountFlagBits::e4: return "4";
29336 case SampleCountFlagBits::e8: return "8";
29337 case SampleCountFlagBits::e16: return "16";
29338 case SampleCountFlagBits::e32: return "32";
29339 case SampleCountFlagBits::e64: return "64";
29340 default: return "invalid";
29341 }
29342 }
29343
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029344 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029345 {
29346 if (!value) return "{}";
29347 std::string result;
29348 if (value & SampleCountFlagBits::e1) result += "1 | ";
29349 if (value & SampleCountFlagBits::e2) result += "2 | ";
29350 if (value & SampleCountFlagBits::e4) result += "4 | ";
29351 if (value & SampleCountFlagBits::e8) result += "8 | ";
29352 if (value & SampleCountFlagBits::e16) result += "16 | ";
29353 if (value & SampleCountFlagBits::e32) result += "32 | ";
29354 if (value & SampleCountFlagBits::e64) result += "64 | ";
29355 return "{" + result.substr(0, result.size() - 3) + "}";
29356 }
29357
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029358 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029359 {
29360 switch (value)
29361 {
29362 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29363 default: return "invalid";
29364 }
29365 }
29366
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029367 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029368 {
29369 if (!value) return "{}";
29370 std::string result;
29371 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29372 return "{" + result.substr(0, result.size() - 3) + "}";
29373 }
29374
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029375 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029376 {
29377 switch (value)
29378 {
29379 case StencilFaceFlagBits::eFront: return "Front";
29380 case StencilFaceFlagBits::eBack: return "Back";
29381 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29382 default: return "invalid";
29383 }
29384 }
29385
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029386 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029387 {
29388 if (!value) return "{}";
29389 std::string result;
29390 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29391 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29392 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29393 return "{" + result.substr(0, result.size() - 3) + "}";
29394 }
29395
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029396 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029397 {
29398 switch (value)
29399 {
29400 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29401 default: return "invalid";
29402 }
29403 }
29404
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029405 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029406 {
29407 if (!value) return "{}";
29408 std::string result;
29409 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29410 return "{" + result.substr(0, result.size() - 3) + "}";
29411 }
29412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029413 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029414 {
29415 switch (value)
29416 {
29417 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029418 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29419 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029420 default: return "invalid";
29421 }
29422 }
29423
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029424 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029425 {
29426 if (!value) return "{}";
29427 std::string result;
29428 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029429 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29430 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029431 return "{" + result.substr(0, result.size() - 3) + "}";
29432 }
29433
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029434 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029435 {
29436 switch (value)
29437 {
29438 case PresentModeKHR::eImmediate: return "Immediate";
29439 case PresentModeKHR::eMailbox: return "Mailbox";
29440 case PresentModeKHR::eFifo: return "Fifo";
29441 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
29442 default: return "invalid";
29443 }
29444 }
29445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029446 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029447 {
29448 switch (value)
29449 {
29450 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
29451 default: return "invalid";
29452 }
29453 }
29454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029455 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029456 {
29457 switch (value)
29458 {
29459 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29460 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29461 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29462 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29463 default: return "invalid";
29464 }
29465 }
29466
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029467 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029468 {
29469 if (!value) return "{}";
29470 std::string result;
29471 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29472 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29473 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29474 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29475 return "{" + result.substr(0, result.size() - 3) + "}";
29476 }
29477
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029478 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029479 {
29480 switch (value)
29481 {
29482 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29483 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29484 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29485 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29486 default: return "invalid";
29487 }
29488 }
29489
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029490 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029491 {
29492 if (!value) return "{}";
29493 std::string result;
29494 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29495 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29496 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29497 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29498 return "{" + result.substr(0, result.size() - 3) + "}";
29499 }
29500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029501 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029502 {
29503 switch (value)
29504 {
29505 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29506 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29507 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29508 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29509 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29510 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29511 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29512 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29513 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29514 default: return "invalid";
29515 }
29516 }
29517
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029518 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029519 {
29520 if (!value) return "{}";
29521 std::string result;
29522 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
29523 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
29524 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
29525 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
29526 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
29527 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
29528 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
29529 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
29530 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
29531 return "{" + result.substr(0, result.size() - 3) + "}";
29532 }
29533
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029534 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029535 {
29536 switch (value)
29537 {
29538 case DebugReportFlagBitsEXT::eInformation: return "Information";
29539 case DebugReportFlagBitsEXT::eWarning: return "Warning";
29540 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
29541 case DebugReportFlagBitsEXT::eError: return "Error";
29542 case DebugReportFlagBitsEXT::eDebug: return "Debug";
29543 default: return "invalid";
29544 }
29545 }
29546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029547 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029548 {
29549 if (!value) return "{}";
29550 std::string result;
29551 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
29552 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
29553 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
29554 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
29555 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
29556 return "{" + result.substr(0, result.size() - 3) + "}";
29557 }
29558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029559 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029560 {
29561 switch (value)
29562 {
29563 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
29564 case DebugReportObjectTypeEXT::eInstance: return "Instance";
29565 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
29566 case DebugReportObjectTypeEXT::eDevice: return "Device";
29567 case DebugReportObjectTypeEXT::eQueue: return "Queue";
29568 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
29569 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
29570 case DebugReportObjectTypeEXT::eFence: return "Fence";
29571 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
29572 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
29573 case DebugReportObjectTypeEXT::eImage: return "Image";
29574 case DebugReportObjectTypeEXT::eEvent: return "Event";
29575 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
29576 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
29577 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
29578 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
29579 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
29580 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
29581 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
29582 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
29583 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
29584 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
29585 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
29586 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
29587 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
29588 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
29589 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
29590 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
29591 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029592 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
29593 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
29594 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
29595 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029596 default: return "invalid";
29597 }
29598 }
29599
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029600 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029601 {
29602 switch (value)
29603 {
29604 case DebugReportErrorEXT::eNone: return "None";
29605 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
29606 default: return "invalid";
29607 }
29608 }
29609
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029610 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029611 {
29612 switch (value)
29613 {
29614 case RasterizationOrderAMD::eStrict: return "Strict";
29615 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
29616 default: return "invalid";
29617 }
29618 }
29619
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029620 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029621 {
29622 switch (value)
29623 {
29624 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
29625 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29626 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
29627 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
29628 default: return "invalid";
29629 }
29630 }
29631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029632 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029633 {
29634 if (!value) return "{}";
29635 std::string result;
29636 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
29637 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29638 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
29639 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
29640 return "{" + result.substr(0, result.size() - 3) + "}";
29641 }
29642
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029643 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029644 {
29645 switch (value)
29646 {
29647 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
29648 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
29649 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
29650 default: return "invalid";
29651 }
29652 }
29653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029654 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029655 {
29656 if (!value) return "{}";
29657 std::string result;
29658 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
29659 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
29660 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
29661 return "{" + result.substr(0, result.size() - 3) + "}";
29662 }
29663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029664 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060029665 {
29666 switch (value)
29667 {
29668 case ValidationCheckEXT::eAll: return "All";
29669 default: return "invalid";
29670 }
29671 }
29672
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029673 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
29674 {
29675 switch (value)
29676 {
29677 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
29678 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
29679 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
29680 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
29681 default: return "invalid";
29682 }
29683 }
29684
29685 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
29686 {
29687 if (!value) return "{}";
29688 std::string result;
29689 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
29690 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
29691 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
29692 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
29693 return "{" + result.substr(0, result.size() - 3) + "}";
29694 }
29695
29696 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
29697 {
29698 switch (value)
29699 {
29700 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
29701 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
29702 default: return "invalid";
29703 }
29704 }
29705
29706 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
29707 {
29708 if (!value) return "{}";
29709 std::string result;
29710 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
29711 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
29712 return "{" + result.substr(0, result.size() - 3) + "}";
29713 }
29714
29715 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
29716 {
29717 switch (value)
29718 {
29719 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
29720 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
29721 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
29722 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
29723 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
29724 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
29725 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
29726 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
29727 default: return "invalid";
29728 }
29729 }
29730
29731 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
29732 {
29733 switch (value)
29734 {
29735 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
29736 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
29737 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
29738 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
29739 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
29740 default: return "invalid";
29741 }
29742 }
29743
Mark Young0f183a82017-02-28 09:58:04 -070029744 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
29745 {
29746 switch (value)
29747 {
29748 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
29749 default: return "invalid";
29750 }
29751 }
29752
29753 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
29754 {
29755 if (!value) return "{}";
29756 std::string result;
29757 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
29758 return "{" + result.substr(0, result.size() - 3) + "}";
29759 }
29760
29761 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
29762 {
29763 switch (value)
29764 {
29765 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29766 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29767 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29768 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
29769 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
29770 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
29771 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
29772 default: return "invalid";
29773 }
29774 }
29775
29776 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
29777 {
29778 if (!value) return "{}";
29779 std::string result;
29780 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29781 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29782 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29783 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
29784 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
29785 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
29786 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
29787 return "{" + result.substr(0, result.size() - 3) + "}";
29788 }
29789
29790 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
29791 {
29792 switch (value)
29793 {
29794 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
29795 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
29796 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
29797 default: return "invalid";
29798 }
29799 }
29800
29801 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
29802 {
29803 if (!value) return "{}";
29804 std::string result;
29805 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
29806 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29807 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29808 return "{" + result.substr(0, result.size() - 3) + "}";
29809 }
29810
29811 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
29812 {
29813 switch (value)
29814 {
29815 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29816 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29817 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29818 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
29819 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
29820 default: return "invalid";
29821 }
29822 }
29823
29824 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
29825 {
29826 if (!value) return "{}";
29827 std::string result;
29828 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29829 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29830 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29831 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
29832 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
29833 return "{" + result.substr(0, result.size() - 3) + "}";
29834 }
29835
29836 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
29837 {
29838 switch (value)
29839 {
29840 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
29841 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
29842 default: return "invalid";
29843 }
29844 }
29845
29846 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
29847 {
29848 if (!value) return "{}";
29849 std::string result;
29850 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29851 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29852 return "{" + result.substr(0, result.size() - 3) + "}";
29853 }
29854
Mark Young39389872017-01-19 21:10:49 -070029855 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
29856 {
29857 switch (value)
29858 {
29859 case SurfaceCounterFlagBitsEXT::eVblankExt: return "VblankExt";
29860 default: return "invalid";
29861 }
29862 }
29863
29864 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
29865 {
29866 if (!value) return "{}";
29867 std::string result;
29868 if (value & SurfaceCounterFlagBitsEXT::eVblankExt) result += "VblankExt | ";
29869 return "{" + result.substr(0, result.size() - 3) + "}";
29870 }
29871
29872 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
29873 {
29874 switch (value)
29875 {
29876 case DisplayPowerStateEXT::eOff: return "Off";
29877 case DisplayPowerStateEXT::eSuspend: return "Suspend";
29878 case DisplayPowerStateEXT::eOn: return "On";
29879 default: return "invalid";
29880 }
29881 }
29882
29883 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
29884 {
29885 switch (value)
29886 {
29887 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
29888 default: return "invalid";
29889 }
29890 }
29891
29892 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
29893 {
29894 switch (value)
29895 {
29896 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
29897 default: return "invalid";
29898 }
29899 }
29900
Mark Young0f183a82017-02-28 09:58:04 -070029901 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
29902 {
29903 switch (value)
29904 {
29905 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
29906 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
29907 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
29908 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
29909 default: return "invalid";
29910 }
29911 }
29912
29913 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
29914 {
29915 if (!value) return "{}";
29916 std::string result;
29917 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
29918 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
29919 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
29920 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
29921 return "{" + result.substr(0, result.size() - 3) + "}";
29922 }
29923
29924 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
29925 {
29926 switch (value)
29927 {
29928 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
29929 default: return "invalid";
29930 }
29931 }
29932
29933 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
29934 {
29935 if (!value) return "{}";
29936 std::string result;
29937 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
29938 return "{" + result.substr(0, result.size() - 3) + "}";
29939 }
29940
29941 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
29942 {
29943 switch (value)
29944 {
29945 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
29946 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
29947 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
29948 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
29949 default: return "invalid";
29950 }
29951 }
29952
29953 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
29954 {
29955 if (!value) return "{}";
29956 std::string result;
29957 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
29958 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
29959 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
29960 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
29961 return "{" + result.substr(0, result.size() - 3) + "}";
29962 }
29963
29964 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
29965 {
29966 switch (value)
29967 {
29968 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
29969 default: return "invalid";
29970 }
29971 }
29972
29973 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
29974 {
29975 if (!value) return "{}";
29976 std::string result;
29977 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
29978 return "{" + result.substr(0, result.size() - 3) + "}";
29979 }
29980
29981 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
29982 {
29983 switch (value)
29984 {
29985 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
29986 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
29987 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
29988 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
29989 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
29990 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
29991 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
29992 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
29993 default: return "invalid";
29994 }
29995 }
29996
29997 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
29998 {
29999 switch (value)
30000 {
30001 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30002 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30003 default: return "invalid";
30004 }
30005 }
30006
30007 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30008 {
30009 switch (value)
30010 {
30011 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30012 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30013 default: return "invalid";
30014 }
30015 }
30016
30017 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30018 {
30019 if (!value) return "{}";
30020 std::string result;
30021 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30022 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30023 return "{" + result.substr(0, result.size() - 3) + "}";
30024 }
30025
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030026} // namespace vk
30027
30028#endif