blob: 26bffeb43dc74570fed25f2e7c9c9b1f97b298a8 [file] [log] [blame]
Alexis Hetu4bbff9e2018-08-30 14:49:34 -04001// Copyright (c) 2015-2018 The Khronos Group Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// ---- Exceptions to the Apache 2.0 License: ----
16//
17// As an exception, if you use this Software to generate code and portions of
18// this Software are embedded into the generated code as a result, you may
19// redistribute such product without providing attribution as would otherwise
20// be required by Sections 4(a), 4(b) and 4(d) of the License.
21//
22// In addition, if you combine or link code generated by this Software with
23// software that is licensed under the GPLv2 or the LGPL v2.0 or 2.1
24// ("`Combined Software`") and if a court of competent jurisdiction determines
25// that the patent provision (Section 3), the indemnity provision (Section 9)
26// or other Section of the License conflicts with the conditions of the
27// applicable GPL or LGPL license, you may retroactively and prospectively
28// choose to deem waived or otherwise exclude such Section(s) of the License,
29// but only in their entirety and only with respect to the Combined Software.
30//
31
32// This header is generated from the Khronos Vulkan XML API Registry.
33
34#ifndef VULKAN_HPP
35#define VULKAN_HPP
36
37#include <algorithm>
38#include <array>
39#include <cstddef>
40#include <cstdint>
41#include <cstring>
42#include <initializer_list>
43#include <string>
44#include <system_error>
45#include <tuple>
46#include <type_traits>
47#include <vulkan/vulkan.h>
48#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
49# include <memory>
50# include <vector>
51#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
52#if !defined(VULKAN_HPP_ASSERT)
53# include <cassert>
54# define VULKAN_HPP_ASSERT assert
55#endif
56
57// <tuple> includes <sys/sysmacros.h> through some other header
58// this results in major(x) being resolved to gnu_dev_major(x)
59// which is an expression in a constructor initializer list.
60#if defined(major)
61 #undef major
62#endif
63#if defined(minor)
64 #undef minor
65#endif
66
67// Windows defines MemoryBarrier which is deprecated and collides
68// with the vk::MemoryBarrier struct.
69#ifdef MemoryBarrier
70 #undef MemoryBarrier
71#endif
72
73static_assert( VK_HEADER_VERSION == 83 , "Wrong VK_HEADER_VERSION!" );
74
75// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
76// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
77#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
78# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
79# define VULKAN_HPP_TYPESAFE_CONVERSION
80# endif
81#endif
82
83#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
84# if defined(__clang__)
85# if __has_feature(cxx_unrestricted_unions)
86# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
87# endif
88# elif defined(__GNUC__)
89# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
90# if 40600 <= GCC_VERSION
91# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
92# endif
93# elif defined(_MSC_VER)
94# if 1900 <= _MSC_VER
95# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
96# endif
97# endif
98#endif
99
100#if !defined(VULKAN_HPP_INLINE)
101# if defined(__clang___)
102# if __has_attribute(always_inline)
103# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
104# else
105# define VULKAN_HPP_INLINE inline
106# endif
107# elif defined(__GNUC__)
108# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
109# elif defined(_MSC_VER)
110# define VULKAN_HPP_INLINE inline
111# else
112# define VULKAN_HPP_INLINE inline
113# endif
114#endif
115
116#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
117# define VULKAN_HPP_TYPESAFE_EXPLICIT
118#else
119# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
120#endif
121
122#if defined(_MSC_VER) && (_MSC_VER <= 1800)
123# define VULKAN_HPP_CONSTEXPR
124#else
125# define VULKAN_HPP_CONSTEXPR constexpr
126#endif
127
128
129#if !defined(VULKAN_HPP_NAMESPACE)
130#define VULKAN_HPP_NAMESPACE vk
131#endif
132
133#define VULKAN_HPP_STRINGIFY2(text) #text
134#define VULKAN_HPP_STRINGIFY(text) VULKAN_HPP_STRINGIFY2(text)
135#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY(VULKAN_HPP_NAMESPACE)
136
137namespace VULKAN_HPP_NAMESPACE
138{
139
140 template <typename FlagBitsType> struct FlagTraits
141 {
142 enum { allFlags = 0 };
143 };
144
145 template <typename BitType, typename MaskType = VkFlags>
146 class Flags
147 {
148 public:
149 VULKAN_HPP_CONSTEXPR Flags()
150 : m_mask(0)
151 {
152 }
153
154 Flags(BitType bit)
155 : m_mask(static_cast<MaskType>(bit))
156 {
157 }
158
159 Flags(Flags<BitType> const& rhs)
160 : m_mask(rhs.m_mask)
161 {
162 }
163
164 explicit Flags(MaskType flags)
165 : m_mask(flags)
166 {
167 }
168
169 Flags<BitType> & operator=(Flags<BitType> const& rhs)
170 {
171 m_mask = rhs.m_mask;
172 return *this;
173 }
174
175 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
176 {
177 m_mask |= rhs.m_mask;
178 return *this;
179 }
180
181 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
182 {
183 m_mask &= rhs.m_mask;
184 return *this;
185 }
186
187 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
188 {
189 m_mask ^= rhs.m_mask;
190 return *this;
191 }
192
193 Flags<BitType> operator|(Flags<BitType> const& rhs) const
194 {
195 Flags<BitType> result(*this);
196 result |= rhs;
197 return result;
198 }
199
200 Flags<BitType> operator&(Flags<BitType> const& rhs) const
201 {
202 Flags<BitType> result(*this);
203 result &= rhs;
204 return result;
205 }
206
207 Flags<BitType> operator^(Flags<BitType> const& rhs) const
208 {
209 Flags<BitType> result(*this);
210 result ^= rhs;
211 return result;
212 }
213
214 bool operator!() const
215 {
216 return !m_mask;
217 }
218
219 Flags<BitType> operator~() const
220 {
221 Flags<BitType> result(*this);
222 result.m_mask ^= FlagTraits<BitType>::allFlags;
223 return result;
224 }
225
226 bool operator==(Flags<BitType> const& rhs) const
227 {
228 return m_mask == rhs.m_mask;
229 }
230
231 bool operator!=(Flags<BitType> const& rhs) const
232 {
233 return m_mask != rhs.m_mask;
234 }
235
236 explicit operator bool() const
237 {
238 return !!m_mask;
239 }
240
241 explicit operator MaskType() const
242 {
243 return m_mask;
244 }
245
246 private:
247 MaskType m_mask;
248 };
249
250 template <typename BitType>
251 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
252 {
253 return flags | bit;
254 }
255
256 template <typename BitType>
257 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
258 {
259 return flags & bit;
260 }
261
262 template <typename BitType>
263 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
264 {
265 return flags ^ bit;
266 }
267
268
269 template <typename RefType>
270 class Optional
271 {
272 public:
273 Optional(RefType & reference) { m_ptr = &reference; }
274 Optional(RefType * ptr) { m_ptr = ptr; }
275 Optional(std::nullptr_t) { m_ptr = nullptr; }
276
277 operator RefType*() const { return m_ptr; }
278 RefType const* operator->() const { return m_ptr; }
279 explicit operator bool() const { return !!m_ptr; }
280
281 private:
282 RefType *m_ptr;
283 };
284
285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
286 template <typename T>
287 class ArrayProxy
288 {
289 public:
290 VULKAN_HPP_CONSTEXPR ArrayProxy(std::nullptr_t)
291 : m_count(0)
292 , m_ptr(nullptr)
293 {}
294
295 ArrayProxy(T & ptr)
296 : m_count(1)
297 , m_ptr(&ptr)
298 {}
299
300 ArrayProxy(uint32_t count, T * ptr)
301 : m_count(count)
302 , m_ptr(ptr)
303 {}
304
305 template <size_t N>
306 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
307 : m_count(N)
308 , m_ptr(data.data())
309 {}
310
311 template <size_t N>
312 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
313 : m_count(N)
314 , m_ptr(data.data())
315 {}
316
317 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
318 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
319 : m_count(static_cast<uint32_t>(data.size()))
320 , m_ptr(data.data())
321 {}
322
323 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
324 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
325 : m_count(static_cast<uint32_t>(data.size()))
326 , m_ptr(data.data())
327 {}
328
329 ArrayProxy(std::initializer_list<T> const& data)
330 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
331 , m_ptr(data.begin())
332 {}
333
334 const T * begin() const
335 {
336 return m_ptr;
337 }
338
339 const T * end() const
340 {
341 return m_ptr + m_count;
342 }
343
344 const T & front() const
345 {
346 VULKAN_HPP_ASSERT(m_count && m_ptr);
347 return *m_ptr;
348 }
349
350 const T & back() const
351 {
352 VULKAN_HPP_ASSERT(m_count && m_ptr);
353 return *(m_ptr + m_count - 1);
354 }
355
356 bool empty() const
357 {
358 return (m_count == 0);
359 }
360
361 uint32_t size() const
362 {
363 return m_count;
364 }
365
366 T * data() const
367 {
368 return m_ptr;
369 }
370
371 private:
372 uint32_t m_count;
373 T * m_ptr;
374 };
375#endif
376
377#ifndef VULKAN_HPP_NO_SMART_HANDLE
378
379 template <typename Type, typename Dispatch> class UniqueHandleTraits;
380
381 template <typename Type, typename Dispatch>
382 class UniqueHandle : public UniqueHandleTraits<Type,Dispatch>::deleter
383 {
384 private:
385 using Deleter = typename UniqueHandleTraits<Type,Dispatch>::deleter;
386 public:
387 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
388 : Deleter( deleter)
389 , m_value( value )
390 {}
391
392 UniqueHandle( UniqueHandle const& ) = delete;
393
394 UniqueHandle( UniqueHandle && other )
395 : Deleter( std::move( static_cast<Deleter&>( other ) ) )
396 , m_value( other.release() )
397 {}
398
399 ~UniqueHandle()
400 {
401 if ( m_value ) this->destroy( m_value );
402 }
403
404 UniqueHandle & operator=( UniqueHandle const& ) = delete;
405
406 UniqueHandle & operator=( UniqueHandle && other )
407 {
408 reset( other.release() );
409 *static_cast<Deleter*>(this) = std::move( static_cast<Deleter&>(other) );
410 return *this;
411 }
412
413 explicit operator bool() const
414 {
415 return m_value.operator bool();
416 }
417
418 Type const* operator->() const
419 {
420 return &m_value;
421 }
422
423 Type * operator->()
424 {
425 return &m_value;
426 }
427
428 Type const& operator*() const
429 {
430 return m_value;
431 }
432
433 Type & operator*()
434 {
435 return m_value;
436 }
437
438 const Type & get() const
439 {
440 return m_value;
441 }
442
443 Type & get()
444 {
445 return m_value;
446 }
447
448 void reset( Type const& value = Type() )
449 {
450 if ( m_value != value )
451 {
452 if ( m_value ) this->destroy( m_value );
453 m_value = value;
454 }
455 }
456
457 Type release()
458 {
459 Type value = m_value;
460 m_value = nullptr;
461 return value;
462 }
463
464 void swap( UniqueHandle<Type,Dispatch> & rhs )
465 {
466 std::swap(m_value, rhs.m_value);
467 std::swap(static_cast<Deleter&>(*this), static_cast<Deleter&>(rhs));
468 }
469
470 private:
471 Type m_value;
472 };
473
474 template <typename Type, typename Dispatch>
475 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Dispatch> & lhs, UniqueHandle<Type,Dispatch> & rhs )
476 {
477 lhs.swap( rhs );
478 }
479#endif
480
481
482 template <typename X, typename Y> struct isStructureChainValid { enum { value = false }; };
483
484 template <class Element>
485 class StructureChainElement
486 {
487 public:
488 explicit operator Element&() { return value; }
489 explicit operator const Element&() const { return value; }
490 private:
491 Element value;
492 };
493
494 template<typename ...StructureElements>
495 class StructureChain : private StructureChainElement<StructureElements>...
496 {
497 public:
498 StructureChain()
499 {
500 link<StructureElements...>();
501 }
502
503 StructureChain(StructureChain const &rhs)
504 {
505 linkAndCopy<StructureElements...>(rhs);
506 }
507
508 StructureChain(StructureElements const &... elems)
509 {
510 linkAndCopyElements<StructureElements...>(elems...);
511 }
512
513 StructureChain& operator=(StructureChain const &rhs)
514 {
515 linkAndCopy<StructureElements...>(rhs);
516 return *this;
517 }
518
519 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
520
521 private:
522 template<typename X>
523 void link()
524 {
525 }
526
527 template<typename X, typename Y, typename ...Z>
528 void link()
529 {
530 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
531 X& x = static_cast<X&>(*this);
532 Y& y = static_cast<Y&>(*this);
533 x.pNext = &y;
534 link<Y, Z...>();
535 }
536
537 template<typename X>
538 void linkAndCopy(StructureChain const &rhs)
539 {
540 static_cast<X&>(*this) = static_cast<X const &>(rhs);
541 }
542
543 template<typename X, typename Y, typename ...Z>
544 void linkAndCopy(StructureChain const &rhs)
545 {
546 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
547 X& x = static_cast<X&>(*this);
548 Y& y = static_cast<Y&>(*this);
549 x = static_cast<X const &>(rhs);
550 x.pNext = &y;
551 linkAndCopy<Y, Z...>(rhs);
552 }
553
554 template<typename X>
555 void linkAndCopyElements(X const &xelem)
556 {
557 static_cast<X&>(*this) = xelem;
558 }
559
560 template<typename X, typename Y, typename ...Z>
561 void linkAndCopyElements(X const &xelem, Y const &yelem, Z const &... zelem)
562 {
563 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
564 X& x = static_cast<X&>(*this);
565 Y& y = static_cast<Y&>(*this);
566 x = xelem;
567 x.pNext = &y;
568 linkAndCopyElements<Y, Z...>(yelem, zelem...);
569 }
570 };
571
572 enum class Result
573 {
574 eSuccess = VK_SUCCESS,
575 eNotReady = VK_NOT_READY,
576 eTimeout = VK_TIMEOUT,
577 eEventSet = VK_EVENT_SET,
578 eEventReset = VK_EVENT_RESET,
579 eIncomplete = VK_INCOMPLETE,
580 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
581 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
582 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
583 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
584 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
585 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
586 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
587 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
588 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
589 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
590 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
591 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
592 eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY,
593 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY,
594 eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE,
595 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
596 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
597 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
598 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
599 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
600 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
601 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
602 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
603 eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT,
604 eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT
605 };
606
607 VULKAN_HPP_INLINE std::string to_string(Result value)
608 {
609 switch (value)
610 {
611 case Result::eSuccess: return "Success";
612 case Result::eNotReady: return "NotReady";
613 case Result::eTimeout: return "Timeout";
614 case Result::eEventSet: return "EventSet";
615 case Result::eEventReset: return "EventReset";
616 case Result::eIncomplete: return "Incomplete";
617 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
618 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
619 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
620 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
621 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
622 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
623 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
624 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
625 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
626 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
627 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
628 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
629 case Result::eErrorOutOfPoolMemory: return "ErrorOutOfPoolMemory";
630 case Result::eErrorInvalidExternalHandle: return "ErrorInvalidExternalHandle";
631 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
632 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
633 case Result::eSuboptimalKHR: return "SuboptimalKHR";
634 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
635 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
636 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
637 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
638 case Result::eErrorFragmentationEXT: return "ErrorFragmentationEXT";
639 case Result::eErrorNotPermittedEXT: return "ErrorNotPermittedEXT";
640 default: return "invalid";
641 }
642 }
643
644#ifndef VULKAN_HPP_NO_EXCEPTIONS
645#if defined(_MSC_VER) && (_MSC_VER == 1800)
646# define noexcept _NOEXCEPT
647#endif
648
649 class ErrorCategoryImpl : public std::error_category
650 {
651 public:
652 virtual const char* name() const noexcept override { return VULKAN_HPP_NAMESPACE_STRING"::Result"; }
653 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
654 };
655
656#if defined(_MSC_VER) && (_MSC_VER == 1800)
657# undef noexcept
658#endif
659
660 VULKAN_HPP_INLINE const std::error_category& errorCategory()
661 {
662 static ErrorCategoryImpl instance;
663 return instance;
664 }
665
666 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
667 {
668 return std::error_code(static_cast<int>(e), errorCategory());
669 }
670
671 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
672 {
673 return std::error_condition(static_cast<int>(e), errorCategory());
674 }
675
676#if defined(_MSC_VER) && (_MSC_VER == 1800)
677# define noexcept _NOEXCEPT
678#endif
679
680 class Error
681 {
682 public:
683 virtual ~Error() = default;
684
685 virtual const char* what() const noexcept = 0;
686 };
687
688 class LogicError : public Error, public std::logic_error
689 {
690 public:
691 explicit LogicError( const std::string& what )
692 : Error(), std::logic_error(what) {}
693 explicit LogicError( char const * what )
694 : Error(), std::logic_error(what) {}
695 virtual ~LogicError() = default;
696
697 virtual const char* what() const noexcept { return std::logic_error::what(); }
698 };
699
700 class SystemError : public Error, public std::system_error
701 {
702 public:
703 SystemError( std::error_code ec )
704 : Error(), std::system_error(ec) {}
705 SystemError( std::error_code ec, std::string const& what )
706 : Error(), std::system_error(ec, what) {}
707 SystemError( std::error_code ec, char const * what )
708 : Error(), std::system_error(ec, what) {}
709 SystemError( int ev, std::error_category const& ecat )
710 : Error(), std::system_error(ev, ecat) {}
711 SystemError( int ev, std::error_category const& ecat, std::string const& what)
712 : Error(), std::system_error(ev, ecat, what) {}
713 SystemError( int ev, std::error_category const& ecat, char const * what)
714 : Error(), std::system_error(ev, ecat, what) {}
715 virtual ~SystemError() = default;
716
717 virtual const char* what() const noexcept { return std::system_error::what(); }
718 };
719
720#if defined(_MSC_VER) && (_MSC_VER == 1800)
721# undef noexcept
722#endif
723
724 class OutOfHostMemoryError : public SystemError
725 {
726 public:
727 OutOfHostMemoryError( std::string const& message )
728 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
729 OutOfHostMemoryError( char const * message )
730 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
731 };
732 class OutOfDeviceMemoryError : public SystemError
733 {
734 public:
735 OutOfDeviceMemoryError( std::string const& message )
736 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
737 OutOfDeviceMemoryError( char const * message )
738 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
739 };
740 class InitializationFailedError : public SystemError
741 {
742 public:
743 InitializationFailedError( std::string const& message )
744 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
745 InitializationFailedError( char const * message )
746 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
747 };
748 class DeviceLostError : public SystemError
749 {
750 public:
751 DeviceLostError( std::string const& message )
752 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
753 DeviceLostError( char const * message )
754 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
755 };
756 class MemoryMapFailedError : public SystemError
757 {
758 public:
759 MemoryMapFailedError( std::string const& message )
760 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
761 MemoryMapFailedError( char const * message )
762 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
763 };
764 class LayerNotPresentError : public SystemError
765 {
766 public:
767 LayerNotPresentError( std::string const& message )
768 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
769 LayerNotPresentError( char const * message )
770 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
771 };
772 class ExtensionNotPresentError : public SystemError
773 {
774 public:
775 ExtensionNotPresentError( std::string const& message )
776 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
777 ExtensionNotPresentError( char const * message )
778 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
779 };
780 class FeatureNotPresentError : public SystemError
781 {
782 public:
783 FeatureNotPresentError( std::string const& message )
784 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
785 FeatureNotPresentError( char const * message )
786 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
787 };
788 class IncompatibleDriverError : public SystemError
789 {
790 public:
791 IncompatibleDriverError( std::string const& message )
792 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
793 IncompatibleDriverError( char const * message )
794 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
795 };
796 class TooManyObjectsError : public SystemError
797 {
798 public:
799 TooManyObjectsError( std::string const& message )
800 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
801 TooManyObjectsError( char const * message )
802 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
803 };
804 class FormatNotSupportedError : public SystemError
805 {
806 public:
807 FormatNotSupportedError( std::string const& message )
808 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
809 FormatNotSupportedError( char const * message )
810 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
811 };
812 class FragmentedPoolError : public SystemError
813 {
814 public:
815 FragmentedPoolError( std::string const& message )
816 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
817 FragmentedPoolError( char const * message )
818 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
819 };
820 class OutOfPoolMemoryError : public SystemError
821 {
822 public:
823 OutOfPoolMemoryError( std::string const& message )
824 : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {}
825 OutOfPoolMemoryError( char const * message )
826 : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {}
827 };
828 class InvalidExternalHandleError : public SystemError
829 {
830 public:
831 InvalidExternalHandleError( std::string const& message )
832 : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {}
833 InvalidExternalHandleError( char const * message )
834 : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {}
835 };
836 class SurfaceLostKHRError : public SystemError
837 {
838 public:
839 SurfaceLostKHRError( std::string const& message )
840 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
841 SurfaceLostKHRError( char const * message )
842 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
843 };
844 class NativeWindowInUseKHRError : public SystemError
845 {
846 public:
847 NativeWindowInUseKHRError( std::string const& message )
848 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
849 NativeWindowInUseKHRError( char const * message )
850 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
851 };
852 class OutOfDateKHRError : public SystemError
853 {
854 public:
855 OutOfDateKHRError( std::string const& message )
856 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
857 OutOfDateKHRError( char const * message )
858 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
859 };
860 class IncompatibleDisplayKHRError : public SystemError
861 {
862 public:
863 IncompatibleDisplayKHRError( std::string const& message )
864 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
865 IncompatibleDisplayKHRError( char const * message )
866 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
867 };
868 class ValidationFailedEXTError : public SystemError
869 {
870 public:
871 ValidationFailedEXTError( std::string const& message )
872 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
873 ValidationFailedEXTError( char const * message )
874 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
875 };
876 class InvalidShaderNVError : public SystemError
877 {
878 public:
879 InvalidShaderNVError( std::string const& message )
880 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
881 InvalidShaderNVError( char const * message )
882 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
883 };
884 class FragmentationEXTError : public SystemError
885 {
886 public:
887 FragmentationEXTError( std::string const& message )
888 : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {}
889 FragmentationEXTError( char const * message )
890 : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {}
891 };
892 class NotPermittedEXTError : public SystemError
893 {
894 public:
895 NotPermittedEXTError( std::string const& message )
896 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
897 NotPermittedEXTError( char const * message )
898 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
899 };
900
901 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
902 {
903 switch ( result )
904 {
905 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
906 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
907 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
908 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
909 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
910 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
911 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
912 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
913 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
914 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
915 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
916 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
917 case Result::eErrorOutOfPoolMemory: throw OutOfPoolMemoryError ( message );
918 case Result::eErrorInvalidExternalHandle: throw InvalidExternalHandleError ( message );
919 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
920 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
921 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
922 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
923 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
924 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
925 case Result::eErrorFragmentationEXT: throw FragmentationEXTError ( message );
926 case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError ( message );
927 default: throw SystemError( make_error_code( result ) );
928 }
929 }
930#endif
931} // namespace VULKAN_HPP_NAMESPACE
932
933namespace std
934{
935 template <>
936 struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
937 {};
938}
939
940namespace VULKAN_HPP_NAMESPACE
941{
942
943 template <typename T>
944 struct ResultValue
945 {
946 ResultValue( Result r, T & v )
947 : result( r )
948 , value( v )
949 {}
950
951 ResultValue( Result r, T && v )
952 : result( r )
953 , value( std::move( v ) )
954 {}
955
956 Result result;
957 T value;
958
959 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
960 };
961
962 template <typename T>
963 struct ResultValueType
964 {
965#ifdef VULKAN_HPP_NO_EXCEPTIONS
966 typedef ResultValue<T> type;
967#else
968 typedef T type;
969#endif
970 };
971
972 template <>
973 struct ResultValueType<void>
974 {
975#ifdef VULKAN_HPP_NO_EXCEPTIONS
976 typedef Result type;
977#else
978 typedef void type;
979#endif
980 };
981
982 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
983 {
984#ifdef VULKAN_HPP_NO_EXCEPTIONS
985 VULKAN_HPP_ASSERT( result == Result::eSuccess );
986 return result;
987#else
988 if ( result != Result::eSuccess )
989 {
990 throwResultException( result, message );
991 }
992#endif
993 }
994
995 template <typename T>
996 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
997 {
998#ifdef VULKAN_HPP_NO_EXCEPTIONS
999 VULKAN_HPP_ASSERT( result == Result::eSuccess );
1000 return ResultValue<T>( result, data );
1001#else
1002 if ( result != Result::eSuccess )
1003 {
1004 throwResultException( result, message );
1005 }
1006 return std::move( data );
1007#endif
1008 }
1009
1010 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
1011 {
1012#ifdef VULKAN_HPP_NO_EXCEPTIONS
1013 VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
1014#else
1015 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
1016 {
1017 throwResultException( result, message );
1018 }
1019#endif
1020 return result;
1021 }
1022
1023 template <typename T>
1024 VULKAN_HPP_INLINE ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )
1025 {
1026#ifdef VULKAN_HPP_NO_EXCEPTIONS
1027 VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
1028#else
1029 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
1030 {
1031 throwResultException( result, message );
1032 }
1033#endif
1034 return ResultValue<T>( result, data );
1035 }
1036
1037#ifndef VULKAN_HPP_NO_SMART_HANDLE
1038 template <typename T, typename D>
1039 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<T,D>>::type createResultValue( Result result, T & data, char const * message, typename UniqueHandleTraits<T,D>::deleter const& deleter )
1040 {
1041#ifdef VULKAN_HPP_NO_EXCEPTIONS
1042 VULKAN_HPP_ASSERT( result == Result::eSuccess );
1043 return ResultValue<UniqueHandle<T,D>>( result, UniqueHandle<T,D>(data, deleter) );
1044#else
1045 if ( result != Result::eSuccess )
1046 {
1047 throwResultException( result, message );
1048 }
1049 return UniqueHandle<T,D>(data, deleter);
1050#endif
1051 }
1052#endif
1053
1054class DispatchLoaderStatic
1055{
1056public:
1057 VkResult vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex ) const
1058 {
1059 return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex);
1060 }
1061 VkResult vkAcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex ) const
1062 {
1063 return ::vkAcquireNextImageKHR( device, swapchain, timeout, semaphore, fence, pImageIndex);
1064 }
1065#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
1066 VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display ) const
1067 {
1068 return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display);
1069 }
1070#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
1071 VkResult vkAllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers ) const
1072 {
1073 return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers);
1074 }
1075 VkResult vkAllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets ) const
1076 {
1077 return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets);
1078 }
1079 VkResult vkAllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory ) const
1080 {
1081 return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory);
1082 }
1083 VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo ) const
1084 {
1085 return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo);
1086 }
1087 VkResult vkBindBufferMemory( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const
1088 {
1089 return ::vkBindBufferMemory( device, buffer, memory, memoryOffset);
1090 }
1091 VkResult vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const
1092 {
1093 return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos);
1094 }
1095 VkResult vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const
1096 {
1097 return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos);
1098 }
1099 VkResult vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const
1100 {
1101 return ::vkBindImageMemory( device, image, memory, memoryOffset);
1102 }
1103 VkResult vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const
1104 {
1105 return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos);
1106 }
1107 VkResult vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const
1108 {
1109 return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos);
1110 }
1111 void vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin ) const
1112 {
1113 return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin);
1114 }
1115 void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const
1116 {
1117 return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo);
1118 }
1119 void vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) const
1120 {
1121 return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags);
1122 }
1123 void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents ) const
1124 {
1125 return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents);
1126 }
1127 void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo ) const
1128 {
1129 return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
1130 }
1131 void vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const
1132 {
1133 return ::vkCmdBindDescriptorSets( commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1134 }
1135 void vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) const
1136 {
1137 return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType);
1138 }
1139 void vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) const
1140 {
1141 return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline);
1142 }
1143 void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets ) const
1144 {
1145 return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1146 }
1147 void vkCmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter ) const
1148 {
1149 return ::vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1150 }
1151 void vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects ) const
1152 {
1153 return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1154 }
1155 void vkCmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const
1156 {
1157 return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1158 }
1159 void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const
1160 {
1161 return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1162 }
1163 void vkCmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions ) const
1164 {
1165 return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1166 }
1167 void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const
1168 {
1169 return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1170 }
1171 void vkCmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions ) const
1172 {
1173 return ::vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1174 }
1175 void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const
1176 {
1177 return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1178 }
1179 void vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags ) const
1180 {
1181 return ::vkCmdCopyQueryPoolResults( commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1182 }
1183 void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const
1184 {
1185 return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo);
1186 }
1187 void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer ) const
1188 {
1189 return ::vkCmdDebugMarkerEndEXT( commandBuffer);
1190 }
1191 void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const
1192 {
1193 return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo);
1194 }
1195 void vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
1196 {
1197 return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ);
1198 }
1199 void vkCmdDispatchBase( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
1200 {
1201 return ::vkCmdDispatchBase( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1202 }
1203 void vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
1204 {
1205 return ::vkCmdDispatchBaseKHR( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1206 }
1207 void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ) const
1208 {
1209 return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset);
1210 }
1211 void vkCmdDraw( VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
1212 {
1213 return ::vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1214 }
1215 void vkCmdDrawIndexed( VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
1216 {
1217 return ::vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1218 }
1219 void vkCmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const
1220 {
1221 return ::vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride);
1222 }
1223 void vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
1224 {
1225 return ::vkCmdDrawIndexedIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1226 }
1227 void vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
1228 {
1229 return ::vkCmdDrawIndexedIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1230 }
1231 void vkCmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const
1232 {
1233 return ::vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride);
1234 }
1235 void vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
1236 {
1237 return ::vkCmdDrawIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1238 }
1239 void vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
1240 {
1241 return ::vkCmdDrawIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1242 }
1243 void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer ) const
1244 {
1245 return ::vkCmdEndConditionalRenderingEXT( commandBuffer);
1246 }
1247 void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer ) const
1248 {
1249 return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer);
1250 }
1251 void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ) const
1252 {
1253 return ::vkCmdEndQuery( commandBuffer, queryPool, query);
1254 }
1255 void vkCmdEndRenderPass( VkCommandBuffer commandBuffer ) const
1256 {
1257 return ::vkCmdEndRenderPass( commandBuffer);
1258 }
1259 void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo ) const
1260 {
1261 return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo);
1262 }
1263 void vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const
1264 {
1265 return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers);
1266 }
1267 void vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) const
1268 {
1269 return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data);
1270 }
1271 void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const
1272 {
1273 return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo);
1274 }
1275 void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents ) const
1276 {
1277 return ::vkCmdNextSubpass( commandBuffer, contents);
1278 }
1279 void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo ) const
1280 {
1281 return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
1282 }
1283 void vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const
1284 {
1285 return ::vkCmdPipelineBarrier( commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1286 }
1287 void vkCmdProcessCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
1288 {
1289 return ::vkCmdProcessCommandsNVX( commandBuffer, pProcessCommandsInfo);
1290 }
1291 void vkCmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
1292 {
1293 return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues);
1294 }
1295 void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites ) const
1296 {
1297 return ::vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
1298 }
1299 void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData ) const
1300 {
1301 return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData);
1302 }
1303 void vkCmdReserveSpaceForCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
1304 {
1305 return ::vkCmdReserveSpaceForCommandsNVX( commandBuffer, pReserveSpaceInfo);
1306 }
1307 void vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const
1308 {
1309 return ::vkCmdResetEvent( commandBuffer, event, stageMask);
1310 }
1311 void vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
1312 {
1313 return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount);
1314 }
1315 void vkCmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions ) const
1316 {
1317 return ::vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1318 }
1319 void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4] ) const
1320 {
1321 return ::vkCmdSetBlendConstants( commandBuffer, blendConstants);
1322 }
1323 void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker ) const
1324 {
1325 return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker);
1326 }
1327 void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
1328 {
1329 return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1330 }
1331 void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds ) const
1332 {
1333 return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds);
1334 }
1335 void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const
1336 {
1337 return ::vkCmdSetDeviceMask( commandBuffer, deviceMask);
1338 }
1339 void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const
1340 {
1341 return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask);
1342 }
1343 void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles ) const
1344 {
1345 return ::vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
1346 }
1347 void vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const
1348 {
1349 return ::vkCmdSetEvent( commandBuffer, event, stageMask);
1350 }
1351 void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth ) const
1352 {
1353 return ::vkCmdSetLineWidth( commandBuffer, lineWidth);
1354 }
1355 void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo ) const
1356 {
1357 return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo);
1358 }
1359 void vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors ) const
1360 {
1361 return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors);
1362 }
1363 void vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask ) const
1364 {
1365 return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask);
1366 }
1367 void vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference ) const
1368 {
1369 return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference);
1370 }
1371 void vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask ) const
1372 {
1373 return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask);
1374 }
1375 void vkCmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports ) const
1376 {
1377 return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports);
1378 }
1379 void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings ) const
1380 {
1381 return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings);
1382 }
1383 void vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData ) const
1384 {
1385 return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1386 }
1387 void vkCmdWaitEvents( VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const
1388 {
1389 return ::vkCmdWaitEvents( commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1390 }
1391 void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) const
1392 {
1393 return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
1394 }
1395 void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ) const
1396 {
1397 return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query);
1398 }
1399#ifdef VK_USE_PLATFORM_ANDROID_KHR
1400 VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1401 {
1402 return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1403 }
1404#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1405 VkResult vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer ) const
1406 {
1407 return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer);
1408 }
1409 VkResult vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView ) const
1410 {
1411 return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView);
1412 }
1413 VkResult vkCreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool ) const
1414 {
1415 return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool);
1416 }
1417 VkResult vkCreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const
1418 {
1419 return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1420 }
1421 VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback ) const
1422 {
1423 return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback);
1424 }
1425 VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger ) const
1426 {
1427 return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger);
1428 }
1429 VkResult vkCreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool ) const
1430 {
1431 return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool);
1432 }
1433 VkResult vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout ) const
1434 {
1435 return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout);
1436 }
1437 VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const
1438 {
1439 return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1440 }
1441 VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const
1442 {
1443 return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1444 }
1445 VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice ) const
1446 {
1447 return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice);
1448 }
1449 VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode ) const
1450 {
1451 return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode);
1452 }
1453 VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1454 {
1455 return ::vkCreateDisplayPlaneSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1456 }
1457 VkResult vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent ) const
1458 {
1459 return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent);
1460 }
1461 VkResult vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const
1462 {
1463 return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence);
1464 }
1465 VkResult vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer ) const
1466 {
1467 return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer);
1468 }
1469 VkResult vkCreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const
1470 {
1471 return ::vkCreateGraphicsPipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1472 }
1473#ifdef VK_USE_PLATFORM_IOS_MVK
1474 VkResult vkCreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1475 {
1476 return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface);
1477 }
1478#endif /*VK_USE_PLATFORM_IOS_MVK*/
1479 VkResult vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage ) const
1480 {
1481 return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage);
1482 }
1483 VkResult vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView ) const
1484 {
1485 return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView);
1486 }
1487 VkResult vkCreateIndirectCommandsLayoutNVX( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
1488 {
1489 return ::vkCreateIndirectCommandsLayoutNVX( device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
1490 }
1491 VkResult vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance ) const
1492 {
1493 return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance);
1494 }
1495#ifdef VK_USE_PLATFORM_MACOS_MVK
1496 VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1497 {
1498 return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface);
1499 }
1500#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1501#ifdef VK_USE_PLATFORM_MIR_KHR
1502 VkResult vkCreateMirSurfaceKHR( VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1503 {
1504 return ::vkCreateMirSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1505 }
1506#endif /*VK_USE_PLATFORM_MIR_KHR*/
1507 VkResult vkCreateObjectTableNVX( VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable ) const
1508 {
1509 return ::vkCreateObjectTableNVX( device, pCreateInfo, pAllocator, pObjectTable);
1510 }
1511 VkResult vkCreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache ) const
1512 {
1513 return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache);
1514 }
1515 VkResult vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout ) const
1516 {
1517 return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout);
1518 }
1519 VkResult vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool ) const
1520 {
1521 return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool);
1522 }
1523 VkResult vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const
1524 {
1525 return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass);
1526 }
1527 VkResult vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const
1528 {
1529 return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass);
1530 }
1531 VkResult vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler ) const
1532 {
1533 return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler);
1534 }
1535 VkResult vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const
1536 {
1537 return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion);
1538 }
1539 VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const
1540 {
1541 return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion);
1542 }
1543 VkResult vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore ) const
1544 {
1545 return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore);
1546 }
1547 VkResult vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule ) const
1548 {
1549 return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule);
1550 }
1551 VkResult vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains ) const
1552 {
1553 return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
1554 }
1555 VkResult vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain ) const
1556 {
1557 return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain);
1558 }
1559 VkResult vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache ) const
1560 {
1561 return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache);
1562 }
1563#ifdef VK_USE_PLATFORM_VI_NN
1564 VkResult vkCreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1565 {
1566 return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface);
1567 }
1568#endif /*VK_USE_PLATFORM_VI_NN*/
1569#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1570 VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1571 {
1572 return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1573 }
1574#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1575#ifdef VK_USE_PLATFORM_WIN32_KHR
1576 VkResult vkCreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1577 {
1578 return ::vkCreateWin32SurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1579 }
1580#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1581#ifdef VK_USE_PLATFORM_XCB_KHR
1582 VkResult vkCreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1583 {
1584 return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1585 }
1586#endif /*VK_USE_PLATFORM_XCB_KHR*/
1587#ifdef VK_USE_PLATFORM_XLIB_KHR
1588 VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
1589 {
1590 return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface);
1591 }
1592#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1593 VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo ) const
1594 {
1595 return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo);
1596 }
1597 VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo ) const
1598 {
1599 return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo);
1600 }
1601 void vkDebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const
1602 {
1603 return ::vkDebugReportMessageEXT( instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
1604 }
1605 void vkDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator ) const
1606 {
1607 return ::vkDestroyBuffer( device, buffer, pAllocator);
1608 }
1609 void vkDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator ) const
1610 {
1611 return ::vkDestroyBufferView( device, bufferView, pAllocator);
1612 }
1613 void vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator ) const
1614 {
1615 return ::vkDestroyCommandPool( device, commandPool, pAllocator);
1616 }
1617 void vkDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator ) const
1618 {
1619 return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator);
1620 }
1621 void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator ) const
1622 {
1623 return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator);
1624 }
1625 void vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator ) const
1626 {
1627 return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator);
1628 }
1629 void vkDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator ) const
1630 {
1631 return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator);
1632 }
1633 void vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const
1634 {
1635 return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator);
1636 }
1637 void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const
1638 {
1639 return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator);
1640 }
1641 void vkDestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator ) const
1642 {
1643 return ::vkDestroyDevice( device, pAllocator);
1644 }
1645 void vkDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator ) const
1646 {
1647 return ::vkDestroyEvent( device, event, pAllocator);
1648 }
1649 void vkDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator ) const
1650 {
1651 return ::vkDestroyFence( device, fence, pAllocator);
1652 }
1653 void vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator ) const
1654 {
1655 return ::vkDestroyFramebuffer( device, framebuffer, pAllocator);
1656 }
1657 void vkDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator ) const
1658 {
1659 return ::vkDestroyImage( device, image, pAllocator);
1660 }
1661 void vkDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator ) const
1662 {
1663 return ::vkDestroyImageView( device, imageView, pAllocator);
1664 }
1665 void vkDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator ) const
1666 {
1667 return ::vkDestroyIndirectCommandsLayoutNVX( device, indirectCommandsLayout, pAllocator);
1668 }
1669 void vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator ) const
1670 {
1671 return ::vkDestroyInstance( instance, pAllocator);
1672 }
1673 void vkDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator ) const
1674 {
1675 return ::vkDestroyObjectTableNVX( device, objectTable, pAllocator);
1676 }
1677 void vkDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator ) const
1678 {
1679 return ::vkDestroyPipeline( device, pipeline, pAllocator);
1680 }
1681 void vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator ) const
1682 {
1683 return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator);
1684 }
1685 void vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator ) const
1686 {
1687 return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator);
1688 }
1689 void vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator ) const
1690 {
1691 return ::vkDestroyQueryPool( device, queryPool, pAllocator);
1692 }
1693 void vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator ) const
1694 {
1695 return ::vkDestroyRenderPass( device, renderPass, pAllocator);
1696 }
1697 void vkDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator ) const
1698 {
1699 return ::vkDestroySampler( device, sampler, pAllocator);
1700 }
1701 void vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const
1702 {
1703 return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator);
1704 }
1705 void vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const
1706 {
1707 return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator);
1708 }
1709 void vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator ) const
1710 {
1711 return ::vkDestroySemaphore( device, semaphore, pAllocator);
1712 }
1713 void vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator ) const
1714 {
1715 return ::vkDestroyShaderModule( device, shaderModule, pAllocator);
1716 }
1717 void vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator ) const
1718 {
1719 return ::vkDestroySurfaceKHR( instance, surface, pAllocator);
1720 }
1721 void vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator ) const
1722 {
1723 return ::vkDestroySwapchainKHR( device, swapchain, pAllocator);
1724 }
1725 void vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator ) const
1726 {
1727 return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator);
1728 }
1729 VkResult vkDeviceWaitIdle( VkDevice device ) const
1730 {
1731 return ::vkDeviceWaitIdle( device);
1732 }
1733 VkResult vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo ) const
1734 {
1735 return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo);
1736 }
1737 VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer ) const
1738 {
1739 return ::vkEndCommandBuffer( commandBuffer);
1740 }
1741 VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const
1742 {
1743 return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties);
1744 }
1745 VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const
1746 {
1747 return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties);
1748 }
1749 VkResult vkEnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const
1750 {
1751 return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties);
1752 }
1753 VkResult vkEnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const
1754 {
1755 return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties);
1756 }
1757 VkResult vkEnumerateInstanceVersion( uint32_t* pApiVersion ) const
1758 {
1759 return ::vkEnumerateInstanceVersion( pApiVersion);
1760 }
1761 VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const
1762 {
1763 return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1764 }
1765 VkResult vkEnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const
1766 {
1767 return ::vkEnumeratePhysicalDeviceGroupsKHR( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1768 }
1769 VkResult vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices ) const
1770 {
1771 return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices);
1772 }
1773 VkResult vkFlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const
1774 {
1775 return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges);
1776 }
1777 void vkFreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const
1778 {
1779 return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers);
1780 }
1781 VkResult vkFreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets ) const
1782 {
1783 return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets);
1784 }
1785 void vkFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator ) const
1786 {
1787 return ::vkFreeMemory( device, memory, pAllocator);
1788 }
1789#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
1790 VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties ) const
1791 {
1792 return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties);
1793 }
1794#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
1795 void vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements ) const
1796 {
1797 return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements);
1798 }
1799 void vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const
1800 {
1801 return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements);
1802 }
1803 void vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const
1804 {
1805 return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements);
1806 }
1807 void vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const
1808 {
1809 return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport);
1810 }
1811 void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const
1812 {
1813 return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport);
1814 }
1815 void vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures ) const
1816 {
1817 return ::vkGetDeviceGroupPeerMemoryFeatures( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1818 }
1819 void vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures ) const
1820 {
1821 return ::vkGetDeviceGroupPeerMemoryFeaturesKHR( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1822 }
1823 VkResult vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities ) const
1824 {
1825 return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities);
1826 }
1827 VkResult vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes ) const
1828 {
1829 return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes);
1830 }
1831 void vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes ) const
1832 {
1833 return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes);
1834 }
1835 PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, const char* pName ) const
1836 {
1837 return ::vkGetDeviceProcAddr( device, pName);
1838 }
1839 void vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue ) const
1840 {
1841 return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue);
1842 }
1843 void vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue ) const
1844 {
1845 return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue);
1846 }
1847 VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties ) const
1848 {
1849 return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties);
1850 }
1851 VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties ) const
1852 {
1853 return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties);
1854 }
1855 VkResult vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities ) const
1856 {
1857 return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities);
1858 }
1859 VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities ) const
1860 {
1861 return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities);
1862 }
1863 VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays ) const
1864 {
1865 return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays);
1866 }
1867 VkResult vkGetEventStatus( VkDevice device, VkEvent event ) const
1868 {
1869 return ::vkGetEventStatus( device, event);
1870 }
1871 VkResult vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
1872 {
1873 return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd);
1874 }
1875 VkResult vkGetFenceStatus( VkDevice device, VkFence fence ) const
1876 {
1877 return ::vkGetFenceStatus( device, fence);
1878 }
1879#ifdef VK_USE_PLATFORM_WIN32_KHR
1880 VkResult vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
1881 {
1882 return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
1883 }
1884#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1885 void vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements ) const
1886 {
1887 return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements);
1888 }
1889 void vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const
1890 {
1891 return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements);
1892 }
1893 void vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const
1894 {
1895 return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements);
1896 }
1897 void vkGetImageSparseMemoryRequirements( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements ) const
1898 {
1899 return ::vkGetImageSparseMemoryRequirements( device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1900 }
1901 void vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const
1902 {
1903 return ::vkGetImageSparseMemoryRequirements2( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1904 }
1905 void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const
1906 {
1907 return ::vkGetImageSparseMemoryRequirements2KHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1908 }
1909 void vkGetImageSubresourceLayout( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout ) const
1910 {
1911 return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout);
1912 }
1913 PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char* pName ) const
1914 {
1915 return ::vkGetInstanceProcAddr( instance, pName);
1916 }
1917#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
1918 VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer ) const
1919 {
1920 return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer);
1921 }
1922#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
1923 VkResult vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
1924 {
1925 return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd);
1926 }
1927 VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ) const
1928 {
1929 return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties);
1930 }
1931 VkResult vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const
1932 {
1933 return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties);
1934 }
1935#ifdef VK_USE_PLATFORM_WIN32_KHR
1936 VkResult vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
1937 {
1938 return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
1939 }
1940#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1941#ifdef VK_USE_PLATFORM_WIN32_NV
1942 VkResult vkGetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
1943 {
1944 return ::vkGetMemoryWin32HandleNV( device, memory, handleType, pHandle);
1945 }
1946#endif /*VK_USE_PLATFORM_WIN32_NV*/
1947#ifdef VK_USE_PLATFORM_WIN32_KHR
1948 VkResult vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
1949 {
1950 return ::vkGetMemoryWin32HandlePropertiesKHR( device, handleType, handle, pMemoryWin32HandleProperties);
1951 }
1952#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1953 VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ) const
1954 {
1955 return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings);
1956 }
1957 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties ) const
1958 {
1959 return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties);
1960 }
1961 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties ) const
1962 {
1963 return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties);
1964 }
1965 VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties ) const
1966 {
1967 return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties);
1968 }
1969 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties ) const
1970 {
1971 return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties);
1972 }
1973 void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const
1974 {
1975 return ::vkGetPhysicalDeviceExternalBufferProperties( physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
1976 }
1977 void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const
1978 {
1979 return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
1980 }
1981 void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const
1982 {
1983 return ::vkGetPhysicalDeviceExternalFenceProperties( physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
1984 }
1985 void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const
1986 {
1987 return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
1988 }
1989 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
1990 {
1991 return ::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
1992 }
1993 void vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const
1994 {
1995 return ::vkGetPhysicalDeviceExternalSemaphoreProperties( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
1996 }
1997 void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const
1998 {
1999 return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2000 }
2001 void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures ) const
2002 {
2003 return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures);
2004 }
2005 void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const
2006 {
2007 return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures);
2008 }
2009 void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const
2010 {
2011 return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures);
2012 }
2013 void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties ) const
2014 {
2015 return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties);
2016 }
2017 void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const
2018 {
2019 return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties);
2020 }
2021 void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const
2022 {
2023 return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties);
2024 }
2025 void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits ) const
2026 {
2027 return ::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( physicalDevice, pFeatures, pLimits);
2028 }
2029 VkResult vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties ) const
2030 {
2031 return ::vkGetPhysicalDeviceImageFormatProperties( physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
2032 }
2033 VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const
2034 {
2035 return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties);
2036 }
2037 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const
2038 {
2039 return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties);
2040 }
2041 void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties ) const
2042 {
2043 return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties);
2044 }
2045 void vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const
2046 {
2047 return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties);
2048 }
2049 void vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const
2050 {
2051 return ::vkGetPhysicalDeviceMemoryProperties2KHR( physicalDevice, pMemoryProperties);
2052 }
2053#ifdef VK_USE_PLATFORM_MIR_KHR
2054 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection ) const
2055 {
2056 return ::vkGetPhysicalDeviceMirPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection);
2057 }
2058#endif /*VK_USE_PLATFORM_MIR_KHR*/
2059 void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties ) const
2060 {
2061 return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties);
2062 }
2063 VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects ) const
2064 {
2065 return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects);
2066 }
2067 void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties ) const
2068 {
2069 return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties);
2070 }
2071 void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const
2072 {
2073 return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties);
2074 }
2075 void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const
2076 {
2077 return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties);
2078 }
2079 void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties ) const
2080 {
2081 return ::vkGetPhysicalDeviceQueueFamilyProperties( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2082 }
2083 void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const
2084 {
2085 return ::vkGetPhysicalDeviceQueueFamilyProperties2( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2086 }
2087 void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const
2088 {
2089 return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2090 }
2091 void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties ) const
2092 {
2093 return ::vkGetPhysicalDeviceSparseImageFormatProperties( physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
2094 }
2095 void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const
2096 {
2097 return ::vkGetPhysicalDeviceSparseImageFormatProperties2( physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2098 }
2099 void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const
2100 {
2101 return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2102 }
2103 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities ) const
2104 {
2105 return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities);
2106 }
2107 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities ) const
2108 {
2109 return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
2110 }
2111 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
2112 {
2113 return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities);
2114 }
2115 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats ) const
2116 {
2117 return ::vkGetPhysicalDeviceSurfaceFormats2KHR( physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
2118 }
2119 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats ) const
2120 {
2121 return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2122 }
2123 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ) const
2124 {
2125 return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes);
2126 }
2127 VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported ) const
2128 {
2129 return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported);
2130 }
2131#ifdef VK_USE_PLATFORM_WAYLAND_KHR
2132 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display ) const
2133 {
2134 return ::vkGetPhysicalDeviceWaylandPresentationSupportKHR( physicalDevice, queueFamilyIndex, display);
2135 }
2136#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2137#ifdef VK_USE_PLATFORM_WIN32_KHR
2138 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex ) const
2139 {
2140 return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex);
2141 }
2142#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2143#ifdef VK_USE_PLATFORM_XCB_KHR
2144 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
2145 {
2146 return ::vkGetPhysicalDeviceXcbPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection, visual_id);
2147 }
2148#endif /*VK_USE_PLATFORM_XCB_KHR*/
2149#ifdef VK_USE_PLATFORM_XLIB_KHR
2150 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
2151 {
2152 return ::vkGetPhysicalDeviceXlibPresentationSupportKHR( physicalDevice, queueFamilyIndex, dpy, visualID);
2153 }
2154#endif /*VK_USE_PLATFORM_XLIB_KHR*/
2155 VkResult vkGetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
2156 {
2157 return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData);
2158 }
2159 VkResult vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags ) const
2160 {
2161 return ::vkGetQueryPoolResults( device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
2162 }
2163 void vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData ) const
2164 {
2165 return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData);
2166 }
2167#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
2168 VkResult vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay ) const
2169 {
2170 return ::vkGetRandROutputDisplayEXT( physicalDevice, dpy, rrOutput, pDisplay);
2171 }
2172#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
2173 VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
2174 {
2175 return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties);
2176 }
2177 void vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity ) const
2178 {
2179 return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity);
2180 }
2181 VkResult vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
2182 {
2183 return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd);
2184 }
2185#ifdef VK_USE_PLATFORM_WIN32_KHR
2186 VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
2187 {
2188 return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle);
2189 }
2190#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2191 VkResult vkGetShaderInfoAMD( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const
2192 {
2193 return ::vkGetShaderInfoAMD( device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
2194 }
2195 VkResult vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
2196 {
2197 return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue);
2198 }
2199 VkResult vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages ) const
2200 {
2201 return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages);
2202 }
2203 VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain ) const
2204 {
2205 return ::vkGetSwapchainStatusKHR( device, swapchain);
2206 }
2207 VkResult vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
2208 {
2209 return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData);
2210 }
2211 VkResult vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo ) const
2212 {
2213 return ::vkImportFenceFdKHR( device, pImportFenceFdInfo);
2214 }
2215#ifdef VK_USE_PLATFORM_WIN32_KHR
2216 VkResult vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
2217 {
2218 return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo);
2219 }
2220#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2221 VkResult vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
2222 {
2223 return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo);
2224 }
2225#ifdef VK_USE_PLATFORM_WIN32_KHR
2226 VkResult vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
2227 {
2228 return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo);
2229 }
2230#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2231 VkResult vkInvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const
2232 {
2233 return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges);
2234 }
2235 VkResult vkMapMemory( VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData ) const
2236 {
2237 return ::vkMapMemory( device, memory, offset, size, flags, ppData);
2238 }
2239 VkResult vkMergePipelineCaches( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches ) const
2240 {
2241 return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches);
2242 }
2243 VkResult vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches ) const
2244 {
2245 return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches);
2246 }
2247 void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const
2248 {
2249 return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo);
2250 }
2251 VkResult vkQueueBindSparse( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence ) const
2252 {
2253 return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence);
2254 }
2255 void vkQueueEndDebugUtilsLabelEXT( VkQueue queue ) const
2256 {
2257 return ::vkQueueEndDebugUtilsLabelEXT( queue);
2258 }
2259 void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const
2260 {
2261 return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo);
2262 }
2263 VkResult vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo ) const
2264 {
2265 return ::vkQueuePresentKHR( queue, pPresentInfo);
2266 }
2267 VkResult vkQueueSubmit( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence ) const
2268 {
2269 return ::vkQueueSubmit( queue, submitCount, pSubmits, fence);
2270 }
2271 VkResult vkQueueWaitIdle( VkQueue queue ) const
2272 {
2273 return ::vkQueueWaitIdle( queue);
2274 }
2275 VkResult vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const
2276 {
2277 return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence);
2278 }
2279 VkResult vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const
2280 {
2281 return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence);
2282 }
2283 VkResult vkRegisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
2284 {
2285 return ::vkRegisterObjectsNVX( device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
2286 }
2287 VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const
2288 {
2289 return ::vkReleaseDisplayEXT( physicalDevice, display);
2290 }
2291 VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags ) const
2292 {
2293 return ::vkResetCommandBuffer( commandBuffer, flags);
2294 }
2295 VkResult vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags ) const
2296 {
2297 return ::vkResetCommandPool( device, commandPool, flags);
2298 }
2299 VkResult vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags ) const
2300 {
2301 return ::vkResetDescriptorPool( device, descriptorPool, flags);
2302 }
2303 VkResult vkResetEvent( VkDevice device, VkEvent event ) const
2304 {
2305 return ::vkResetEvent( device, event);
2306 }
2307 VkResult vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences ) const
2308 {
2309 return ::vkResetFences( device, fenceCount, pFences);
2310 }
2311 VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo ) const
2312 {
2313 return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo);
2314 }
2315 VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo ) const
2316 {
2317 return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo);
2318 }
2319 VkResult vkSetEvent( VkDevice device, VkEvent event ) const
2320 {
2321 return ::vkSetEvent( device, event);
2322 }
2323 void vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata ) const
2324 {
2325 return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata);
2326 }
2327 void vkSubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData ) const
2328 {
2329 return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData);
2330 }
2331 void vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const
2332 {
2333 return ::vkTrimCommandPool( device, commandPool, flags);
2334 }
2335 void vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const
2336 {
2337 return ::vkTrimCommandPoolKHR( device, commandPool, flags);
2338 }
2339 void vkUnmapMemory( VkDevice device, VkDeviceMemory memory ) const
2340 {
2341 return ::vkUnmapMemory( device, memory);
2342 }
2343 VkResult vkUnregisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
2344 {
2345 return ::vkUnregisterObjectsNVX( device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
2346 }
2347 void vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const
2348 {
2349 return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData);
2350 }
2351 void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const
2352 {
2353 return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData);
2354 }
2355 void vkUpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies ) const
2356 {
2357 return ::vkUpdateDescriptorSets( device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
2358 }
2359 VkResult vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout ) const
2360 {
2361 return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout);
2362 }
2363};
2364
2365 struct AllocationCallbacks;
2366
2367 template <typename OwnerType, typename Dispatch>
2368 class ObjectDestroy
2369 {
2370 public:
2371 ObjectDestroy( OwnerType owner = OwnerType(), Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &dispatch = Dispatch() )
2372 : m_owner( owner )
2373 , m_allocator( allocator )
2374 , m_dispatch( &dispatch )
2375 {}
2376
2377 OwnerType getOwner() const { return m_owner; }
2378 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
2379
2380 protected:
2381 template <typename T>
2382 void destroy(T t)
2383 {
2384 m_owner.destroy( t, m_allocator, *m_dispatch );
2385 }
2386
2387 private:
2388 OwnerType m_owner;
2389 Optional<const AllocationCallbacks> m_allocator;
2390 Dispatch const* m_dispatch;
2391 };
2392
2393 class NoParent;
2394
2395 template <typename Dispatch>
2396 class ObjectDestroy<NoParent,Dispatch>
2397 {
2398 public:
2399 ObjectDestroy( Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &dispatch = Dispatch() )
2400 : m_allocator( allocator )
2401 , m_dispatch( &dispatch )
2402 {}
2403
2404 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
2405
2406 protected:
2407 template <typename T>
2408 void destroy(T t)
2409 {
2410 t.destroy( m_allocator, *m_dispatch );
2411 }
2412
2413 private:
2414 Optional<const AllocationCallbacks> m_allocator;
2415 Dispatch const* m_dispatch;
2416 };
2417
2418 template <typename OwnerType, typename Dispatch>
2419 class ObjectFree
2420 {
2421 public:
2422 ObjectFree( OwnerType owner = OwnerType(), Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &dispatch = Dispatch() )
2423 : m_owner( owner )
2424 , m_allocator( allocator )
2425 , m_dispatch( &dispatch )
2426 {}
2427
2428 OwnerType getOwner() const { return m_owner; }
2429 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
2430
2431 protected:
2432 template <typename T>
2433 void destroy(T t)
2434 {
2435 m_owner.free( t, m_allocator, *m_dispatch );
2436 }
2437
2438 private:
2439 OwnerType m_owner;
2440 Optional<const AllocationCallbacks> m_allocator;
2441 Dispatch const* m_dispatch;
2442 };
2443
2444 template <typename OwnerType, typename PoolType, typename Dispatch>
2445 class PoolFree
2446 {
2447 public:
2448 PoolFree( OwnerType owner = OwnerType(), PoolType pool = PoolType(), Dispatch const &dispatch = Dispatch() )
2449 : m_owner( owner )
2450 , m_pool( pool )
2451 , m_dispatch( &dispatch )
2452 {}
2453
2454 OwnerType getOwner() const { return m_owner; }
2455 PoolType getPool() const { return m_pool; }
2456
2457 protected:
2458 template <typename T>
2459 void destroy(T t)
2460 {
2461 m_owner.free( m_pool, t, *m_dispatch );
2462 }
2463
2464 private:
2465 OwnerType m_owner;
2466 PoolType m_pool;
2467 Dispatch const* m_dispatch;
2468 };
2469
2470 using SampleMask = uint32_t;
2471
2472 using Bool32 = uint32_t;
2473
2474 using DeviceSize = uint64_t;
2475
2476 enum class FramebufferCreateFlagBits
2477 {
2478 };
2479
2480 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
2481
2482 enum class QueryPoolCreateFlagBits
2483 {
2484 };
2485
2486 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
2487
2488 enum class RenderPassCreateFlagBits
2489 {
2490 };
2491
2492 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
2493
2494 enum class SamplerCreateFlagBits
2495 {
2496 };
2497
2498 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
2499
2500 enum class PipelineLayoutCreateFlagBits
2501 {
2502 };
2503
2504 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
2505
2506 enum class PipelineCacheCreateFlagBits
2507 {
2508 };
2509
2510 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
2511
2512 enum class PipelineDepthStencilStateCreateFlagBits
2513 {
2514 };
2515
2516 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
2517
2518 enum class PipelineDynamicStateCreateFlagBits
2519 {
2520 };
2521
2522 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
2523
2524 enum class PipelineColorBlendStateCreateFlagBits
2525 {
2526 };
2527
2528 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
2529
2530 enum class PipelineMultisampleStateCreateFlagBits
2531 {
2532 };
2533
2534 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
2535
2536 enum class PipelineRasterizationStateCreateFlagBits
2537 {
2538 };
2539
2540 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
2541
2542 enum class PipelineViewportStateCreateFlagBits
2543 {
2544 };
2545
2546 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
2547
2548 enum class PipelineTessellationStateCreateFlagBits
2549 {
2550 };
2551
2552 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
2553
2554 enum class PipelineInputAssemblyStateCreateFlagBits
2555 {
2556 };
2557
2558 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
2559
2560 enum class PipelineVertexInputStateCreateFlagBits
2561 {
2562 };
2563
2564 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
2565
2566 enum class PipelineShaderStageCreateFlagBits
2567 {
2568 };
2569
2570 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
2571
2572 enum class BufferViewCreateFlagBits
2573 {
2574 };
2575
2576 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
2577
2578 enum class InstanceCreateFlagBits
2579 {
2580 };
2581
2582 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
2583
2584 enum class DeviceCreateFlagBits
2585 {
2586 };
2587
2588 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
2589
2590 enum class ImageViewCreateFlagBits
2591 {
2592 };
2593
2594 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
2595
2596 enum class SemaphoreCreateFlagBits
2597 {
2598 };
2599
2600 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
2601
2602 enum class ShaderModuleCreateFlagBits
2603 {
2604 };
2605
2606 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
2607
2608 enum class EventCreateFlagBits
2609 {
2610 };
2611
2612 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
2613
2614 enum class MemoryMapFlagBits
2615 {
2616 };
2617
2618 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
2619
2620 enum class DescriptorPoolResetFlagBits
2621 {
2622 };
2623
2624 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
2625
2626 enum class DescriptorUpdateTemplateCreateFlagBits
2627 {
2628 };
2629
2630 using DescriptorUpdateTemplateCreateFlags = Flags<DescriptorUpdateTemplateCreateFlagBits, VkDescriptorUpdateTemplateCreateFlags>;
2631
2632 using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags;
2633
2634 enum class DisplayModeCreateFlagBitsKHR
2635 {
2636 };
2637
2638 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
2639
2640 enum class DisplaySurfaceCreateFlagBitsKHR
2641 {
2642 };
2643
2644 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
2645
2646#ifdef VK_USE_PLATFORM_ANDROID_KHR
2647 enum class AndroidSurfaceCreateFlagBitsKHR
2648 {
2649 };
2650#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2651
2652#ifdef VK_USE_PLATFORM_ANDROID_KHR
2653 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
2654#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2655
2656#ifdef VK_USE_PLATFORM_MIR_KHR
2657 enum class MirSurfaceCreateFlagBitsKHR
2658 {
2659 };
2660#endif /*VK_USE_PLATFORM_MIR_KHR*/
2661
2662#ifdef VK_USE_PLATFORM_MIR_KHR
2663 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
2664#endif /*VK_USE_PLATFORM_MIR_KHR*/
2665
2666#ifdef VK_USE_PLATFORM_VI_NN
2667 enum class ViSurfaceCreateFlagBitsNN
2668 {
2669 };
2670#endif /*VK_USE_PLATFORM_VI_NN*/
2671
2672#ifdef VK_USE_PLATFORM_VI_NN
2673 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
2674#endif /*VK_USE_PLATFORM_VI_NN*/
2675
2676#ifdef VK_USE_PLATFORM_WAYLAND_KHR
2677 enum class WaylandSurfaceCreateFlagBitsKHR
2678 {
2679 };
2680#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2681
2682#ifdef VK_USE_PLATFORM_WAYLAND_KHR
2683 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
2684#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2685
2686#ifdef VK_USE_PLATFORM_WIN32_KHR
2687 enum class Win32SurfaceCreateFlagBitsKHR
2688 {
2689 };
2690#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2691
2692#ifdef VK_USE_PLATFORM_WIN32_KHR
2693 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
2694#endif /*VK_USE_PLATFORM_WIN32_KHR*/
2695
2696#ifdef VK_USE_PLATFORM_XLIB_KHR
2697 enum class XlibSurfaceCreateFlagBitsKHR
2698 {
2699 };
2700#endif /*VK_USE_PLATFORM_XLIB_KHR*/
2701
2702#ifdef VK_USE_PLATFORM_XLIB_KHR
2703 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
2704#endif /*VK_USE_PLATFORM_XLIB_KHR*/
2705
2706#ifdef VK_USE_PLATFORM_XCB_KHR
2707 enum class XcbSurfaceCreateFlagBitsKHR
2708 {
2709 };
2710#endif /*VK_USE_PLATFORM_XCB_KHR*/
2711
2712#ifdef VK_USE_PLATFORM_XCB_KHR
2713 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
2714#endif /*VK_USE_PLATFORM_XCB_KHR*/
2715
2716#ifdef VK_USE_PLATFORM_IOS_MVK
2717 enum class IOSSurfaceCreateFlagBitsMVK
2718 {
2719 };
2720#endif /*VK_USE_PLATFORM_IOS_MVK*/
2721
2722#ifdef VK_USE_PLATFORM_IOS_MVK
2723 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
2724#endif /*VK_USE_PLATFORM_IOS_MVK*/
2725
2726#ifdef VK_USE_PLATFORM_MACOS_MVK
2727 enum class MacOSSurfaceCreateFlagBitsMVK
2728 {
2729 };
2730#endif /*VK_USE_PLATFORM_MACOS_MVK*/
2731
2732#ifdef VK_USE_PLATFORM_MACOS_MVK
2733 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
2734#endif /*VK_USE_PLATFORM_MACOS_MVK*/
2735
2736 enum class CommandPoolTrimFlagBits
2737 {
2738 };
2739
2740 using CommandPoolTrimFlags = Flags<CommandPoolTrimFlagBits, VkCommandPoolTrimFlags>;
2741
2742 using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags;
2743
2744 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
2745 {
2746 };
2747
2748 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
2749
2750 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
2751 {
2752 };
2753
2754 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
2755
2756 enum class PipelineCoverageToColorStateCreateFlagBitsNV
2757 {
2758 };
2759
2760 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
2761
2762 enum class PipelineCoverageModulationStateCreateFlagBitsNV
2763 {
2764 };
2765
2766 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
2767
2768 enum class ValidationCacheCreateFlagBitsEXT
2769 {
2770 };
2771
2772 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
2773
2774 enum class DebugUtilsMessengerCreateFlagBitsEXT
2775 {
2776 };
2777
2778 using DebugUtilsMessengerCreateFlagsEXT = Flags<DebugUtilsMessengerCreateFlagBitsEXT, VkDebugUtilsMessengerCreateFlagsEXT>;
2779
2780 enum class DebugUtilsMessengerCallbackDataFlagBitsEXT
2781 {
2782 };
2783
2784 using DebugUtilsMessengerCallbackDataFlagsEXT = Flags<DebugUtilsMessengerCallbackDataFlagBitsEXT, VkDebugUtilsMessengerCallbackDataFlagsEXT>;
2785
2786 enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT
2787 {
2788 };
2789
2790 using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags<PipelineRasterizationConservativeStateCreateFlagBitsEXT, VkPipelineRasterizationConservativeStateCreateFlagsEXT>;
2791
2792 class DeviceMemory
2793 {
2794 public:
2795 VULKAN_HPP_CONSTEXPR DeviceMemory()
2796 : m_deviceMemory(VK_NULL_HANDLE)
2797 {}
2798
2799 VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t )
2800 : m_deviceMemory(VK_NULL_HANDLE)
2801 {}
2802
2803 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
2804 : m_deviceMemory( deviceMemory )
2805 {}
2806
2807#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2808 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
2809 {
2810 m_deviceMemory = deviceMemory;
2811 return *this;
2812 }
2813#endif
2814
2815 DeviceMemory & operator=( std::nullptr_t )
2816 {
2817 m_deviceMemory = VK_NULL_HANDLE;
2818 return *this;
2819 }
2820
2821 bool operator==( DeviceMemory const & rhs ) const
2822 {
2823 return m_deviceMemory == rhs.m_deviceMemory;
2824 }
2825
2826 bool operator!=(DeviceMemory const & rhs ) const
2827 {
2828 return m_deviceMemory != rhs.m_deviceMemory;
2829 }
2830
2831 bool operator<(DeviceMemory const & rhs ) const
2832 {
2833 return m_deviceMemory < rhs.m_deviceMemory;
2834 }
2835
2836
2837
2838 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
2839 {
2840 return m_deviceMemory;
2841 }
2842
2843 explicit operator bool() const
2844 {
2845 return m_deviceMemory != VK_NULL_HANDLE;
2846 }
2847
2848 bool operator!() const
2849 {
2850 return m_deviceMemory == VK_NULL_HANDLE;
2851 }
2852
2853 private:
2854 VkDeviceMemory m_deviceMemory;
2855 };
2856
2857 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
2858
2859 class CommandPool
2860 {
2861 public:
2862 VULKAN_HPP_CONSTEXPR CommandPool()
2863 : m_commandPool(VK_NULL_HANDLE)
2864 {}
2865
2866 VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t )
2867 : m_commandPool(VK_NULL_HANDLE)
2868 {}
2869
2870 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
2871 : m_commandPool( commandPool )
2872 {}
2873
2874#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2875 CommandPool & operator=(VkCommandPool commandPool)
2876 {
2877 m_commandPool = commandPool;
2878 return *this;
2879 }
2880#endif
2881
2882 CommandPool & operator=( std::nullptr_t )
2883 {
2884 m_commandPool = VK_NULL_HANDLE;
2885 return *this;
2886 }
2887
2888 bool operator==( CommandPool const & rhs ) const
2889 {
2890 return m_commandPool == rhs.m_commandPool;
2891 }
2892
2893 bool operator!=(CommandPool const & rhs ) const
2894 {
2895 return m_commandPool != rhs.m_commandPool;
2896 }
2897
2898 bool operator<(CommandPool const & rhs ) const
2899 {
2900 return m_commandPool < rhs.m_commandPool;
2901 }
2902
2903
2904
2905 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
2906 {
2907 return m_commandPool;
2908 }
2909
2910 explicit operator bool() const
2911 {
2912 return m_commandPool != VK_NULL_HANDLE;
2913 }
2914
2915 bool operator!() const
2916 {
2917 return m_commandPool == VK_NULL_HANDLE;
2918 }
2919
2920 private:
2921 VkCommandPool m_commandPool;
2922 };
2923
2924 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
2925
2926 class Buffer
2927 {
2928 public:
2929 VULKAN_HPP_CONSTEXPR Buffer()
2930 : m_buffer(VK_NULL_HANDLE)
2931 {}
2932
2933 VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t )
2934 : m_buffer(VK_NULL_HANDLE)
2935 {}
2936
2937 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
2938 : m_buffer( buffer )
2939 {}
2940
2941#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2942 Buffer & operator=(VkBuffer buffer)
2943 {
2944 m_buffer = buffer;
2945 return *this;
2946 }
2947#endif
2948
2949 Buffer & operator=( std::nullptr_t )
2950 {
2951 m_buffer = VK_NULL_HANDLE;
2952 return *this;
2953 }
2954
2955 bool operator==( Buffer const & rhs ) const
2956 {
2957 return m_buffer == rhs.m_buffer;
2958 }
2959
2960 bool operator!=(Buffer const & rhs ) const
2961 {
2962 return m_buffer != rhs.m_buffer;
2963 }
2964
2965 bool operator<(Buffer const & rhs ) const
2966 {
2967 return m_buffer < rhs.m_buffer;
2968 }
2969
2970
2971
2972 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
2973 {
2974 return m_buffer;
2975 }
2976
2977 explicit operator bool() const
2978 {
2979 return m_buffer != VK_NULL_HANDLE;
2980 }
2981
2982 bool operator!() const
2983 {
2984 return m_buffer == VK_NULL_HANDLE;
2985 }
2986
2987 private:
2988 VkBuffer m_buffer;
2989 };
2990
2991 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
2992
2993 class BufferView
2994 {
2995 public:
2996 VULKAN_HPP_CONSTEXPR BufferView()
2997 : m_bufferView(VK_NULL_HANDLE)
2998 {}
2999
3000 VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t )
3001 : m_bufferView(VK_NULL_HANDLE)
3002 {}
3003
3004 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
3005 : m_bufferView( bufferView )
3006 {}
3007
3008#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3009 BufferView & operator=(VkBufferView bufferView)
3010 {
3011 m_bufferView = bufferView;
3012 return *this;
3013 }
3014#endif
3015
3016 BufferView & operator=( std::nullptr_t )
3017 {
3018 m_bufferView = VK_NULL_HANDLE;
3019 return *this;
3020 }
3021
3022 bool operator==( BufferView const & rhs ) const
3023 {
3024 return m_bufferView == rhs.m_bufferView;
3025 }
3026
3027 bool operator!=(BufferView const & rhs ) const
3028 {
3029 return m_bufferView != rhs.m_bufferView;
3030 }
3031
3032 bool operator<(BufferView const & rhs ) const
3033 {
3034 return m_bufferView < rhs.m_bufferView;
3035 }
3036
3037
3038
3039 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
3040 {
3041 return m_bufferView;
3042 }
3043
3044 explicit operator bool() const
3045 {
3046 return m_bufferView != VK_NULL_HANDLE;
3047 }
3048
3049 bool operator!() const
3050 {
3051 return m_bufferView == VK_NULL_HANDLE;
3052 }
3053
3054 private:
3055 VkBufferView m_bufferView;
3056 };
3057
3058 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
3059
3060 class Image
3061 {
3062 public:
3063 VULKAN_HPP_CONSTEXPR Image()
3064 : m_image(VK_NULL_HANDLE)
3065 {}
3066
3067 VULKAN_HPP_CONSTEXPR Image( std::nullptr_t )
3068 : m_image(VK_NULL_HANDLE)
3069 {}
3070
3071 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
3072 : m_image( image )
3073 {}
3074
3075#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3076 Image & operator=(VkImage image)
3077 {
3078 m_image = image;
3079 return *this;
3080 }
3081#endif
3082
3083 Image & operator=( std::nullptr_t )
3084 {
3085 m_image = VK_NULL_HANDLE;
3086 return *this;
3087 }
3088
3089 bool operator==( Image const & rhs ) const
3090 {
3091 return m_image == rhs.m_image;
3092 }
3093
3094 bool operator!=(Image const & rhs ) const
3095 {
3096 return m_image != rhs.m_image;
3097 }
3098
3099 bool operator<(Image const & rhs ) const
3100 {
3101 return m_image < rhs.m_image;
3102 }
3103
3104
3105
3106 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
3107 {
3108 return m_image;
3109 }
3110
3111 explicit operator bool() const
3112 {
3113 return m_image != VK_NULL_HANDLE;
3114 }
3115
3116 bool operator!() const
3117 {
3118 return m_image == VK_NULL_HANDLE;
3119 }
3120
3121 private:
3122 VkImage m_image;
3123 };
3124
3125 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
3126
3127 class ImageView
3128 {
3129 public:
3130 VULKAN_HPP_CONSTEXPR ImageView()
3131 : m_imageView(VK_NULL_HANDLE)
3132 {}
3133
3134 VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t )
3135 : m_imageView(VK_NULL_HANDLE)
3136 {}
3137
3138 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
3139 : m_imageView( imageView )
3140 {}
3141
3142#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3143 ImageView & operator=(VkImageView imageView)
3144 {
3145 m_imageView = imageView;
3146 return *this;
3147 }
3148#endif
3149
3150 ImageView & operator=( std::nullptr_t )
3151 {
3152 m_imageView = VK_NULL_HANDLE;
3153 return *this;
3154 }
3155
3156 bool operator==( ImageView const & rhs ) const
3157 {
3158 return m_imageView == rhs.m_imageView;
3159 }
3160
3161 bool operator!=(ImageView const & rhs ) const
3162 {
3163 return m_imageView != rhs.m_imageView;
3164 }
3165
3166 bool operator<(ImageView const & rhs ) const
3167 {
3168 return m_imageView < rhs.m_imageView;
3169 }
3170
3171
3172
3173 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
3174 {
3175 return m_imageView;
3176 }
3177
3178 explicit operator bool() const
3179 {
3180 return m_imageView != VK_NULL_HANDLE;
3181 }
3182
3183 bool operator!() const
3184 {
3185 return m_imageView == VK_NULL_HANDLE;
3186 }
3187
3188 private:
3189 VkImageView m_imageView;
3190 };
3191
3192 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
3193
3194 class ShaderModule
3195 {
3196 public:
3197 VULKAN_HPP_CONSTEXPR ShaderModule()
3198 : m_shaderModule(VK_NULL_HANDLE)
3199 {}
3200
3201 VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t )
3202 : m_shaderModule(VK_NULL_HANDLE)
3203 {}
3204
3205 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
3206 : m_shaderModule( shaderModule )
3207 {}
3208
3209#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3210 ShaderModule & operator=(VkShaderModule shaderModule)
3211 {
3212 m_shaderModule = shaderModule;
3213 return *this;
3214 }
3215#endif
3216
3217 ShaderModule & operator=( std::nullptr_t )
3218 {
3219 m_shaderModule = VK_NULL_HANDLE;
3220 return *this;
3221 }
3222
3223 bool operator==( ShaderModule const & rhs ) const
3224 {
3225 return m_shaderModule == rhs.m_shaderModule;
3226 }
3227
3228 bool operator!=(ShaderModule const & rhs ) const
3229 {
3230 return m_shaderModule != rhs.m_shaderModule;
3231 }
3232
3233 bool operator<(ShaderModule const & rhs ) const
3234 {
3235 return m_shaderModule < rhs.m_shaderModule;
3236 }
3237
3238
3239
3240 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
3241 {
3242 return m_shaderModule;
3243 }
3244
3245 explicit operator bool() const
3246 {
3247 return m_shaderModule != VK_NULL_HANDLE;
3248 }
3249
3250 bool operator!() const
3251 {
3252 return m_shaderModule == VK_NULL_HANDLE;
3253 }
3254
3255 private:
3256 VkShaderModule m_shaderModule;
3257 };
3258
3259 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
3260
3261 class Pipeline
3262 {
3263 public:
3264 VULKAN_HPP_CONSTEXPR Pipeline()
3265 : m_pipeline(VK_NULL_HANDLE)
3266 {}
3267
3268 VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t )
3269 : m_pipeline(VK_NULL_HANDLE)
3270 {}
3271
3272 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
3273 : m_pipeline( pipeline )
3274 {}
3275
3276#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3277 Pipeline & operator=(VkPipeline pipeline)
3278 {
3279 m_pipeline = pipeline;
3280 return *this;
3281 }
3282#endif
3283
3284 Pipeline & operator=( std::nullptr_t )
3285 {
3286 m_pipeline = VK_NULL_HANDLE;
3287 return *this;
3288 }
3289
3290 bool operator==( Pipeline const & rhs ) const
3291 {
3292 return m_pipeline == rhs.m_pipeline;
3293 }
3294
3295 bool operator!=(Pipeline const & rhs ) const
3296 {
3297 return m_pipeline != rhs.m_pipeline;
3298 }
3299
3300 bool operator<(Pipeline const & rhs ) const
3301 {
3302 return m_pipeline < rhs.m_pipeline;
3303 }
3304
3305
3306
3307 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
3308 {
3309 return m_pipeline;
3310 }
3311
3312 explicit operator bool() const
3313 {
3314 return m_pipeline != VK_NULL_HANDLE;
3315 }
3316
3317 bool operator!() const
3318 {
3319 return m_pipeline == VK_NULL_HANDLE;
3320 }
3321
3322 private:
3323 VkPipeline m_pipeline;
3324 };
3325
3326 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
3327
3328 class PipelineLayout
3329 {
3330 public:
3331 VULKAN_HPP_CONSTEXPR PipelineLayout()
3332 : m_pipelineLayout(VK_NULL_HANDLE)
3333 {}
3334
3335 VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t )
3336 : m_pipelineLayout(VK_NULL_HANDLE)
3337 {}
3338
3339 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
3340 : m_pipelineLayout( pipelineLayout )
3341 {}
3342
3343#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3344 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
3345 {
3346 m_pipelineLayout = pipelineLayout;
3347 return *this;
3348 }
3349#endif
3350
3351 PipelineLayout & operator=( std::nullptr_t )
3352 {
3353 m_pipelineLayout = VK_NULL_HANDLE;
3354 return *this;
3355 }
3356
3357 bool operator==( PipelineLayout const & rhs ) const
3358 {
3359 return m_pipelineLayout == rhs.m_pipelineLayout;
3360 }
3361
3362 bool operator!=(PipelineLayout const & rhs ) const
3363 {
3364 return m_pipelineLayout != rhs.m_pipelineLayout;
3365 }
3366
3367 bool operator<(PipelineLayout const & rhs ) const
3368 {
3369 return m_pipelineLayout < rhs.m_pipelineLayout;
3370 }
3371
3372
3373
3374 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
3375 {
3376 return m_pipelineLayout;
3377 }
3378
3379 explicit operator bool() const
3380 {
3381 return m_pipelineLayout != VK_NULL_HANDLE;
3382 }
3383
3384 bool operator!() const
3385 {
3386 return m_pipelineLayout == VK_NULL_HANDLE;
3387 }
3388
3389 private:
3390 VkPipelineLayout m_pipelineLayout;
3391 };
3392
3393 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
3394
3395 class Sampler
3396 {
3397 public:
3398 VULKAN_HPP_CONSTEXPR Sampler()
3399 : m_sampler(VK_NULL_HANDLE)
3400 {}
3401
3402 VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t )
3403 : m_sampler(VK_NULL_HANDLE)
3404 {}
3405
3406 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
3407 : m_sampler( sampler )
3408 {}
3409
3410#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3411 Sampler & operator=(VkSampler sampler)
3412 {
3413 m_sampler = sampler;
3414 return *this;
3415 }
3416#endif
3417
3418 Sampler & operator=( std::nullptr_t )
3419 {
3420 m_sampler = VK_NULL_HANDLE;
3421 return *this;
3422 }
3423
3424 bool operator==( Sampler const & rhs ) const
3425 {
3426 return m_sampler == rhs.m_sampler;
3427 }
3428
3429 bool operator!=(Sampler const & rhs ) const
3430 {
3431 return m_sampler != rhs.m_sampler;
3432 }
3433
3434 bool operator<(Sampler const & rhs ) const
3435 {
3436 return m_sampler < rhs.m_sampler;
3437 }
3438
3439
3440
3441 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
3442 {
3443 return m_sampler;
3444 }
3445
3446 explicit operator bool() const
3447 {
3448 return m_sampler != VK_NULL_HANDLE;
3449 }
3450
3451 bool operator!() const
3452 {
3453 return m_sampler == VK_NULL_HANDLE;
3454 }
3455
3456 private:
3457 VkSampler m_sampler;
3458 };
3459
3460 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
3461
3462 class DescriptorSet
3463 {
3464 public:
3465 VULKAN_HPP_CONSTEXPR DescriptorSet()
3466 : m_descriptorSet(VK_NULL_HANDLE)
3467 {}
3468
3469 VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t )
3470 : m_descriptorSet(VK_NULL_HANDLE)
3471 {}
3472
3473 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
3474 : m_descriptorSet( descriptorSet )
3475 {}
3476
3477#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3478 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
3479 {
3480 m_descriptorSet = descriptorSet;
3481 return *this;
3482 }
3483#endif
3484
3485 DescriptorSet & operator=( std::nullptr_t )
3486 {
3487 m_descriptorSet = VK_NULL_HANDLE;
3488 return *this;
3489 }
3490
3491 bool operator==( DescriptorSet const & rhs ) const
3492 {
3493 return m_descriptorSet == rhs.m_descriptorSet;
3494 }
3495
3496 bool operator!=(DescriptorSet const & rhs ) const
3497 {
3498 return m_descriptorSet != rhs.m_descriptorSet;
3499 }
3500
3501 bool operator<(DescriptorSet const & rhs ) const
3502 {
3503 return m_descriptorSet < rhs.m_descriptorSet;
3504 }
3505
3506
3507
3508 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
3509 {
3510 return m_descriptorSet;
3511 }
3512
3513 explicit operator bool() const
3514 {
3515 return m_descriptorSet != VK_NULL_HANDLE;
3516 }
3517
3518 bool operator!() const
3519 {
3520 return m_descriptorSet == VK_NULL_HANDLE;
3521 }
3522
3523 private:
3524 VkDescriptorSet m_descriptorSet;
3525 };
3526
3527 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
3528
3529 class DescriptorSetLayout
3530 {
3531 public:
3532 VULKAN_HPP_CONSTEXPR DescriptorSetLayout()
3533 : m_descriptorSetLayout(VK_NULL_HANDLE)
3534 {}
3535
3536 VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t )
3537 : m_descriptorSetLayout(VK_NULL_HANDLE)
3538 {}
3539
3540 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
3541 : m_descriptorSetLayout( descriptorSetLayout )
3542 {}
3543
3544#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3545 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
3546 {
3547 m_descriptorSetLayout = descriptorSetLayout;
3548 return *this;
3549 }
3550#endif
3551
3552 DescriptorSetLayout & operator=( std::nullptr_t )
3553 {
3554 m_descriptorSetLayout = VK_NULL_HANDLE;
3555 return *this;
3556 }
3557
3558 bool operator==( DescriptorSetLayout const & rhs ) const
3559 {
3560 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
3561 }
3562
3563 bool operator!=(DescriptorSetLayout const & rhs ) const
3564 {
3565 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
3566 }
3567
3568 bool operator<(DescriptorSetLayout const & rhs ) const
3569 {
3570 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
3571 }
3572
3573
3574
3575 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
3576 {
3577 return m_descriptorSetLayout;
3578 }
3579
3580 explicit operator bool() const
3581 {
3582 return m_descriptorSetLayout != VK_NULL_HANDLE;
3583 }
3584
3585 bool operator!() const
3586 {
3587 return m_descriptorSetLayout == VK_NULL_HANDLE;
3588 }
3589
3590 private:
3591 VkDescriptorSetLayout m_descriptorSetLayout;
3592 };
3593
3594 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
3595
3596 class DescriptorPool
3597 {
3598 public:
3599 VULKAN_HPP_CONSTEXPR DescriptorPool()
3600 : m_descriptorPool(VK_NULL_HANDLE)
3601 {}
3602
3603 VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t )
3604 : m_descriptorPool(VK_NULL_HANDLE)
3605 {}
3606
3607 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
3608 : m_descriptorPool( descriptorPool )
3609 {}
3610
3611#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3612 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
3613 {
3614 m_descriptorPool = descriptorPool;
3615 return *this;
3616 }
3617#endif
3618
3619 DescriptorPool & operator=( std::nullptr_t )
3620 {
3621 m_descriptorPool = VK_NULL_HANDLE;
3622 return *this;
3623 }
3624
3625 bool operator==( DescriptorPool const & rhs ) const
3626 {
3627 return m_descriptorPool == rhs.m_descriptorPool;
3628 }
3629
3630 bool operator!=(DescriptorPool const & rhs ) const
3631 {
3632 return m_descriptorPool != rhs.m_descriptorPool;
3633 }
3634
3635 bool operator<(DescriptorPool const & rhs ) const
3636 {
3637 return m_descriptorPool < rhs.m_descriptorPool;
3638 }
3639
3640
3641
3642 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
3643 {
3644 return m_descriptorPool;
3645 }
3646
3647 explicit operator bool() const
3648 {
3649 return m_descriptorPool != VK_NULL_HANDLE;
3650 }
3651
3652 bool operator!() const
3653 {
3654 return m_descriptorPool == VK_NULL_HANDLE;
3655 }
3656
3657 private:
3658 VkDescriptorPool m_descriptorPool;
3659 };
3660
3661 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
3662
3663 class Fence
3664 {
3665 public:
3666 VULKAN_HPP_CONSTEXPR Fence()
3667 : m_fence(VK_NULL_HANDLE)
3668 {}
3669
3670 VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t )
3671 : m_fence(VK_NULL_HANDLE)
3672 {}
3673
3674 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
3675 : m_fence( fence )
3676 {}
3677
3678#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3679 Fence & operator=(VkFence fence)
3680 {
3681 m_fence = fence;
3682 return *this;
3683 }
3684#endif
3685
3686 Fence & operator=( std::nullptr_t )
3687 {
3688 m_fence = VK_NULL_HANDLE;
3689 return *this;
3690 }
3691
3692 bool operator==( Fence const & rhs ) const
3693 {
3694 return m_fence == rhs.m_fence;
3695 }
3696
3697 bool operator!=(Fence const & rhs ) const
3698 {
3699 return m_fence != rhs.m_fence;
3700 }
3701
3702 bool operator<(Fence const & rhs ) const
3703 {
3704 return m_fence < rhs.m_fence;
3705 }
3706
3707
3708
3709 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
3710 {
3711 return m_fence;
3712 }
3713
3714 explicit operator bool() const
3715 {
3716 return m_fence != VK_NULL_HANDLE;
3717 }
3718
3719 bool operator!() const
3720 {
3721 return m_fence == VK_NULL_HANDLE;
3722 }
3723
3724 private:
3725 VkFence m_fence;
3726 };
3727
3728 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
3729
3730 class Semaphore
3731 {
3732 public:
3733 VULKAN_HPP_CONSTEXPR Semaphore()
3734 : m_semaphore(VK_NULL_HANDLE)
3735 {}
3736
3737 VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t )
3738 : m_semaphore(VK_NULL_HANDLE)
3739 {}
3740
3741 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
3742 : m_semaphore( semaphore )
3743 {}
3744
3745#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3746 Semaphore & operator=(VkSemaphore semaphore)
3747 {
3748 m_semaphore = semaphore;
3749 return *this;
3750 }
3751#endif
3752
3753 Semaphore & operator=( std::nullptr_t )
3754 {
3755 m_semaphore = VK_NULL_HANDLE;
3756 return *this;
3757 }
3758
3759 bool operator==( Semaphore const & rhs ) const
3760 {
3761 return m_semaphore == rhs.m_semaphore;
3762 }
3763
3764 bool operator!=(Semaphore const & rhs ) const
3765 {
3766 return m_semaphore != rhs.m_semaphore;
3767 }
3768
3769 bool operator<(Semaphore const & rhs ) const
3770 {
3771 return m_semaphore < rhs.m_semaphore;
3772 }
3773
3774
3775
3776 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
3777 {
3778 return m_semaphore;
3779 }
3780
3781 explicit operator bool() const
3782 {
3783 return m_semaphore != VK_NULL_HANDLE;
3784 }
3785
3786 bool operator!() const
3787 {
3788 return m_semaphore == VK_NULL_HANDLE;
3789 }
3790
3791 private:
3792 VkSemaphore m_semaphore;
3793 };
3794
3795 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
3796
3797 class Event
3798 {
3799 public:
3800 VULKAN_HPP_CONSTEXPR Event()
3801 : m_event(VK_NULL_HANDLE)
3802 {}
3803
3804 VULKAN_HPP_CONSTEXPR Event( std::nullptr_t )
3805 : m_event(VK_NULL_HANDLE)
3806 {}
3807
3808 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
3809 : m_event( event )
3810 {}
3811
3812#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3813 Event & operator=(VkEvent event)
3814 {
3815 m_event = event;
3816 return *this;
3817 }
3818#endif
3819
3820 Event & operator=( std::nullptr_t )
3821 {
3822 m_event = VK_NULL_HANDLE;
3823 return *this;
3824 }
3825
3826 bool operator==( Event const & rhs ) const
3827 {
3828 return m_event == rhs.m_event;
3829 }
3830
3831 bool operator!=(Event const & rhs ) const
3832 {
3833 return m_event != rhs.m_event;
3834 }
3835
3836 bool operator<(Event const & rhs ) const
3837 {
3838 return m_event < rhs.m_event;
3839 }
3840
3841
3842
3843 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
3844 {
3845 return m_event;
3846 }
3847
3848 explicit operator bool() const
3849 {
3850 return m_event != VK_NULL_HANDLE;
3851 }
3852
3853 bool operator!() const
3854 {
3855 return m_event == VK_NULL_HANDLE;
3856 }
3857
3858 private:
3859 VkEvent m_event;
3860 };
3861
3862 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
3863
3864 class QueryPool
3865 {
3866 public:
3867 VULKAN_HPP_CONSTEXPR QueryPool()
3868 : m_queryPool(VK_NULL_HANDLE)
3869 {}
3870
3871 VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t )
3872 : m_queryPool(VK_NULL_HANDLE)
3873 {}
3874
3875 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
3876 : m_queryPool( queryPool )
3877 {}
3878
3879#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3880 QueryPool & operator=(VkQueryPool queryPool)
3881 {
3882 m_queryPool = queryPool;
3883 return *this;
3884 }
3885#endif
3886
3887 QueryPool & operator=( std::nullptr_t )
3888 {
3889 m_queryPool = VK_NULL_HANDLE;
3890 return *this;
3891 }
3892
3893 bool operator==( QueryPool const & rhs ) const
3894 {
3895 return m_queryPool == rhs.m_queryPool;
3896 }
3897
3898 bool operator!=(QueryPool const & rhs ) const
3899 {
3900 return m_queryPool != rhs.m_queryPool;
3901 }
3902
3903 bool operator<(QueryPool const & rhs ) const
3904 {
3905 return m_queryPool < rhs.m_queryPool;
3906 }
3907
3908
3909
3910 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
3911 {
3912 return m_queryPool;
3913 }
3914
3915 explicit operator bool() const
3916 {
3917 return m_queryPool != VK_NULL_HANDLE;
3918 }
3919
3920 bool operator!() const
3921 {
3922 return m_queryPool == VK_NULL_HANDLE;
3923 }
3924
3925 private:
3926 VkQueryPool m_queryPool;
3927 };
3928
3929 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
3930
3931 class Framebuffer
3932 {
3933 public:
3934 VULKAN_HPP_CONSTEXPR Framebuffer()
3935 : m_framebuffer(VK_NULL_HANDLE)
3936 {}
3937
3938 VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t )
3939 : m_framebuffer(VK_NULL_HANDLE)
3940 {}
3941
3942 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
3943 : m_framebuffer( framebuffer )
3944 {}
3945
3946#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
3947 Framebuffer & operator=(VkFramebuffer framebuffer)
3948 {
3949 m_framebuffer = framebuffer;
3950 return *this;
3951 }
3952#endif
3953
3954 Framebuffer & operator=( std::nullptr_t )
3955 {
3956 m_framebuffer = VK_NULL_HANDLE;
3957 return *this;
3958 }
3959
3960 bool operator==( Framebuffer const & rhs ) const
3961 {
3962 return m_framebuffer == rhs.m_framebuffer;
3963 }
3964
3965 bool operator!=(Framebuffer const & rhs ) const
3966 {
3967 return m_framebuffer != rhs.m_framebuffer;
3968 }
3969
3970 bool operator<(Framebuffer const & rhs ) const
3971 {
3972 return m_framebuffer < rhs.m_framebuffer;
3973 }
3974
3975
3976
3977 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
3978 {
3979 return m_framebuffer;
3980 }
3981
3982 explicit operator bool() const
3983 {
3984 return m_framebuffer != VK_NULL_HANDLE;
3985 }
3986
3987 bool operator!() const
3988 {
3989 return m_framebuffer == VK_NULL_HANDLE;
3990 }
3991
3992 private:
3993 VkFramebuffer m_framebuffer;
3994 };
3995
3996 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
3997
3998 class RenderPass
3999 {
4000 public:
4001 VULKAN_HPP_CONSTEXPR RenderPass()
4002 : m_renderPass(VK_NULL_HANDLE)
4003 {}
4004
4005 VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t )
4006 : m_renderPass(VK_NULL_HANDLE)
4007 {}
4008
4009 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
4010 : m_renderPass( renderPass )
4011 {}
4012
4013#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4014 RenderPass & operator=(VkRenderPass renderPass)
4015 {
4016 m_renderPass = renderPass;
4017 return *this;
4018 }
4019#endif
4020
4021 RenderPass & operator=( std::nullptr_t )
4022 {
4023 m_renderPass = VK_NULL_HANDLE;
4024 return *this;
4025 }
4026
4027 bool operator==( RenderPass const & rhs ) const
4028 {
4029 return m_renderPass == rhs.m_renderPass;
4030 }
4031
4032 bool operator!=(RenderPass const & rhs ) const
4033 {
4034 return m_renderPass != rhs.m_renderPass;
4035 }
4036
4037 bool operator<(RenderPass const & rhs ) const
4038 {
4039 return m_renderPass < rhs.m_renderPass;
4040 }
4041
4042
4043
4044 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
4045 {
4046 return m_renderPass;
4047 }
4048
4049 explicit operator bool() const
4050 {
4051 return m_renderPass != VK_NULL_HANDLE;
4052 }
4053
4054 bool operator!() const
4055 {
4056 return m_renderPass == VK_NULL_HANDLE;
4057 }
4058
4059 private:
4060 VkRenderPass m_renderPass;
4061 };
4062
4063 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
4064
4065 class PipelineCache
4066 {
4067 public:
4068 VULKAN_HPP_CONSTEXPR PipelineCache()
4069 : m_pipelineCache(VK_NULL_HANDLE)
4070 {}
4071
4072 VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t )
4073 : m_pipelineCache(VK_NULL_HANDLE)
4074 {}
4075
4076 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
4077 : m_pipelineCache( pipelineCache )
4078 {}
4079
4080#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4081 PipelineCache & operator=(VkPipelineCache pipelineCache)
4082 {
4083 m_pipelineCache = pipelineCache;
4084 return *this;
4085 }
4086#endif
4087
4088 PipelineCache & operator=( std::nullptr_t )
4089 {
4090 m_pipelineCache = VK_NULL_HANDLE;
4091 return *this;
4092 }
4093
4094 bool operator==( PipelineCache const & rhs ) const
4095 {
4096 return m_pipelineCache == rhs.m_pipelineCache;
4097 }
4098
4099 bool operator!=(PipelineCache const & rhs ) const
4100 {
4101 return m_pipelineCache != rhs.m_pipelineCache;
4102 }
4103
4104 bool operator<(PipelineCache const & rhs ) const
4105 {
4106 return m_pipelineCache < rhs.m_pipelineCache;
4107 }
4108
4109
4110
4111 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
4112 {
4113 return m_pipelineCache;
4114 }
4115
4116 explicit operator bool() const
4117 {
4118 return m_pipelineCache != VK_NULL_HANDLE;
4119 }
4120
4121 bool operator!() const
4122 {
4123 return m_pipelineCache == VK_NULL_HANDLE;
4124 }
4125
4126 private:
4127 VkPipelineCache m_pipelineCache;
4128 };
4129
4130 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
4131
4132 class ObjectTableNVX
4133 {
4134 public:
4135 VULKAN_HPP_CONSTEXPR ObjectTableNVX()
4136 : m_objectTableNVX(VK_NULL_HANDLE)
4137 {}
4138
4139 VULKAN_HPP_CONSTEXPR ObjectTableNVX( std::nullptr_t )
4140 : m_objectTableNVX(VK_NULL_HANDLE)
4141 {}
4142
4143 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
4144 : m_objectTableNVX( objectTableNVX )
4145 {}
4146
4147#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4148 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
4149 {
4150 m_objectTableNVX = objectTableNVX;
4151 return *this;
4152 }
4153#endif
4154
4155 ObjectTableNVX & operator=( std::nullptr_t )
4156 {
4157 m_objectTableNVX = VK_NULL_HANDLE;
4158 return *this;
4159 }
4160
4161 bool operator==( ObjectTableNVX const & rhs ) const
4162 {
4163 return m_objectTableNVX == rhs.m_objectTableNVX;
4164 }
4165
4166 bool operator!=(ObjectTableNVX const & rhs ) const
4167 {
4168 return m_objectTableNVX != rhs.m_objectTableNVX;
4169 }
4170
4171 bool operator<(ObjectTableNVX const & rhs ) const
4172 {
4173 return m_objectTableNVX < rhs.m_objectTableNVX;
4174 }
4175
4176
4177
4178 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
4179 {
4180 return m_objectTableNVX;
4181 }
4182
4183 explicit operator bool() const
4184 {
4185 return m_objectTableNVX != VK_NULL_HANDLE;
4186 }
4187
4188 bool operator!() const
4189 {
4190 return m_objectTableNVX == VK_NULL_HANDLE;
4191 }
4192
4193 private:
4194 VkObjectTableNVX m_objectTableNVX;
4195 };
4196
4197 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
4198
4199 class IndirectCommandsLayoutNVX
4200 {
4201 public:
4202 VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX()
4203 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
4204 {}
4205
4206 VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX( std::nullptr_t )
4207 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
4208 {}
4209
4210 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
4211 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
4212 {}
4213
4214#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4215 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
4216 {
4217 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
4218 return *this;
4219 }
4220#endif
4221
4222 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
4223 {
4224 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
4225 return *this;
4226 }
4227
4228 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
4229 {
4230 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
4231 }
4232
4233 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
4234 {
4235 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
4236 }
4237
4238 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
4239 {
4240 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
4241 }
4242
4243
4244
4245 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
4246 {
4247 return m_indirectCommandsLayoutNVX;
4248 }
4249
4250 explicit operator bool() const
4251 {
4252 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
4253 }
4254
4255 bool operator!() const
4256 {
4257 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
4258 }
4259
4260 private:
4261 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
4262 };
4263
4264 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
4265
4266 class DescriptorUpdateTemplate
4267 {
4268 public:
4269 VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate()
4270 : m_descriptorUpdateTemplate(VK_NULL_HANDLE)
4271 {}
4272
4273 VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t )
4274 : m_descriptorUpdateTemplate(VK_NULL_HANDLE)
4275 {}
4276
4277 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate )
4278 : m_descriptorUpdateTemplate( descriptorUpdateTemplate )
4279 {}
4280
4281#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4282 DescriptorUpdateTemplate & operator=(VkDescriptorUpdateTemplate descriptorUpdateTemplate)
4283 {
4284 m_descriptorUpdateTemplate = descriptorUpdateTemplate;
4285 return *this;
4286 }
4287#endif
4288
4289 DescriptorUpdateTemplate & operator=( std::nullptr_t )
4290 {
4291 m_descriptorUpdateTemplate = VK_NULL_HANDLE;
4292 return *this;
4293 }
4294
4295 bool operator==( DescriptorUpdateTemplate const & rhs ) const
4296 {
4297 return m_descriptorUpdateTemplate == rhs.m_descriptorUpdateTemplate;
4298 }
4299
4300 bool operator!=(DescriptorUpdateTemplate const & rhs ) const
4301 {
4302 return m_descriptorUpdateTemplate != rhs.m_descriptorUpdateTemplate;
4303 }
4304
4305 bool operator<(DescriptorUpdateTemplate const & rhs ) const
4306 {
4307 return m_descriptorUpdateTemplate < rhs.m_descriptorUpdateTemplate;
4308 }
4309
4310
4311
4312 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplate() const
4313 {
4314 return m_descriptorUpdateTemplate;
4315 }
4316
4317 explicit operator bool() const
4318 {
4319 return m_descriptorUpdateTemplate != VK_NULL_HANDLE;
4320 }
4321
4322 bool operator!() const
4323 {
4324 return m_descriptorUpdateTemplate == VK_NULL_HANDLE;
4325 }
4326
4327 private:
4328 VkDescriptorUpdateTemplate m_descriptorUpdateTemplate;
4329 };
4330
4331 static_assert( sizeof( DescriptorUpdateTemplate ) == sizeof( VkDescriptorUpdateTemplate ), "handle and wrapper have different size!" );
4332
4333 using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate;
4334
4335 class SamplerYcbcrConversion
4336 {
4337 public:
4338 VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion()
4339 : m_samplerYcbcrConversion(VK_NULL_HANDLE)
4340 {}
4341
4342 VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t )
4343 : m_samplerYcbcrConversion(VK_NULL_HANDLE)
4344 {}
4345
4346 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion )
4347 : m_samplerYcbcrConversion( samplerYcbcrConversion )
4348 {}
4349
4350#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4351 SamplerYcbcrConversion & operator=(VkSamplerYcbcrConversion samplerYcbcrConversion)
4352 {
4353 m_samplerYcbcrConversion = samplerYcbcrConversion;
4354 return *this;
4355 }
4356#endif
4357
4358 SamplerYcbcrConversion & operator=( std::nullptr_t )
4359 {
4360 m_samplerYcbcrConversion = VK_NULL_HANDLE;
4361 return *this;
4362 }
4363
4364 bool operator==( SamplerYcbcrConversion const & rhs ) const
4365 {
4366 return m_samplerYcbcrConversion == rhs.m_samplerYcbcrConversion;
4367 }
4368
4369 bool operator!=(SamplerYcbcrConversion const & rhs ) const
4370 {
4371 return m_samplerYcbcrConversion != rhs.m_samplerYcbcrConversion;
4372 }
4373
4374 bool operator<(SamplerYcbcrConversion const & rhs ) const
4375 {
4376 return m_samplerYcbcrConversion < rhs.m_samplerYcbcrConversion;
4377 }
4378
4379
4380
4381 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversion() const
4382 {
4383 return m_samplerYcbcrConversion;
4384 }
4385
4386 explicit operator bool() const
4387 {
4388 return m_samplerYcbcrConversion != VK_NULL_HANDLE;
4389 }
4390
4391 bool operator!() const
4392 {
4393 return m_samplerYcbcrConversion == VK_NULL_HANDLE;
4394 }
4395
4396 private:
4397 VkSamplerYcbcrConversion m_samplerYcbcrConversion;
4398 };
4399
4400 static_assert( sizeof( SamplerYcbcrConversion ) == sizeof( VkSamplerYcbcrConversion ), "handle and wrapper have different size!" );
4401
4402 using SamplerYcbcrConversionKHR = SamplerYcbcrConversion;
4403
4404 class ValidationCacheEXT
4405 {
4406 public:
4407 VULKAN_HPP_CONSTEXPR ValidationCacheEXT()
4408 : m_validationCacheEXT(VK_NULL_HANDLE)
4409 {}
4410
4411 VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t )
4412 : m_validationCacheEXT(VK_NULL_HANDLE)
4413 {}
4414
4415 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
4416 : m_validationCacheEXT( validationCacheEXT )
4417 {}
4418
4419#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4420 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
4421 {
4422 m_validationCacheEXT = validationCacheEXT;
4423 return *this;
4424 }
4425#endif
4426
4427 ValidationCacheEXT & operator=( std::nullptr_t )
4428 {
4429 m_validationCacheEXT = VK_NULL_HANDLE;
4430 return *this;
4431 }
4432
4433 bool operator==( ValidationCacheEXT const & rhs ) const
4434 {
4435 return m_validationCacheEXT == rhs.m_validationCacheEXT;
4436 }
4437
4438 bool operator!=(ValidationCacheEXT const & rhs ) const
4439 {
4440 return m_validationCacheEXT != rhs.m_validationCacheEXT;
4441 }
4442
4443 bool operator<(ValidationCacheEXT const & rhs ) const
4444 {
4445 return m_validationCacheEXT < rhs.m_validationCacheEXT;
4446 }
4447
4448
4449
4450 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
4451 {
4452 return m_validationCacheEXT;
4453 }
4454
4455 explicit operator bool() const
4456 {
4457 return m_validationCacheEXT != VK_NULL_HANDLE;
4458 }
4459
4460 bool operator!() const
4461 {
4462 return m_validationCacheEXT == VK_NULL_HANDLE;
4463 }
4464
4465 private:
4466 VkValidationCacheEXT m_validationCacheEXT;
4467 };
4468
4469 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
4470
4471 class DisplayKHR
4472 {
4473 public:
4474 VULKAN_HPP_CONSTEXPR DisplayKHR()
4475 : m_displayKHR(VK_NULL_HANDLE)
4476 {}
4477
4478 VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t )
4479 : m_displayKHR(VK_NULL_HANDLE)
4480 {}
4481
4482 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
4483 : m_displayKHR( displayKHR )
4484 {}
4485
4486#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4487 DisplayKHR & operator=(VkDisplayKHR displayKHR)
4488 {
4489 m_displayKHR = displayKHR;
4490 return *this;
4491 }
4492#endif
4493
4494 DisplayKHR & operator=( std::nullptr_t )
4495 {
4496 m_displayKHR = VK_NULL_HANDLE;
4497 return *this;
4498 }
4499
4500 bool operator==( DisplayKHR const & rhs ) const
4501 {
4502 return m_displayKHR == rhs.m_displayKHR;
4503 }
4504
4505 bool operator!=(DisplayKHR const & rhs ) const
4506 {
4507 return m_displayKHR != rhs.m_displayKHR;
4508 }
4509
4510 bool operator<(DisplayKHR const & rhs ) const
4511 {
4512 return m_displayKHR < rhs.m_displayKHR;
4513 }
4514
4515
4516
4517 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
4518 {
4519 return m_displayKHR;
4520 }
4521
4522 explicit operator bool() const
4523 {
4524 return m_displayKHR != VK_NULL_HANDLE;
4525 }
4526
4527 bool operator!() const
4528 {
4529 return m_displayKHR == VK_NULL_HANDLE;
4530 }
4531
4532 private:
4533 VkDisplayKHR m_displayKHR;
4534 };
4535
4536 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
4537
4538 class DisplayModeKHR
4539 {
4540 public:
4541 VULKAN_HPP_CONSTEXPR DisplayModeKHR()
4542 : m_displayModeKHR(VK_NULL_HANDLE)
4543 {}
4544
4545 VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t )
4546 : m_displayModeKHR(VK_NULL_HANDLE)
4547 {}
4548
4549 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
4550 : m_displayModeKHR( displayModeKHR )
4551 {}
4552
4553#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4554 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
4555 {
4556 m_displayModeKHR = displayModeKHR;
4557 return *this;
4558 }
4559#endif
4560
4561 DisplayModeKHR & operator=( std::nullptr_t )
4562 {
4563 m_displayModeKHR = VK_NULL_HANDLE;
4564 return *this;
4565 }
4566
4567 bool operator==( DisplayModeKHR const & rhs ) const
4568 {
4569 return m_displayModeKHR == rhs.m_displayModeKHR;
4570 }
4571
4572 bool operator!=(DisplayModeKHR const & rhs ) const
4573 {
4574 return m_displayModeKHR != rhs.m_displayModeKHR;
4575 }
4576
4577 bool operator<(DisplayModeKHR const & rhs ) const
4578 {
4579 return m_displayModeKHR < rhs.m_displayModeKHR;
4580 }
4581
4582
4583
4584 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
4585 {
4586 return m_displayModeKHR;
4587 }
4588
4589 explicit operator bool() const
4590 {
4591 return m_displayModeKHR != VK_NULL_HANDLE;
4592 }
4593
4594 bool operator!() const
4595 {
4596 return m_displayModeKHR == VK_NULL_HANDLE;
4597 }
4598
4599 private:
4600 VkDisplayModeKHR m_displayModeKHR;
4601 };
4602
4603 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
4604
4605 class SurfaceKHR
4606 {
4607 public:
4608 VULKAN_HPP_CONSTEXPR SurfaceKHR()
4609 : m_surfaceKHR(VK_NULL_HANDLE)
4610 {}
4611
4612 VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t )
4613 : m_surfaceKHR(VK_NULL_HANDLE)
4614 {}
4615
4616 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
4617 : m_surfaceKHR( surfaceKHR )
4618 {}
4619
4620#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4621 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
4622 {
4623 m_surfaceKHR = surfaceKHR;
4624 return *this;
4625 }
4626#endif
4627
4628 SurfaceKHR & operator=( std::nullptr_t )
4629 {
4630 m_surfaceKHR = VK_NULL_HANDLE;
4631 return *this;
4632 }
4633
4634 bool operator==( SurfaceKHR const & rhs ) const
4635 {
4636 return m_surfaceKHR == rhs.m_surfaceKHR;
4637 }
4638
4639 bool operator!=(SurfaceKHR const & rhs ) const
4640 {
4641 return m_surfaceKHR != rhs.m_surfaceKHR;
4642 }
4643
4644 bool operator<(SurfaceKHR const & rhs ) const
4645 {
4646 return m_surfaceKHR < rhs.m_surfaceKHR;
4647 }
4648
4649
4650
4651 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
4652 {
4653 return m_surfaceKHR;
4654 }
4655
4656 explicit operator bool() const
4657 {
4658 return m_surfaceKHR != VK_NULL_HANDLE;
4659 }
4660
4661 bool operator!() const
4662 {
4663 return m_surfaceKHR == VK_NULL_HANDLE;
4664 }
4665
4666 private:
4667 VkSurfaceKHR m_surfaceKHR;
4668 };
4669
4670 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
4671
4672 class SwapchainKHR
4673 {
4674 public:
4675 VULKAN_HPP_CONSTEXPR SwapchainKHR()
4676 : m_swapchainKHR(VK_NULL_HANDLE)
4677 {}
4678
4679 VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t )
4680 : m_swapchainKHR(VK_NULL_HANDLE)
4681 {}
4682
4683 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
4684 : m_swapchainKHR( swapchainKHR )
4685 {}
4686
4687#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4688 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
4689 {
4690 m_swapchainKHR = swapchainKHR;
4691 return *this;
4692 }
4693#endif
4694
4695 SwapchainKHR & operator=( std::nullptr_t )
4696 {
4697 m_swapchainKHR = VK_NULL_HANDLE;
4698 return *this;
4699 }
4700
4701 bool operator==( SwapchainKHR const & rhs ) const
4702 {
4703 return m_swapchainKHR == rhs.m_swapchainKHR;
4704 }
4705
4706 bool operator!=(SwapchainKHR const & rhs ) const
4707 {
4708 return m_swapchainKHR != rhs.m_swapchainKHR;
4709 }
4710
4711 bool operator<(SwapchainKHR const & rhs ) const
4712 {
4713 return m_swapchainKHR < rhs.m_swapchainKHR;
4714 }
4715
4716
4717
4718 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
4719 {
4720 return m_swapchainKHR;
4721 }
4722
4723 explicit operator bool() const
4724 {
4725 return m_swapchainKHR != VK_NULL_HANDLE;
4726 }
4727
4728 bool operator!() const
4729 {
4730 return m_swapchainKHR == VK_NULL_HANDLE;
4731 }
4732
4733 private:
4734 VkSwapchainKHR m_swapchainKHR;
4735 };
4736
4737 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
4738
4739 class DebugReportCallbackEXT
4740 {
4741 public:
4742 VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT()
4743 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
4744 {}
4745
4746 VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t )
4747 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
4748 {}
4749
4750 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
4751 : m_debugReportCallbackEXT( debugReportCallbackEXT )
4752 {}
4753
4754#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4755 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
4756 {
4757 m_debugReportCallbackEXT = debugReportCallbackEXT;
4758 return *this;
4759 }
4760#endif
4761
4762 DebugReportCallbackEXT & operator=( std::nullptr_t )
4763 {
4764 m_debugReportCallbackEXT = VK_NULL_HANDLE;
4765 return *this;
4766 }
4767
4768 bool operator==( DebugReportCallbackEXT const & rhs ) const
4769 {
4770 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
4771 }
4772
4773 bool operator!=(DebugReportCallbackEXT const & rhs ) const
4774 {
4775 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
4776 }
4777
4778 bool operator<(DebugReportCallbackEXT const & rhs ) const
4779 {
4780 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
4781 }
4782
4783
4784
4785 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
4786 {
4787 return m_debugReportCallbackEXT;
4788 }
4789
4790 explicit operator bool() const
4791 {
4792 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
4793 }
4794
4795 bool operator!() const
4796 {
4797 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
4798 }
4799
4800 private:
4801 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
4802 };
4803
4804 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
4805
4806 class DebugUtilsMessengerEXT
4807 {
4808 public:
4809 VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT()
4810 : m_debugUtilsMessengerEXT(VK_NULL_HANDLE)
4811 {}
4812
4813 VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t )
4814 : m_debugUtilsMessengerEXT(VK_NULL_HANDLE)
4815 {}
4816
4817 VULKAN_HPP_TYPESAFE_EXPLICIT DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT )
4818 : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT )
4819 {}
4820
4821#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
4822 DebugUtilsMessengerEXT & operator=(VkDebugUtilsMessengerEXT debugUtilsMessengerEXT)
4823 {
4824 m_debugUtilsMessengerEXT = debugUtilsMessengerEXT;
4825 return *this;
4826 }
4827#endif
4828
4829 DebugUtilsMessengerEXT & operator=( std::nullptr_t )
4830 {
4831 m_debugUtilsMessengerEXT = VK_NULL_HANDLE;
4832 return *this;
4833 }
4834
4835 bool operator==( DebugUtilsMessengerEXT const & rhs ) const
4836 {
4837 return m_debugUtilsMessengerEXT == rhs.m_debugUtilsMessengerEXT;
4838 }
4839
4840 bool operator!=(DebugUtilsMessengerEXT const & rhs ) const
4841 {
4842 return m_debugUtilsMessengerEXT != rhs.m_debugUtilsMessengerEXT;
4843 }
4844
4845 bool operator<(DebugUtilsMessengerEXT const & rhs ) const
4846 {
4847 return m_debugUtilsMessengerEXT < rhs.m_debugUtilsMessengerEXT;
4848 }
4849
4850
4851
4852 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugUtilsMessengerEXT() const
4853 {
4854 return m_debugUtilsMessengerEXT;
4855 }
4856
4857 explicit operator bool() const
4858 {
4859 return m_debugUtilsMessengerEXT != VK_NULL_HANDLE;
4860 }
4861
4862 bool operator!() const
4863 {
4864 return m_debugUtilsMessengerEXT == VK_NULL_HANDLE;
4865 }
4866
4867 private:
4868 VkDebugUtilsMessengerEXT m_debugUtilsMessengerEXT;
4869 };
4870
4871 static_assert( sizeof( DebugUtilsMessengerEXT ) == sizeof( VkDebugUtilsMessengerEXT ), "handle and wrapper have different size!" );
4872
4873 struct Offset2D
4874 {
4875 Offset2D( int32_t x_ = 0,
4876 int32_t y_ = 0 )
4877 : x( x_ )
4878 , y( y_ )
4879 {
4880 }
4881
4882 Offset2D( VkOffset2D const & rhs )
4883 {
4884 memcpy( this, &rhs, sizeof( Offset2D ) );
4885 }
4886
4887 Offset2D& operator=( VkOffset2D const & rhs )
4888 {
4889 memcpy( this, &rhs, sizeof( Offset2D ) );
4890 return *this;
4891 }
4892 Offset2D& setX( int32_t x_ )
4893 {
4894 x = x_;
4895 return *this;
4896 }
4897
4898 Offset2D& setY( int32_t y_ )
4899 {
4900 y = y_;
4901 return *this;
4902 }
4903
4904 operator const VkOffset2D&() const
4905 {
4906 return *reinterpret_cast<const VkOffset2D*>(this);
4907 }
4908
4909 bool operator==( Offset2D const& rhs ) const
4910 {
4911 return ( x == rhs.x )
4912 && ( y == rhs.y );
4913 }
4914
4915 bool operator!=( Offset2D const& rhs ) const
4916 {
4917 return !operator==( rhs );
4918 }
4919
4920 int32_t x;
4921 int32_t y;
4922 };
4923 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
4924
4925 struct Offset3D
4926 {
4927 Offset3D( int32_t x_ = 0,
4928 int32_t y_ = 0,
4929 int32_t z_ = 0 )
4930 : x( x_ )
4931 , y( y_ )
4932 , z( z_ )
4933 {
4934 }
4935
4936 explicit Offset3D( Offset2D const& offset2D,
4937 int32_t z_ = 0 )
4938 : x( offset2D.x )
4939 , y( offset2D.y )
4940 , z( z_ )
4941 {}
4942
4943 Offset3D( VkOffset3D const & rhs )
4944 {
4945 memcpy( this, &rhs, sizeof( Offset3D ) );
4946 }
4947
4948 Offset3D& operator=( VkOffset3D const & rhs )
4949 {
4950 memcpy( this, &rhs, sizeof( Offset3D ) );
4951 return *this;
4952 }
4953 Offset3D& setX( int32_t x_ )
4954 {
4955 x = x_;
4956 return *this;
4957 }
4958
4959 Offset3D& setY( int32_t y_ )
4960 {
4961 y = y_;
4962 return *this;
4963 }
4964
4965 Offset3D& setZ( int32_t z_ )
4966 {
4967 z = z_;
4968 return *this;
4969 }
4970
4971 operator const VkOffset3D&() const
4972 {
4973 return *reinterpret_cast<const VkOffset3D*>(this);
4974 }
4975
4976 bool operator==( Offset3D const& rhs ) const
4977 {
4978 return ( x == rhs.x )
4979 && ( y == rhs.y )
4980 && ( z == rhs.z );
4981 }
4982
4983 bool operator!=( Offset3D const& rhs ) const
4984 {
4985 return !operator==( rhs );
4986 }
4987
4988 int32_t x;
4989 int32_t y;
4990 int32_t z;
4991 };
4992 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
4993
4994 struct Extent2D
4995 {
4996 Extent2D( uint32_t width_ = 0,
4997 uint32_t height_ = 0 )
4998 : width( width_ )
4999 , height( height_ )
5000 {
5001 }
5002
5003 Extent2D( VkExtent2D const & rhs )
5004 {
5005 memcpy( this, &rhs, sizeof( Extent2D ) );
5006 }
5007
5008 Extent2D& operator=( VkExtent2D const & rhs )
5009 {
5010 memcpy( this, &rhs, sizeof( Extent2D ) );
5011 return *this;
5012 }
5013 Extent2D& setWidth( uint32_t width_ )
5014 {
5015 width = width_;
5016 return *this;
5017 }
5018
5019 Extent2D& setHeight( uint32_t height_ )
5020 {
5021 height = height_;
5022 return *this;
5023 }
5024
5025 operator const VkExtent2D&() const
5026 {
5027 return *reinterpret_cast<const VkExtent2D*>(this);
5028 }
5029
5030 bool operator==( Extent2D const& rhs ) const
5031 {
5032 return ( width == rhs.width )
5033 && ( height == rhs.height );
5034 }
5035
5036 bool operator!=( Extent2D const& rhs ) const
5037 {
5038 return !operator==( rhs );
5039 }
5040
5041 uint32_t width;
5042 uint32_t height;
5043 };
5044 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
5045
5046 struct Extent3D
5047 {
5048 Extent3D( uint32_t width_ = 0,
5049 uint32_t height_ = 0,
5050 uint32_t depth_ = 0 )
5051 : width( width_ )
5052 , height( height_ )
5053 , depth( depth_ )
5054 {
5055 }
5056
5057 explicit Extent3D( Extent2D const& extent2D,
5058 uint32_t depth_ = 0 )
5059 : width( extent2D.width )
5060 , height( extent2D.height )
5061 , depth( depth_ )
5062 {}
5063
5064 Extent3D( VkExtent3D const & rhs )
5065 {
5066 memcpy( this, &rhs, sizeof( Extent3D ) );
5067 }
5068
5069 Extent3D& operator=( VkExtent3D const & rhs )
5070 {
5071 memcpy( this, &rhs, sizeof( Extent3D ) );
5072 return *this;
5073 }
5074 Extent3D& setWidth( uint32_t width_ )
5075 {
5076 width = width_;
5077 return *this;
5078 }
5079
5080 Extent3D& setHeight( uint32_t height_ )
5081 {
5082 height = height_;
5083 return *this;
5084 }
5085
5086 Extent3D& setDepth( uint32_t depth_ )
5087 {
5088 depth = depth_;
5089 return *this;
5090 }
5091
5092 operator const VkExtent3D&() const
5093 {
5094 return *reinterpret_cast<const VkExtent3D*>(this);
5095 }
5096
5097 bool operator==( Extent3D const& rhs ) const
5098 {
5099 return ( width == rhs.width )
5100 && ( height == rhs.height )
5101 && ( depth == rhs.depth );
5102 }
5103
5104 bool operator!=( Extent3D const& rhs ) const
5105 {
5106 return !operator==( rhs );
5107 }
5108
5109 uint32_t width;
5110 uint32_t height;
5111 uint32_t depth;
5112 };
5113 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
5114
5115 struct Viewport
5116 {
5117 Viewport( float x_ = 0,
5118 float y_ = 0,
5119 float width_ = 0,
5120 float height_ = 0,
5121 float minDepth_ = 0,
5122 float maxDepth_ = 0 )
5123 : x( x_ )
5124 , y( y_ )
5125 , width( width_ )
5126 , height( height_ )
5127 , minDepth( minDepth_ )
5128 , maxDepth( maxDepth_ )
5129 {
5130 }
5131
5132 Viewport( VkViewport const & rhs )
5133 {
5134 memcpy( this, &rhs, sizeof( Viewport ) );
5135 }
5136
5137 Viewport& operator=( VkViewport const & rhs )
5138 {
5139 memcpy( this, &rhs, sizeof( Viewport ) );
5140 return *this;
5141 }
5142 Viewport& setX( float x_ )
5143 {
5144 x = x_;
5145 return *this;
5146 }
5147
5148 Viewport& setY( float y_ )
5149 {
5150 y = y_;
5151 return *this;
5152 }
5153
5154 Viewport& setWidth( float width_ )
5155 {
5156 width = width_;
5157 return *this;
5158 }
5159
5160 Viewport& setHeight( float height_ )
5161 {
5162 height = height_;
5163 return *this;
5164 }
5165
5166 Viewport& setMinDepth( float minDepth_ )
5167 {
5168 minDepth = minDepth_;
5169 return *this;
5170 }
5171
5172 Viewport& setMaxDepth( float maxDepth_ )
5173 {
5174 maxDepth = maxDepth_;
5175 return *this;
5176 }
5177
5178 operator const VkViewport&() const
5179 {
5180 return *reinterpret_cast<const VkViewport*>(this);
5181 }
5182
5183 bool operator==( Viewport const& rhs ) const
5184 {
5185 return ( x == rhs.x )
5186 && ( y == rhs.y )
5187 && ( width == rhs.width )
5188 && ( height == rhs.height )
5189 && ( minDepth == rhs.minDepth )
5190 && ( maxDepth == rhs.maxDepth );
5191 }
5192
5193 bool operator!=( Viewport const& rhs ) const
5194 {
5195 return !operator==( rhs );
5196 }
5197
5198 float x;
5199 float y;
5200 float width;
5201 float height;
5202 float minDepth;
5203 float maxDepth;
5204 };
5205 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
5206
5207 struct Rect2D
5208 {
5209 Rect2D( Offset2D offset_ = Offset2D(),
5210 Extent2D extent_ = Extent2D() )
5211 : offset( offset_ )
5212 , extent( extent_ )
5213 {
5214 }
5215
5216 Rect2D( VkRect2D const & rhs )
5217 {
5218 memcpy( this, &rhs, sizeof( Rect2D ) );
5219 }
5220
5221 Rect2D& operator=( VkRect2D const & rhs )
5222 {
5223 memcpy( this, &rhs, sizeof( Rect2D ) );
5224 return *this;
5225 }
5226 Rect2D& setOffset( Offset2D offset_ )
5227 {
5228 offset = offset_;
5229 return *this;
5230 }
5231
5232 Rect2D& setExtent( Extent2D extent_ )
5233 {
5234 extent = extent_;
5235 return *this;
5236 }
5237
5238 operator const VkRect2D&() const
5239 {
5240 return *reinterpret_cast<const VkRect2D*>(this);
5241 }
5242
5243 bool operator==( Rect2D const& rhs ) const
5244 {
5245 return ( offset == rhs.offset )
5246 && ( extent == rhs.extent );
5247 }
5248
5249 bool operator!=( Rect2D const& rhs ) const
5250 {
5251 return !operator==( rhs );
5252 }
5253
5254 Offset2D offset;
5255 Extent2D extent;
5256 };
5257 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
5258
5259 struct ClearRect
5260 {
5261 ClearRect( Rect2D rect_ = Rect2D(),
5262 uint32_t baseArrayLayer_ = 0,
5263 uint32_t layerCount_ = 0 )
5264 : rect( rect_ )
5265 , baseArrayLayer( baseArrayLayer_ )
5266 , layerCount( layerCount_ )
5267 {
5268 }
5269
5270 ClearRect( VkClearRect const & rhs )
5271 {
5272 memcpy( this, &rhs, sizeof( ClearRect ) );
5273 }
5274
5275 ClearRect& operator=( VkClearRect const & rhs )
5276 {
5277 memcpy( this, &rhs, sizeof( ClearRect ) );
5278 return *this;
5279 }
5280 ClearRect& setRect( Rect2D rect_ )
5281 {
5282 rect = rect_;
5283 return *this;
5284 }
5285
5286 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
5287 {
5288 baseArrayLayer = baseArrayLayer_;
5289 return *this;
5290 }
5291
5292 ClearRect& setLayerCount( uint32_t layerCount_ )
5293 {
5294 layerCount = layerCount_;
5295 return *this;
5296 }
5297
5298 operator const VkClearRect&() const
5299 {
5300 return *reinterpret_cast<const VkClearRect*>(this);
5301 }
5302
5303 bool operator==( ClearRect const& rhs ) const
5304 {
5305 return ( rect == rhs.rect )
5306 && ( baseArrayLayer == rhs.baseArrayLayer )
5307 && ( layerCount == rhs.layerCount );
5308 }
5309
5310 bool operator!=( ClearRect const& rhs ) const
5311 {
5312 return !operator==( rhs );
5313 }
5314
5315 Rect2D rect;
5316 uint32_t baseArrayLayer;
5317 uint32_t layerCount;
5318 };
5319 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
5320
5321 struct ExtensionProperties
5322 {
5323 operator const VkExtensionProperties&() const
5324 {
5325 return *reinterpret_cast<const VkExtensionProperties*>(this);
5326 }
5327
5328 bool operator==( ExtensionProperties const& rhs ) const
5329 {
5330 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
5331 && ( specVersion == rhs.specVersion );
5332 }
5333
5334 bool operator!=( ExtensionProperties const& rhs ) const
5335 {
5336 return !operator==( rhs );
5337 }
5338
5339 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
5340 uint32_t specVersion;
5341 };
5342 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
5343
5344 struct LayerProperties
5345 {
5346 operator const VkLayerProperties&() const
5347 {
5348 return *reinterpret_cast<const VkLayerProperties*>(this);
5349 }
5350
5351 bool operator==( LayerProperties const& rhs ) const
5352 {
5353 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
5354 && ( specVersion == rhs.specVersion )
5355 && ( implementationVersion == rhs.implementationVersion )
5356 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
5357 }
5358
5359 bool operator!=( LayerProperties const& rhs ) const
5360 {
5361 return !operator==( rhs );
5362 }
5363
5364 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
5365 uint32_t specVersion;
5366 uint32_t implementationVersion;
5367 char description[VK_MAX_DESCRIPTION_SIZE];
5368 };
5369 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
5370
5371 struct AllocationCallbacks
5372 {
5373 AllocationCallbacks( void* pUserData_ = nullptr,
5374 PFN_vkAllocationFunction pfnAllocation_ = nullptr,
5375 PFN_vkReallocationFunction pfnReallocation_ = nullptr,
5376 PFN_vkFreeFunction pfnFree_ = nullptr,
5377 PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr,
5378 PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
5379 : pUserData( pUserData_ )
5380 , pfnAllocation( pfnAllocation_ )
5381 , pfnReallocation( pfnReallocation_ )
5382 , pfnFree( pfnFree_ )
5383 , pfnInternalAllocation( pfnInternalAllocation_ )
5384 , pfnInternalFree( pfnInternalFree_ )
5385 {
5386 }
5387
5388 AllocationCallbacks( VkAllocationCallbacks const & rhs )
5389 {
5390 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
5391 }
5392
5393 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
5394 {
5395 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
5396 return *this;
5397 }
5398 AllocationCallbacks& setPUserData( void* pUserData_ )
5399 {
5400 pUserData = pUserData_;
5401 return *this;
5402 }
5403
5404 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
5405 {
5406 pfnAllocation = pfnAllocation_;
5407 return *this;
5408 }
5409
5410 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
5411 {
5412 pfnReallocation = pfnReallocation_;
5413 return *this;
5414 }
5415
5416 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
5417 {
5418 pfnFree = pfnFree_;
5419 return *this;
5420 }
5421
5422 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
5423 {
5424 pfnInternalAllocation = pfnInternalAllocation_;
5425 return *this;
5426 }
5427
5428 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
5429 {
5430 pfnInternalFree = pfnInternalFree_;
5431 return *this;
5432 }
5433
5434 operator const VkAllocationCallbacks&() const
5435 {
5436 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
5437 }
5438
5439 bool operator==( AllocationCallbacks const& rhs ) const
5440 {
5441 return ( pUserData == rhs.pUserData )
5442 && ( pfnAllocation == rhs.pfnAllocation )
5443 && ( pfnReallocation == rhs.pfnReallocation )
5444 && ( pfnFree == rhs.pfnFree )
5445 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
5446 && ( pfnInternalFree == rhs.pfnInternalFree );
5447 }
5448
5449 bool operator!=( AllocationCallbacks const& rhs ) const
5450 {
5451 return !operator==( rhs );
5452 }
5453
5454 void* pUserData;
5455 PFN_vkAllocationFunction pfnAllocation;
5456 PFN_vkReallocationFunction pfnReallocation;
5457 PFN_vkFreeFunction pfnFree;
5458 PFN_vkInternalAllocationNotification pfnInternalAllocation;
5459 PFN_vkInternalFreeNotification pfnInternalFree;
5460 };
5461 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
5462
5463 struct MemoryRequirements
5464 {
5465 operator const VkMemoryRequirements&() const
5466 {
5467 return *reinterpret_cast<const VkMemoryRequirements*>(this);
5468 }
5469
5470 bool operator==( MemoryRequirements const& rhs ) const
5471 {
5472 return ( size == rhs.size )
5473 && ( alignment == rhs.alignment )
5474 && ( memoryTypeBits == rhs.memoryTypeBits );
5475 }
5476
5477 bool operator!=( MemoryRequirements const& rhs ) const
5478 {
5479 return !operator==( rhs );
5480 }
5481
5482 DeviceSize size;
5483 DeviceSize alignment;
5484 uint32_t memoryTypeBits;
5485 };
5486 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
5487
5488 struct DescriptorBufferInfo
5489 {
5490 DescriptorBufferInfo( Buffer buffer_ = Buffer(),
5491 DeviceSize offset_ = 0,
5492 DeviceSize range_ = 0 )
5493 : buffer( buffer_ )
5494 , offset( offset_ )
5495 , range( range_ )
5496 {
5497 }
5498
5499 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
5500 {
5501 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
5502 }
5503
5504 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
5505 {
5506 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
5507 return *this;
5508 }
5509 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
5510 {
5511 buffer = buffer_;
5512 return *this;
5513 }
5514
5515 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
5516 {
5517 offset = offset_;
5518 return *this;
5519 }
5520
5521 DescriptorBufferInfo& setRange( DeviceSize range_ )
5522 {
5523 range = range_;
5524 return *this;
5525 }
5526
5527 operator const VkDescriptorBufferInfo&() const
5528 {
5529 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
5530 }
5531
5532 bool operator==( DescriptorBufferInfo const& rhs ) const
5533 {
5534 return ( buffer == rhs.buffer )
5535 && ( offset == rhs.offset )
5536 && ( range == rhs.range );
5537 }
5538
5539 bool operator!=( DescriptorBufferInfo const& rhs ) const
5540 {
5541 return !operator==( rhs );
5542 }
5543
5544 Buffer buffer;
5545 DeviceSize offset;
5546 DeviceSize range;
5547 };
5548 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
5549
5550 struct SubresourceLayout
5551 {
5552 operator const VkSubresourceLayout&() const
5553 {
5554 return *reinterpret_cast<const VkSubresourceLayout*>(this);
5555 }
5556
5557 bool operator==( SubresourceLayout const& rhs ) const
5558 {
5559 return ( offset == rhs.offset )
5560 && ( size == rhs.size )
5561 && ( rowPitch == rhs.rowPitch )
5562 && ( arrayPitch == rhs.arrayPitch )
5563 && ( depthPitch == rhs.depthPitch );
5564 }
5565
5566 bool operator!=( SubresourceLayout const& rhs ) const
5567 {
5568 return !operator==( rhs );
5569 }
5570
5571 DeviceSize offset;
5572 DeviceSize size;
5573 DeviceSize rowPitch;
5574 DeviceSize arrayPitch;
5575 DeviceSize depthPitch;
5576 };
5577 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
5578
5579 struct BufferCopy
5580 {
5581 BufferCopy( DeviceSize srcOffset_ = 0,
5582 DeviceSize dstOffset_ = 0,
5583 DeviceSize size_ = 0 )
5584 : srcOffset( srcOffset_ )
5585 , dstOffset( dstOffset_ )
5586 , size( size_ )
5587 {
5588 }
5589
5590 BufferCopy( VkBufferCopy const & rhs )
5591 {
5592 memcpy( this, &rhs, sizeof( BufferCopy ) );
5593 }
5594
5595 BufferCopy& operator=( VkBufferCopy const & rhs )
5596 {
5597 memcpy( this, &rhs, sizeof( BufferCopy ) );
5598 return *this;
5599 }
5600 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
5601 {
5602 srcOffset = srcOffset_;
5603 return *this;
5604 }
5605
5606 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
5607 {
5608 dstOffset = dstOffset_;
5609 return *this;
5610 }
5611
5612 BufferCopy& setSize( DeviceSize size_ )
5613 {
5614 size = size_;
5615 return *this;
5616 }
5617
5618 operator const VkBufferCopy&() const
5619 {
5620 return *reinterpret_cast<const VkBufferCopy*>(this);
5621 }
5622
5623 bool operator==( BufferCopy const& rhs ) const
5624 {
5625 return ( srcOffset == rhs.srcOffset )
5626 && ( dstOffset == rhs.dstOffset )
5627 && ( size == rhs.size );
5628 }
5629
5630 bool operator!=( BufferCopy const& rhs ) const
5631 {
5632 return !operator==( rhs );
5633 }
5634
5635 DeviceSize srcOffset;
5636 DeviceSize dstOffset;
5637 DeviceSize size;
5638 };
5639 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
5640
5641 struct SpecializationMapEntry
5642 {
5643 SpecializationMapEntry( uint32_t constantID_ = 0,
5644 uint32_t offset_ = 0,
5645 size_t size_ = 0 )
5646 : constantID( constantID_ )
5647 , offset( offset_ )
5648 , size( size_ )
5649 {
5650 }
5651
5652 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
5653 {
5654 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
5655 }
5656
5657 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
5658 {
5659 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
5660 return *this;
5661 }
5662 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
5663 {
5664 constantID = constantID_;
5665 return *this;
5666 }
5667
5668 SpecializationMapEntry& setOffset( uint32_t offset_ )
5669 {
5670 offset = offset_;
5671 return *this;
5672 }
5673
5674 SpecializationMapEntry& setSize( size_t size_ )
5675 {
5676 size = size_;
5677 return *this;
5678 }
5679
5680 operator const VkSpecializationMapEntry&() const
5681 {
5682 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
5683 }
5684
5685 bool operator==( SpecializationMapEntry const& rhs ) const
5686 {
5687 return ( constantID == rhs.constantID )
5688 && ( offset == rhs.offset )
5689 && ( size == rhs.size );
5690 }
5691
5692 bool operator!=( SpecializationMapEntry const& rhs ) const
5693 {
5694 return !operator==( rhs );
5695 }
5696
5697 uint32_t constantID;
5698 uint32_t offset;
5699 size_t size;
5700 };
5701 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
5702
5703 struct SpecializationInfo
5704 {
5705 SpecializationInfo( uint32_t mapEntryCount_ = 0,
5706 const SpecializationMapEntry* pMapEntries_ = nullptr,
5707 size_t dataSize_ = 0,
5708 const void* pData_ = nullptr )
5709 : mapEntryCount( mapEntryCount_ )
5710 , pMapEntries( pMapEntries_ )
5711 , dataSize( dataSize_ )
5712 , pData( pData_ )
5713 {
5714 }
5715
5716 SpecializationInfo( VkSpecializationInfo const & rhs )
5717 {
5718 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
5719 }
5720
5721 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
5722 {
5723 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
5724 return *this;
5725 }
5726 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
5727 {
5728 mapEntryCount = mapEntryCount_;
5729 return *this;
5730 }
5731
5732 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
5733 {
5734 pMapEntries = pMapEntries_;
5735 return *this;
5736 }
5737
5738 SpecializationInfo& setDataSize( size_t dataSize_ )
5739 {
5740 dataSize = dataSize_;
5741 return *this;
5742 }
5743
5744 SpecializationInfo& setPData( const void* pData_ )
5745 {
5746 pData = pData_;
5747 return *this;
5748 }
5749
5750 operator const VkSpecializationInfo&() const
5751 {
5752 return *reinterpret_cast<const VkSpecializationInfo*>(this);
5753 }
5754
5755 bool operator==( SpecializationInfo const& rhs ) const
5756 {
5757 return ( mapEntryCount == rhs.mapEntryCount )
5758 && ( pMapEntries == rhs.pMapEntries )
5759 && ( dataSize == rhs.dataSize )
5760 && ( pData == rhs.pData );
5761 }
5762
5763 bool operator!=( SpecializationInfo const& rhs ) const
5764 {
5765 return !operator==( rhs );
5766 }
5767
5768 uint32_t mapEntryCount;
5769 const SpecializationMapEntry* pMapEntries;
5770 size_t dataSize;
5771 const void* pData;
5772 };
5773 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
5774
5775 union ClearColorValue
5776 {
5777 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
5778 {
5779 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
5780 }
5781
5782 ClearColorValue( const std::array<int32_t,4>& int32_ )
5783 {
5784 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
5785 }
5786
5787 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
5788 {
5789 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
5790 }
5791
5792 ClearColorValue& setFloat32( std::array<float,4> float32_ )
5793 {
5794 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
5795 return *this;
5796 }
5797
5798 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
5799 {
5800 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
5801 return *this;
5802 }
5803
5804 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
5805 {
5806 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
5807 return *this;
5808 }
5809
5810 operator VkClearColorValue const& () const
5811 {
5812 return *reinterpret_cast<const VkClearColorValue*>(this);
5813 }
5814
5815 float float32[4];
5816 int32_t int32[4];
5817 uint32_t uint32[4];
5818 };
5819
5820 struct ClearDepthStencilValue
5821 {
5822 ClearDepthStencilValue( float depth_ = 0,
5823 uint32_t stencil_ = 0 )
5824 : depth( depth_ )
5825 , stencil( stencil_ )
5826 {
5827 }
5828
5829 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
5830 {
5831 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
5832 }
5833
5834 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
5835 {
5836 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
5837 return *this;
5838 }
5839 ClearDepthStencilValue& setDepth( float depth_ )
5840 {
5841 depth = depth_;
5842 return *this;
5843 }
5844
5845 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
5846 {
5847 stencil = stencil_;
5848 return *this;
5849 }
5850
5851 operator const VkClearDepthStencilValue&() const
5852 {
5853 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
5854 }
5855
5856 bool operator==( ClearDepthStencilValue const& rhs ) const
5857 {
5858 return ( depth == rhs.depth )
5859 && ( stencil == rhs.stencil );
5860 }
5861
5862 bool operator!=( ClearDepthStencilValue const& rhs ) const
5863 {
5864 return !operator==( rhs );
5865 }
5866
5867 float depth;
5868 uint32_t stencil;
5869 };
5870 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
5871
5872 union ClearValue
5873 {
5874 ClearValue( ClearColorValue color_ = ClearColorValue() )
5875 {
5876 color = color_;
5877 }
5878
5879 ClearValue( ClearDepthStencilValue depthStencil_ )
5880 {
5881 depthStencil = depthStencil_;
5882 }
5883
5884 ClearValue& setColor( ClearColorValue color_ )
5885 {
5886 color = color_;
5887 return *this;
5888 }
5889
5890 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
5891 {
5892 depthStencil = depthStencil_;
5893 return *this;
5894 }
5895
5896 operator VkClearValue const& () const
5897 {
5898 return *reinterpret_cast<const VkClearValue*>(this);
5899 }
5900
5901#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
5902 ClearColorValue color;
5903 ClearDepthStencilValue depthStencil;
5904#else
5905 VkClearColorValue color;
5906 VkClearDepthStencilValue depthStencil;
5907#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
5908 };
5909
5910 struct PhysicalDeviceFeatures
5911 {
5912 PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = 0,
5913 Bool32 fullDrawIndexUint32_ = 0,
5914 Bool32 imageCubeArray_ = 0,
5915 Bool32 independentBlend_ = 0,
5916 Bool32 geometryShader_ = 0,
5917 Bool32 tessellationShader_ = 0,
5918 Bool32 sampleRateShading_ = 0,
5919 Bool32 dualSrcBlend_ = 0,
5920 Bool32 logicOp_ = 0,
5921 Bool32 multiDrawIndirect_ = 0,
5922 Bool32 drawIndirectFirstInstance_ = 0,
5923 Bool32 depthClamp_ = 0,
5924 Bool32 depthBiasClamp_ = 0,
5925 Bool32 fillModeNonSolid_ = 0,
5926 Bool32 depthBounds_ = 0,
5927 Bool32 wideLines_ = 0,
5928 Bool32 largePoints_ = 0,
5929 Bool32 alphaToOne_ = 0,
5930 Bool32 multiViewport_ = 0,
5931 Bool32 samplerAnisotropy_ = 0,
5932 Bool32 textureCompressionETC2_ = 0,
5933 Bool32 textureCompressionASTC_LDR_ = 0,
5934 Bool32 textureCompressionBC_ = 0,
5935 Bool32 occlusionQueryPrecise_ = 0,
5936 Bool32 pipelineStatisticsQuery_ = 0,
5937 Bool32 vertexPipelineStoresAndAtomics_ = 0,
5938 Bool32 fragmentStoresAndAtomics_ = 0,
5939 Bool32 shaderTessellationAndGeometryPointSize_ = 0,
5940 Bool32 shaderImageGatherExtended_ = 0,
5941 Bool32 shaderStorageImageExtendedFormats_ = 0,
5942 Bool32 shaderStorageImageMultisample_ = 0,
5943 Bool32 shaderStorageImageReadWithoutFormat_ = 0,
5944 Bool32 shaderStorageImageWriteWithoutFormat_ = 0,
5945 Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0,
5946 Bool32 shaderSampledImageArrayDynamicIndexing_ = 0,
5947 Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0,
5948 Bool32 shaderStorageImageArrayDynamicIndexing_ = 0,
5949 Bool32 shaderClipDistance_ = 0,
5950 Bool32 shaderCullDistance_ = 0,
5951 Bool32 shaderFloat64_ = 0,
5952 Bool32 shaderInt64_ = 0,
5953 Bool32 shaderInt16_ = 0,
5954 Bool32 shaderResourceResidency_ = 0,
5955 Bool32 shaderResourceMinLod_ = 0,
5956 Bool32 sparseBinding_ = 0,
5957 Bool32 sparseResidencyBuffer_ = 0,
5958 Bool32 sparseResidencyImage2D_ = 0,
5959 Bool32 sparseResidencyImage3D_ = 0,
5960 Bool32 sparseResidency2Samples_ = 0,
5961 Bool32 sparseResidency4Samples_ = 0,
5962 Bool32 sparseResidency8Samples_ = 0,
5963 Bool32 sparseResidency16Samples_ = 0,
5964 Bool32 sparseResidencyAliased_ = 0,
5965 Bool32 variableMultisampleRate_ = 0,
5966 Bool32 inheritedQueries_ = 0 )
5967 : robustBufferAccess( robustBufferAccess_ )
5968 , fullDrawIndexUint32( fullDrawIndexUint32_ )
5969 , imageCubeArray( imageCubeArray_ )
5970 , independentBlend( independentBlend_ )
5971 , geometryShader( geometryShader_ )
5972 , tessellationShader( tessellationShader_ )
5973 , sampleRateShading( sampleRateShading_ )
5974 , dualSrcBlend( dualSrcBlend_ )
5975 , logicOp( logicOp_ )
5976 , multiDrawIndirect( multiDrawIndirect_ )
5977 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
5978 , depthClamp( depthClamp_ )
5979 , depthBiasClamp( depthBiasClamp_ )
5980 , fillModeNonSolid( fillModeNonSolid_ )
5981 , depthBounds( depthBounds_ )
5982 , wideLines( wideLines_ )
5983 , largePoints( largePoints_ )
5984 , alphaToOne( alphaToOne_ )
5985 , multiViewport( multiViewport_ )
5986 , samplerAnisotropy( samplerAnisotropy_ )
5987 , textureCompressionETC2( textureCompressionETC2_ )
5988 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
5989 , textureCompressionBC( textureCompressionBC_ )
5990 , occlusionQueryPrecise( occlusionQueryPrecise_ )
5991 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
5992 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
5993 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
5994 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
5995 , shaderImageGatherExtended( shaderImageGatherExtended_ )
5996 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
5997 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
5998 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
5999 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
6000 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
6001 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
6002 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
6003 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
6004 , shaderClipDistance( shaderClipDistance_ )
6005 , shaderCullDistance( shaderCullDistance_ )
6006 , shaderFloat64( shaderFloat64_ )
6007 , shaderInt64( shaderInt64_ )
6008 , shaderInt16( shaderInt16_ )
6009 , shaderResourceResidency( shaderResourceResidency_ )
6010 , shaderResourceMinLod( shaderResourceMinLod_ )
6011 , sparseBinding( sparseBinding_ )
6012 , sparseResidencyBuffer( sparseResidencyBuffer_ )
6013 , sparseResidencyImage2D( sparseResidencyImage2D_ )
6014 , sparseResidencyImage3D( sparseResidencyImage3D_ )
6015 , sparseResidency2Samples( sparseResidency2Samples_ )
6016 , sparseResidency4Samples( sparseResidency4Samples_ )
6017 , sparseResidency8Samples( sparseResidency8Samples_ )
6018 , sparseResidency16Samples( sparseResidency16Samples_ )
6019 , sparseResidencyAliased( sparseResidencyAliased_ )
6020 , variableMultisampleRate( variableMultisampleRate_ )
6021 , inheritedQueries( inheritedQueries_ )
6022 {
6023 }
6024
6025 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
6026 {
6027 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
6028 }
6029
6030 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
6031 {
6032 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
6033 return *this;
6034 }
6035 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
6036 {
6037 robustBufferAccess = robustBufferAccess_;
6038 return *this;
6039 }
6040
6041 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
6042 {
6043 fullDrawIndexUint32 = fullDrawIndexUint32_;
6044 return *this;
6045 }
6046
6047 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
6048 {
6049 imageCubeArray = imageCubeArray_;
6050 return *this;
6051 }
6052
6053 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
6054 {
6055 independentBlend = independentBlend_;
6056 return *this;
6057 }
6058
6059 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
6060 {
6061 geometryShader = geometryShader_;
6062 return *this;
6063 }
6064
6065 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
6066 {
6067 tessellationShader = tessellationShader_;
6068 return *this;
6069 }
6070
6071 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
6072 {
6073 sampleRateShading = sampleRateShading_;
6074 return *this;
6075 }
6076
6077 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
6078 {
6079 dualSrcBlend = dualSrcBlend_;
6080 return *this;
6081 }
6082
6083 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
6084 {
6085 logicOp = logicOp_;
6086 return *this;
6087 }
6088
6089 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
6090 {
6091 multiDrawIndirect = multiDrawIndirect_;
6092 return *this;
6093 }
6094
6095 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
6096 {
6097 drawIndirectFirstInstance = drawIndirectFirstInstance_;
6098 return *this;
6099 }
6100
6101 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
6102 {
6103 depthClamp = depthClamp_;
6104 return *this;
6105 }
6106
6107 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
6108 {
6109 depthBiasClamp = depthBiasClamp_;
6110 return *this;
6111 }
6112
6113 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
6114 {
6115 fillModeNonSolid = fillModeNonSolid_;
6116 return *this;
6117 }
6118
6119 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
6120 {
6121 depthBounds = depthBounds_;
6122 return *this;
6123 }
6124
6125 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
6126 {
6127 wideLines = wideLines_;
6128 return *this;
6129 }
6130
6131 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
6132 {
6133 largePoints = largePoints_;
6134 return *this;
6135 }
6136
6137 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
6138 {
6139 alphaToOne = alphaToOne_;
6140 return *this;
6141 }
6142
6143 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
6144 {
6145 multiViewport = multiViewport_;
6146 return *this;
6147 }
6148
6149 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
6150 {
6151 samplerAnisotropy = samplerAnisotropy_;
6152 return *this;
6153 }
6154
6155 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
6156 {
6157 textureCompressionETC2 = textureCompressionETC2_;
6158 return *this;
6159 }
6160
6161 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
6162 {
6163 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
6164 return *this;
6165 }
6166
6167 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
6168 {
6169 textureCompressionBC = textureCompressionBC_;
6170 return *this;
6171 }
6172
6173 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
6174 {
6175 occlusionQueryPrecise = occlusionQueryPrecise_;
6176 return *this;
6177 }
6178
6179 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
6180 {
6181 pipelineStatisticsQuery = pipelineStatisticsQuery_;
6182 return *this;
6183 }
6184
6185 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
6186 {
6187 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
6188 return *this;
6189 }
6190
6191 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
6192 {
6193 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
6194 return *this;
6195 }
6196
6197 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
6198 {
6199 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
6200 return *this;
6201 }
6202
6203 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
6204 {
6205 shaderImageGatherExtended = shaderImageGatherExtended_;
6206 return *this;
6207 }
6208
6209 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
6210 {
6211 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
6212 return *this;
6213 }
6214
6215 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
6216 {
6217 shaderStorageImageMultisample = shaderStorageImageMultisample_;
6218 return *this;
6219 }
6220
6221 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
6222 {
6223 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
6224 return *this;
6225 }
6226
6227 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
6228 {
6229 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
6230 return *this;
6231 }
6232
6233 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
6234 {
6235 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
6236 return *this;
6237 }
6238
6239 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
6240 {
6241 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
6242 return *this;
6243 }
6244
6245 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
6246 {
6247 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
6248 return *this;
6249 }
6250
6251 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
6252 {
6253 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
6254 return *this;
6255 }
6256
6257 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
6258 {
6259 shaderClipDistance = shaderClipDistance_;
6260 return *this;
6261 }
6262
6263 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
6264 {
6265 shaderCullDistance = shaderCullDistance_;
6266 return *this;
6267 }
6268
6269 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
6270 {
6271 shaderFloat64 = shaderFloat64_;
6272 return *this;
6273 }
6274
6275 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
6276 {
6277 shaderInt64 = shaderInt64_;
6278 return *this;
6279 }
6280
6281 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
6282 {
6283 shaderInt16 = shaderInt16_;
6284 return *this;
6285 }
6286
6287 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
6288 {
6289 shaderResourceResidency = shaderResourceResidency_;
6290 return *this;
6291 }
6292
6293 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
6294 {
6295 shaderResourceMinLod = shaderResourceMinLod_;
6296 return *this;
6297 }
6298
6299 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
6300 {
6301 sparseBinding = sparseBinding_;
6302 return *this;
6303 }
6304
6305 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
6306 {
6307 sparseResidencyBuffer = sparseResidencyBuffer_;
6308 return *this;
6309 }
6310
6311 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
6312 {
6313 sparseResidencyImage2D = sparseResidencyImage2D_;
6314 return *this;
6315 }
6316
6317 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
6318 {
6319 sparseResidencyImage3D = sparseResidencyImage3D_;
6320 return *this;
6321 }
6322
6323 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
6324 {
6325 sparseResidency2Samples = sparseResidency2Samples_;
6326 return *this;
6327 }
6328
6329 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
6330 {
6331 sparseResidency4Samples = sparseResidency4Samples_;
6332 return *this;
6333 }
6334
6335 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
6336 {
6337 sparseResidency8Samples = sparseResidency8Samples_;
6338 return *this;
6339 }
6340
6341 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
6342 {
6343 sparseResidency16Samples = sparseResidency16Samples_;
6344 return *this;
6345 }
6346
6347 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
6348 {
6349 sparseResidencyAliased = sparseResidencyAliased_;
6350 return *this;
6351 }
6352
6353 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
6354 {
6355 variableMultisampleRate = variableMultisampleRate_;
6356 return *this;
6357 }
6358
6359 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
6360 {
6361 inheritedQueries = inheritedQueries_;
6362 return *this;
6363 }
6364
6365 operator const VkPhysicalDeviceFeatures&() const
6366 {
6367 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
6368 }
6369
6370 bool operator==( PhysicalDeviceFeatures const& rhs ) const
6371 {
6372 return ( robustBufferAccess == rhs.robustBufferAccess )
6373 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
6374 && ( imageCubeArray == rhs.imageCubeArray )
6375 && ( independentBlend == rhs.independentBlend )
6376 && ( geometryShader == rhs.geometryShader )
6377 && ( tessellationShader == rhs.tessellationShader )
6378 && ( sampleRateShading == rhs.sampleRateShading )
6379 && ( dualSrcBlend == rhs.dualSrcBlend )
6380 && ( logicOp == rhs.logicOp )
6381 && ( multiDrawIndirect == rhs.multiDrawIndirect )
6382 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
6383 && ( depthClamp == rhs.depthClamp )
6384 && ( depthBiasClamp == rhs.depthBiasClamp )
6385 && ( fillModeNonSolid == rhs.fillModeNonSolid )
6386 && ( depthBounds == rhs.depthBounds )
6387 && ( wideLines == rhs.wideLines )
6388 && ( largePoints == rhs.largePoints )
6389 && ( alphaToOne == rhs.alphaToOne )
6390 && ( multiViewport == rhs.multiViewport )
6391 && ( samplerAnisotropy == rhs.samplerAnisotropy )
6392 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
6393 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
6394 && ( textureCompressionBC == rhs.textureCompressionBC )
6395 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
6396 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
6397 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
6398 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
6399 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
6400 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
6401 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
6402 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
6403 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
6404 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
6405 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
6406 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
6407 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
6408 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
6409 && ( shaderClipDistance == rhs.shaderClipDistance )
6410 && ( shaderCullDistance == rhs.shaderCullDistance )
6411 && ( shaderFloat64 == rhs.shaderFloat64 )
6412 && ( shaderInt64 == rhs.shaderInt64 )
6413 && ( shaderInt16 == rhs.shaderInt16 )
6414 && ( shaderResourceResidency == rhs.shaderResourceResidency )
6415 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
6416 && ( sparseBinding == rhs.sparseBinding )
6417 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
6418 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
6419 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
6420 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
6421 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
6422 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
6423 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
6424 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
6425 && ( variableMultisampleRate == rhs.variableMultisampleRate )
6426 && ( inheritedQueries == rhs.inheritedQueries );
6427 }
6428
6429 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
6430 {
6431 return !operator==( rhs );
6432 }
6433
6434 Bool32 robustBufferAccess;
6435 Bool32 fullDrawIndexUint32;
6436 Bool32 imageCubeArray;
6437 Bool32 independentBlend;
6438 Bool32 geometryShader;
6439 Bool32 tessellationShader;
6440 Bool32 sampleRateShading;
6441 Bool32 dualSrcBlend;
6442 Bool32 logicOp;
6443 Bool32 multiDrawIndirect;
6444 Bool32 drawIndirectFirstInstance;
6445 Bool32 depthClamp;
6446 Bool32 depthBiasClamp;
6447 Bool32 fillModeNonSolid;
6448 Bool32 depthBounds;
6449 Bool32 wideLines;
6450 Bool32 largePoints;
6451 Bool32 alphaToOne;
6452 Bool32 multiViewport;
6453 Bool32 samplerAnisotropy;
6454 Bool32 textureCompressionETC2;
6455 Bool32 textureCompressionASTC_LDR;
6456 Bool32 textureCompressionBC;
6457 Bool32 occlusionQueryPrecise;
6458 Bool32 pipelineStatisticsQuery;
6459 Bool32 vertexPipelineStoresAndAtomics;
6460 Bool32 fragmentStoresAndAtomics;
6461 Bool32 shaderTessellationAndGeometryPointSize;
6462 Bool32 shaderImageGatherExtended;
6463 Bool32 shaderStorageImageExtendedFormats;
6464 Bool32 shaderStorageImageMultisample;
6465 Bool32 shaderStorageImageReadWithoutFormat;
6466 Bool32 shaderStorageImageWriteWithoutFormat;
6467 Bool32 shaderUniformBufferArrayDynamicIndexing;
6468 Bool32 shaderSampledImageArrayDynamicIndexing;
6469 Bool32 shaderStorageBufferArrayDynamicIndexing;
6470 Bool32 shaderStorageImageArrayDynamicIndexing;
6471 Bool32 shaderClipDistance;
6472 Bool32 shaderCullDistance;
6473 Bool32 shaderFloat64;
6474 Bool32 shaderInt64;
6475 Bool32 shaderInt16;
6476 Bool32 shaderResourceResidency;
6477 Bool32 shaderResourceMinLod;
6478 Bool32 sparseBinding;
6479 Bool32 sparseResidencyBuffer;
6480 Bool32 sparseResidencyImage2D;
6481 Bool32 sparseResidencyImage3D;
6482 Bool32 sparseResidency2Samples;
6483 Bool32 sparseResidency4Samples;
6484 Bool32 sparseResidency8Samples;
6485 Bool32 sparseResidency16Samples;
6486 Bool32 sparseResidencyAliased;
6487 Bool32 variableMultisampleRate;
6488 Bool32 inheritedQueries;
6489 };
6490 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
6491
6492 struct PhysicalDeviceSparseProperties
6493 {
6494 operator const VkPhysicalDeviceSparseProperties&() const
6495 {
6496 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
6497 }
6498
6499 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
6500 {
6501 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
6502 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
6503 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
6504 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
6505 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
6506 }
6507
6508 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
6509 {
6510 return !operator==( rhs );
6511 }
6512
6513 Bool32 residencyStandard2DBlockShape;
6514 Bool32 residencyStandard2DMultisampleBlockShape;
6515 Bool32 residencyStandard3DBlockShape;
6516 Bool32 residencyAlignedMipSize;
6517 Bool32 residencyNonResidentStrict;
6518 };
6519 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
6520
6521 struct DrawIndirectCommand
6522 {
6523 DrawIndirectCommand( uint32_t vertexCount_ = 0,
6524 uint32_t instanceCount_ = 0,
6525 uint32_t firstVertex_ = 0,
6526 uint32_t firstInstance_ = 0 )
6527 : vertexCount( vertexCount_ )
6528 , instanceCount( instanceCount_ )
6529 , firstVertex( firstVertex_ )
6530 , firstInstance( firstInstance_ )
6531 {
6532 }
6533
6534 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
6535 {
6536 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
6537 }
6538
6539 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
6540 {
6541 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
6542 return *this;
6543 }
6544 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
6545 {
6546 vertexCount = vertexCount_;
6547 return *this;
6548 }
6549
6550 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
6551 {
6552 instanceCount = instanceCount_;
6553 return *this;
6554 }
6555
6556 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
6557 {
6558 firstVertex = firstVertex_;
6559 return *this;
6560 }
6561
6562 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
6563 {
6564 firstInstance = firstInstance_;
6565 return *this;
6566 }
6567
6568 operator const VkDrawIndirectCommand&() const
6569 {
6570 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
6571 }
6572
6573 bool operator==( DrawIndirectCommand const& rhs ) const
6574 {
6575 return ( vertexCount == rhs.vertexCount )
6576 && ( instanceCount == rhs.instanceCount )
6577 && ( firstVertex == rhs.firstVertex )
6578 && ( firstInstance == rhs.firstInstance );
6579 }
6580
6581 bool operator!=( DrawIndirectCommand const& rhs ) const
6582 {
6583 return !operator==( rhs );
6584 }
6585
6586 uint32_t vertexCount;
6587 uint32_t instanceCount;
6588 uint32_t firstVertex;
6589 uint32_t firstInstance;
6590 };
6591 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
6592
6593 struct DrawIndexedIndirectCommand
6594 {
6595 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0,
6596 uint32_t instanceCount_ = 0,
6597 uint32_t firstIndex_ = 0,
6598 int32_t vertexOffset_ = 0,
6599 uint32_t firstInstance_ = 0 )
6600 : indexCount( indexCount_ )
6601 , instanceCount( instanceCount_ )
6602 , firstIndex( firstIndex_ )
6603 , vertexOffset( vertexOffset_ )
6604 , firstInstance( firstInstance_ )
6605 {
6606 }
6607
6608 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
6609 {
6610 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
6611 }
6612
6613 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
6614 {
6615 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
6616 return *this;
6617 }
6618 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
6619 {
6620 indexCount = indexCount_;
6621 return *this;
6622 }
6623
6624 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
6625 {
6626 instanceCount = instanceCount_;
6627 return *this;
6628 }
6629
6630 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
6631 {
6632 firstIndex = firstIndex_;
6633 return *this;
6634 }
6635
6636 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
6637 {
6638 vertexOffset = vertexOffset_;
6639 return *this;
6640 }
6641
6642 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
6643 {
6644 firstInstance = firstInstance_;
6645 return *this;
6646 }
6647
6648 operator const VkDrawIndexedIndirectCommand&() const
6649 {
6650 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
6651 }
6652
6653 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
6654 {
6655 return ( indexCount == rhs.indexCount )
6656 && ( instanceCount == rhs.instanceCount )
6657 && ( firstIndex == rhs.firstIndex )
6658 && ( vertexOffset == rhs.vertexOffset )
6659 && ( firstInstance == rhs.firstInstance );
6660 }
6661
6662 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
6663 {
6664 return !operator==( rhs );
6665 }
6666
6667 uint32_t indexCount;
6668 uint32_t instanceCount;
6669 uint32_t firstIndex;
6670 int32_t vertexOffset;
6671 uint32_t firstInstance;
6672 };
6673 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
6674
6675 struct DispatchIndirectCommand
6676 {
6677 DispatchIndirectCommand( uint32_t x_ = 0,
6678 uint32_t y_ = 0,
6679 uint32_t z_ = 0 )
6680 : x( x_ )
6681 , y( y_ )
6682 , z( z_ )
6683 {
6684 }
6685
6686 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
6687 {
6688 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
6689 }
6690
6691 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
6692 {
6693 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
6694 return *this;
6695 }
6696 DispatchIndirectCommand& setX( uint32_t x_ )
6697 {
6698 x = x_;
6699 return *this;
6700 }
6701
6702 DispatchIndirectCommand& setY( uint32_t y_ )
6703 {
6704 y = y_;
6705 return *this;
6706 }
6707
6708 DispatchIndirectCommand& setZ( uint32_t z_ )
6709 {
6710 z = z_;
6711 return *this;
6712 }
6713
6714 operator const VkDispatchIndirectCommand&() const
6715 {
6716 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
6717 }
6718
6719 bool operator==( DispatchIndirectCommand const& rhs ) const
6720 {
6721 return ( x == rhs.x )
6722 && ( y == rhs.y )
6723 && ( z == rhs.z );
6724 }
6725
6726 bool operator!=( DispatchIndirectCommand const& rhs ) const
6727 {
6728 return !operator==( rhs );
6729 }
6730
6731 uint32_t x;
6732 uint32_t y;
6733 uint32_t z;
6734 };
6735 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
6736
6737 struct DisplayPlanePropertiesKHR
6738 {
6739 operator const VkDisplayPlanePropertiesKHR&() const
6740 {
6741 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
6742 }
6743
6744 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
6745 {
6746 return ( currentDisplay == rhs.currentDisplay )
6747 && ( currentStackIndex == rhs.currentStackIndex );
6748 }
6749
6750 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
6751 {
6752 return !operator==( rhs );
6753 }
6754
6755 DisplayKHR currentDisplay;
6756 uint32_t currentStackIndex;
6757 };
6758 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
6759
6760 struct DisplayModeParametersKHR
6761 {
6762 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(),
6763 uint32_t refreshRate_ = 0 )
6764 : visibleRegion( visibleRegion_ )
6765 , refreshRate( refreshRate_ )
6766 {
6767 }
6768
6769 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
6770 {
6771 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
6772 }
6773
6774 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
6775 {
6776 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
6777 return *this;
6778 }
6779 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
6780 {
6781 visibleRegion = visibleRegion_;
6782 return *this;
6783 }
6784
6785 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
6786 {
6787 refreshRate = refreshRate_;
6788 return *this;
6789 }
6790
6791 operator const VkDisplayModeParametersKHR&() const
6792 {
6793 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
6794 }
6795
6796 bool operator==( DisplayModeParametersKHR const& rhs ) const
6797 {
6798 return ( visibleRegion == rhs.visibleRegion )
6799 && ( refreshRate == rhs.refreshRate );
6800 }
6801
6802 bool operator!=( DisplayModeParametersKHR const& rhs ) const
6803 {
6804 return !operator==( rhs );
6805 }
6806
6807 Extent2D visibleRegion;
6808 uint32_t refreshRate;
6809 };
6810 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
6811
6812 struct DisplayModePropertiesKHR
6813 {
6814 operator const VkDisplayModePropertiesKHR&() const
6815 {
6816 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
6817 }
6818
6819 bool operator==( DisplayModePropertiesKHR const& rhs ) const
6820 {
6821 return ( displayMode == rhs.displayMode )
6822 && ( parameters == rhs.parameters );
6823 }
6824
6825 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
6826 {
6827 return !operator==( rhs );
6828 }
6829
6830 DisplayModeKHR displayMode;
6831 DisplayModeParametersKHR parameters;
6832 };
6833 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
6834
6835 struct RectLayerKHR
6836 {
6837 RectLayerKHR( Offset2D offset_ = Offset2D(),
6838 Extent2D extent_ = Extent2D(),
6839 uint32_t layer_ = 0 )
6840 : offset( offset_ )
6841 , extent( extent_ )
6842 , layer( layer_ )
6843 {
6844 }
6845
6846 explicit RectLayerKHR( Rect2D const& rect2D,
6847 uint32_t layer_ = 0 )
6848 : offset( rect2D.offset )
6849 , extent( rect2D.extent )
6850 , layer( layer_ )
6851 {}
6852
6853 RectLayerKHR( VkRectLayerKHR const & rhs )
6854 {
6855 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
6856 }
6857
6858 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
6859 {
6860 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
6861 return *this;
6862 }
6863 RectLayerKHR& setOffset( Offset2D offset_ )
6864 {
6865 offset = offset_;
6866 return *this;
6867 }
6868
6869 RectLayerKHR& setExtent( Extent2D extent_ )
6870 {
6871 extent = extent_;
6872 return *this;
6873 }
6874
6875 RectLayerKHR& setLayer( uint32_t layer_ )
6876 {
6877 layer = layer_;
6878 return *this;
6879 }
6880
6881 operator const VkRectLayerKHR&() const
6882 {
6883 return *reinterpret_cast<const VkRectLayerKHR*>(this);
6884 }
6885
6886 bool operator==( RectLayerKHR const& rhs ) const
6887 {
6888 return ( offset == rhs.offset )
6889 && ( extent == rhs.extent )
6890 && ( layer == rhs.layer );
6891 }
6892
6893 bool operator!=( RectLayerKHR const& rhs ) const
6894 {
6895 return !operator==( rhs );
6896 }
6897
6898 Offset2D offset;
6899 Extent2D extent;
6900 uint32_t layer;
6901 };
6902 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
6903
6904 struct PresentRegionKHR
6905 {
6906 PresentRegionKHR( uint32_t rectangleCount_ = 0,
6907 const RectLayerKHR* pRectangles_ = nullptr )
6908 : rectangleCount( rectangleCount_ )
6909 , pRectangles( pRectangles_ )
6910 {
6911 }
6912
6913 PresentRegionKHR( VkPresentRegionKHR const & rhs )
6914 {
6915 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
6916 }
6917
6918 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
6919 {
6920 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
6921 return *this;
6922 }
6923 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
6924 {
6925 rectangleCount = rectangleCount_;
6926 return *this;
6927 }
6928
6929 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
6930 {
6931 pRectangles = pRectangles_;
6932 return *this;
6933 }
6934
6935 operator const VkPresentRegionKHR&() const
6936 {
6937 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
6938 }
6939
6940 bool operator==( PresentRegionKHR const& rhs ) const
6941 {
6942 return ( rectangleCount == rhs.rectangleCount )
6943 && ( pRectangles == rhs.pRectangles );
6944 }
6945
6946 bool operator!=( PresentRegionKHR const& rhs ) const
6947 {
6948 return !operator==( rhs );
6949 }
6950
6951 uint32_t rectangleCount;
6952 const RectLayerKHR* pRectangles;
6953 };
6954 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
6955
6956 struct XYColorEXT
6957 {
6958 XYColorEXT( float x_ = 0,
6959 float y_ = 0 )
6960 : x( x_ )
6961 , y( y_ )
6962 {
6963 }
6964
6965 XYColorEXT( VkXYColorEXT const & rhs )
6966 {
6967 memcpy( this, &rhs, sizeof( XYColorEXT ) );
6968 }
6969
6970 XYColorEXT& operator=( VkXYColorEXT const & rhs )
6971 {
6972 memcpy( this, &rhs, sizeof( XYColorEXT ) );
6973 return *this;
6974 }
6975 XYColorEXT& setX( float x_ )
6976 {
6977 x = x_;
6978 return *this;
6979 }
6980
6981 XYColorEXT& setY( float y_ )
6982 {
6983 y = y_;
6984 return *this;
6985 }
6986
6987 operator const VkXYColorEXT&() const
6988 {
6989 return *reinterpret_cast<const VkXYColorEXT*>(this);
6990 }
6991
6992 bool operator==( XYColorEXT const& rhs ) const
6993 {
6994 return ( x == rhs.x )
6995 && ( y == rhs.y );
6996 }
6997
6998 bool operator!=( XYColorEXT const& rhs ) const
6999 {
7000 return !operator==( rhs );
7001 }
7002
7003 float x;
7004 float y;
7005 };
7006 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
7007
7008 struct RefreshCycleDurationGOOGLE
7009 {
7010 operator const VkRefreshCycleDurationGOOGLE&() const
7011 {
7012 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
7013 }
7014
7015 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
7016 {
7017 return ( refreshDuration == rhs.refreshDuration );
7018 }
7019
7020 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
7021 {
7022 return !operator==( rhs );
7023 }
7024
7025 uint64_t refreshDuration;
7026 };
7027 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
7028
7029 struct PastPresentationTimingGOOGLE
7030 {
7031 operator const VkPastPresentationTimingGOOGLE&() const
7032 {
7033 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
7034 }
7035
7036 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
7037 {
7038 return ( presentID == rhs.presentID )
7039 && ( desiredPresentTime == rhs.desiredPresentTime )
7040 && ( actualPresentTime == rhs.actualPresentTime )
7041 && ( earliestPresentTime == rhs.earliestPresentTime )
7042 && ( presentMargin == rhs.presentMargin );
7043 }
7044
7045 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
7046 {
7047 return !operator==( rhs );
7048 }
7049
7050 uint32_t presentID;
7051 uint64_t desiredPresentTime;
7052 uint64_t actualPresentTime;
7053 uint64_t earliestPresentTime;
7054 uint64_t presentMargin;
7055 };
7056 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
7057
7058 struct PresentTimeGOOGLE
7059 {
7060 PresentTimeGOOGLE( uint32_t presentID_ = 0,
7061 uint64_t desiredPresentTime_ = 0 )
7062 : presentID( presentID_ )
7063 , desiredPresentTime( desiredPresentTime_ )
7064 {
7065 }
7066
7067 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
7068 {
7069 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
7070 }
7071
7072 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
7073 {
7074 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
7075 return *this;
7076 }
7077 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
7078 {
7079 presentID = presentID_;
7080 return *this;
7081 }
7082
7083 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
7084 {
7085 desiredPresentTime = desiredPresentTime_;
7086 return *this;
7087 }
7088
7089 operator const VkPresentTimeGOOGLE&() const
7090 {
7091 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
7092 }
7093
7094 bool operator==( PresentTimeGOOGLE const& rhs ) const
7095 {
7096 return ( presentID == rhs.presentID )
7097 && ( desiredPresentTime == rhs.desiredPresentTime );
7098 }
7099
7100 bool operator!=( PresentTimeGOOGLE const& rhs ) const
7101 {
7102 return !operator==( rhs );
7103 }
7104
7105 uint32_t presentID;
7106 uint64_t desiredPresentTime;
7107 };
7108 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
7109
7110 struct ViewportWScalingNV
7111 {
7112 ViewportWScalingNV( float xcoeff_ = 0,
7113 float ycoeff_ = 0 )
7114 : xcoeff( xcoeff_ )
7115 , ycoeff( ycoeff_ )
7116 {
7117 }
7118
7119 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
7120 {
7121 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
7122 }
7123
7124 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
7125 {
7126 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
7127 return *this;
7128 }
7129 ViewportWScalingNV& setXcoeff( float xcoeff_ )
7130 {
7131 xcoeff = xcoeff_;
7132 return *this;
7133 }
7134
7135 ViewportWScalingNV& setYcoeff( float ycoeff_ )
7136 {
7137 ycoeff = ycoeff_;
7138 return *this;
7139 }
7140
7141 operator const VkViewportWScalingNV&() const
7142 {
7143 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
7144 }
7145
7146 bool operator==( ViewportWScalingNV const& rhs ) const
7147 {
7148 return ( xcoeff == rhs.xcoeff )
7149 && ( ycoeff == rhs.ycoeff );
7150 }
7151
7152 bool operator!=( ViewportWScalingNV const& rhs ) const
7153 {
7154 return !operator==( rhs );
7155 }
7156
7157 float xcoeff;
7158 float ycoeff;
7159 };
7160 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
7161
7162 struct SampleLocationEXT
7163 {
7164 SampleLocationEXT( float x_ = 0,
7165 float y_ = 0 )
7166 : x( x_ )
7167 , y( y_ )
7168 {
7169 }
7170
7171 SampleLocationEXT( VkSampleLocationEXT const & rhs )
7172 {
7173 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
7174 }
7175
7176 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
7177 {
7178 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
7179 return *this;
7180 }
7181 SampleLocationEXT& setX( float x_ )
7182 {
7183 x = x_;
7184 return *this;
7185 }
7186
7187 SampleLocationEXT& setY( float y_ )
7188 {
7189 y = y_;
7190 return *this;
7191 }
7192
7193 operator const VkSampleLocationEXT&() const
7194 {
7195 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
7196 }
7197
7198 bool operator==( SampleLocationEXT const& rhs ) const
7199 {
7200 return ( x == rhs.x )
7201 && ( y == rhs.y );
7202 }
7203
7204 bool operator!=( SampleLocationEXT const& rhs ) const
7205 {
7206 return !operator==( rhs );
7207 }
7208
7209 float x;
7210 float y;
7211 };
7212 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
7213
7214 struct ShaderResourceUsageAMD
7215 {
7216 operator const VkShaderResourceUsageAMD&() const
7217 {
7218 return *reinterpret_cast<const VkShaderResourceUsageAMD*>(this);
7219 }
7220
7221 bool operator==( ShaderResourceUsageAMD const& rhs ) const
7222 {
7223 return ( numUsedVgprs == rhs.numUsedVgprs )
7224 && ( numUsedSgprs == rhs.numUsedSgprs )
7225 && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup )
7226 && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes )
7227 && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
7228 }
7229
7230 bool operator!=( ShaderResourceUsageAMD const& rhs ) const
7231 {
7232 return !operator==( rhs );
7233 }
7234
7235 uint32_t numUsedVgprs;
7236 uint32_t numUsedSgprs;
7237 uint32_t ldsSizePerLocalWorkGroup;
7238 size_t ldsUsageSizeInBytes;
7239 size_t scratchMemUsageInBytes;
7240 };
7241 static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" );
7242
7243 struct VertexInputBindingDivisorDescriptionEXT
7244 {
7245 VertexInputBindingDivisorDescriptionEXT( uint32_t binding_ = 0,
7246 uint32_t divisor_ = 0 )
7247 : binding( binding_ )
7248 , divisor( divisor_ )
7249 {
7250 }
7251
7252 VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
7253 {
7254 memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
7255 }
7256
7257 VertexInputBindingDivisorDescriptionEXT& operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
7258 {
7259 memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
7260 return *this;
7261 }
7262 VertexInputBindingDivisorDescriptionEXT& setBinding( uint32_t binding_ )
7263 {
7264 binding = binding_;
7265 return *this;
7266 }
7267
7268 VertexInputBindingDivisorDescriptionEXT& setDivisor( uint32_t divisor_ )
7269 {
7270 divisor = divisor_;
7271 return *this;
7272 }
7273
7274 operator const VkVertexInputBindingDivisorDescriptionEXT&() const
7275 {
7276 return *reinterpret_cast<const VkVertexInputBindingDivisorDescriptionEXT*>(this);
7277 }
7278
7279 bool operator==( VertexInputBindingDivisorDescriptionEXT const& rhs ) const
7280 {
7281 return ( binding == rhs.binding )
7282 && ( divisor == rhs.divisor );
7283 }
7284
7285 bool operator!=( VertexInputBindingDivisorDescriptionEXT const& rhs ) const
7286 {
7287 return !operator==( rhs );
7288 }
7289
7290 uint32_t binding;
7291 uint32_t divisor;
7292 };
7293 static_assert( sizeof( VertexInputBindingDivisorDescriptionEXT ) == sizeof( VkVertexInputBindingDivisorDescriptionEXT ), "struct and wrapper have different size!" );
7294
7295 enum class ImageLayout
7296 {
7297 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
7298 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
7299 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
7300 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
7301 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
7302 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
7303 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
7304 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
7305 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
7306 eDepthReadOnlyStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
7307 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
7308 eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
7309 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
7310 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
7311 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
7312 };
7313
7314 struct DescriptorImageInfo
7315 {
7316 DescriptorImageInfo( Sampler sampler_ = Sampler(),
7317 ImageView imageView_ = ImageView(),
7318 ImageLayout imageLayout_ = ImageLayout::eUndefined )
7319 : sampler( sampler_ )
7320 , imageView( imageView_ )
7321 , imageLayout( imageLayout_ )
7322 {
7323 }
7324
7325 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
7326 {
7327 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
7328 }
7329
7330 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
7331 {
7332 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
7333 return *this;
7334 }
7335 DescriptorImageInfo& setSampler( Sampler sampler_ )
7336 {
7337 sampler = sampler_;
7338 return *this;
7339 }
7340
7341 DescriptorImageInfo& setImageView( ImageView imageView_ )
7342 {
7343 imageView = imageView_;
7344 return *this;
7345 }
7346
7347 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
7348 {
7349 imageLayout = imageLayout_;
7350 return *this;
7351 }
7352
7353 operator const VkDescriptorImageInfo&() const
7354 {
7355 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
7356 }
7357
7358 bool operator==( DescriptorImageInfo const& rhs ) const
7359 {
7360 return ( sampler == rhs.sampler )
7361 && ( imageView == rhs.imageView )
7362 && ( imageLayout == rhs.imageLayout );
7363 }
7364
7365 bool operator!=( DescriptorImageInfo const& rhs ) const
7366 {
7367 return !operator==( rhs );
7368 }
7369
7370 Sampler sampler;
7371 ImageView imageView;
7372 ImageLayout imageLayout;
7373 };
7374 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
7375
7376 struct AttachmentReference
7377 {
7378 AttachmentReference( uint32_t attachment_ = 0,
7379 ImageLayout layout_ = ImageLayout::eUndefined )
7380 : attachment( attachment_ )
7381 , layout( layout_ )
7382 {
7383 }
7384
7385 AttachmentReference( VkAttachmentReference const & rhs )
7386 {
7387 memcpy( this, &rhs, sizeof( AttachmentReference ) );
7388 }
7389
7390 AttachmentReference& operator=( VkAttachmentReference const & rhs )
7391 {
7392 memcpy( this, &rhs, sizeof( AttachmentReference ) );
7393 return *this;
7394 }
7395 AttachmentReference& setAttachment( uint32_t attachment_ )
7396 {
7397 attachment = attachment_;
7398 return *this;
7399 }
7400
7401 AttachmentReference& setLayout( ImageLayout layout_ )
7402 {
7403 layout = layout_;
7404 return *this;
7405 }
7406
7407 operator const VkAttachmentReference&() const
7408 {
7409 return *reinterpret_cast<const VkAttachmentReference*>(this);
7410 }
7411
7412 bool operator==( AttachmentReference const& rhs ) const
7413 {
7414 return ( attachment == rhs.attachment )
7415 && ( layout == rhs.layout );
7416 }
7417
7418 bool operator!=( AttachmentReference const& rhs ) const
7419 {
7420 return !operator==( rhs );
7421 }
7422
7423 uint32_t attachment;
7424 ImageLayout layout;
7425 };
7426 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
7427
7428 enum class AttachmentLoadOp
7429 {
7430 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
7431 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
7432 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
7433 };
7434
7435 enum class AttachmentStoreOp
7436 {
7437 eStore = VK_ATTACHMENT_STORE_OP_STORE,
7438 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
7439 };
7440
7441 enum class ImageType
7442 {
7443 e1D = VK_IMAGE_TYPE_1D,
7444 e2D = VK_IMAGE_TYPE_2D,
7445 e3D = VK_IMAGE_TYPE_3D
7446 };
7447
7448 enum class ImageTiling
7449 {
7450 eOptimal = VK_IMAGE_TILING_OPTIMAL,
7451 eLinear = VK_IMAGE_TILING_LINEAR
7452 };
7453
7454 enum class ImageViewType
7455 {
7456 e1D = VK_IMAGE_VIEW_TYPE_1D,
7457 e2D = VK_IMAGE_VIEW_TYPE_2D,
7458 e3D = VK_IMAGE_VIEW_TYPE_3D,
7459 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
7460 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
7461 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
7462 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
7463 };
7464
7465 enum class CommandBufferLevel
7466 {
7467 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
7468 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
7469 };
7470
7471 enum class ComponentSwizzle
7472 {
7473 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
7474 eZero = VK_COMPONENT_SWIZZLE_ZERO,
7475 eOne = VK_COMPONENT_SWIZZLE_ONE,
7476 eR = VK_COMPONENT_SWIZZLE_R,
7477 eG = VK_COMPONENT_SWIZZLE_G,
7478 eB = VK_COMPONENT_SWIZZLE_B,
7479 eA = VK_COMPONENT_SWIZZLE_A
7480 };
7481
7482 struct ComponentMapping
7483 {
7484 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity,
7485 ComponentSwizzle g_ = ComponentSwizzle::eIdentity,
7486 ComponentSwizzle b_ = ComponentSwizzle::eIdentity,
7487 ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
7488 : r( r_ )
7489 , g( g_ )
7490 , b( b_ )
7491 , a( a_ )
7492 {
7493 }
7494
7495 ComponentMapping( VkComponentMapping const & rhs )
7496 {
7497 memcpy( this, &rhs, sizeof( ComponentMapping ) );
7498 }
7499
7500 ComponentMapping& operator=( VkComponentMapping const & rhs )
7501 {
7502 memcpy( this, &rhs, sizeof( ComponentMapping ) );
7503 return *this;
7504 }
7505 ComponentMapping& setR( ComponentSwizzle r_ )
7506 {
7507 r = r_;
7508 return *this;
7509 }
7510
7511 ComponentMapping& setG( ComponentSwizzle g_ )
7512 {
7513 g = g_;
7514 return *this;
7515 }
7516
7517 ComponentMapping& setB( ComponentSwizzle b_ )
7518 {
7519 b = b_;
7520 return *this;
7521 }
7522
7523 ComponentMapping& setA( ComponentSwizzle a_ )
7524 {
7525 a = a_;
7526 return *this;
7527 }
7528
7529 operator const VkComponentMapping&() const
7530 {
7531 return *reinterpret_cast<const VkComponentMapping*>(this);
7532 }
7533
7534 bool operator==( ComponentMapping const& rhs ) const
7535 {
7536 return ( r == rhs.r )
7537 && ( g == rhs.g )
7538 && ( b == rhs.b )
7539 && ( a == rhs.a );
7540 }
7541
7542 bool operator!=( ComponentMapping const& rhs ) const
7543 {
7544 return !operator==( rhs );
7545 }
7546
7547 ComponentSwizzle r;
7548 ComponentSwizzle g;
7549 ComponentSwizzle b;
7550 ComponentSwizzle a;
7551 };
7552 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
7553
7554 enum class DescriptorType
7555 {
7556 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
7557 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
7558 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
7559 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
7560 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
7561 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
7562 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
7563 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
7564 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
7565 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
7566 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
7567 };
7568
7569 struct DescriptorPoolSize
7570 {
7571 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler,
7572 uint32_t descriptorCount_ = 0 )
7573 : type( type_ )
7574 , descriptorCount( descriptorCount_ )
7575 {
7576 }
7577
7578 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
7579 {
7580 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
7581 }
7582
7583 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
7584 {
7585 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
7586 return *this;
7587 }
7588 DescriptorPoolSize& setType( DescriptorType type_ )
7589 {
7590 type = type_;
7591 return *this;
7592 }
7593
7594 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
7595 {
7596 descriptorCount = descriptorCount_;
7597 return *this;
7598 }
7599
7600 operator const VkDescriptorPoolSize&() const
7601 {
7602 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
7603 }
7604
7605 bool operator==( DescriptorPoolSize const& rhs ) const
7606 {
7607 return ( type == rhs.type )
7608 && ( descriptorCount == rhs.descriptorCount );
7609 }
7610
7611 bool operator!=( DescriptorPoolSize const& rhs ) const
7612 {
7613 return !operator==( rhs );
7614 }
7615
7616 DescriptorType type;
7617 uint32_t descriptorCount;
7618 };
7619 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
7620
7621 struct DescriptorUpdateTemplateEntry
7622 {
7623 DescriptorUpdateTemplateEntry( uint32_t dstBinding_ = 0,
7624 uint32_t dstArrayElement_ = 0,
7625 uint32_t descriptorCount_ = 0,
7626 DescriptorType descriptorType_ = DescriptorType::eSampler,
7627 size_t offset_ = 0,
7628 size_t stride_ = 0 )
7629 : dstBinding( dstBinding_ )
7630 , dstArrayElement( dstArrayElement_ )
7631 , descriptorCount( descriptorCount_ )
7632 , descriptorType( descriptorType_ )
7633 , offset( offset_ )
7634 , stride( stride_ )
7635 {
7636 }
7637
7638 DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs )
7639 {
7640 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
7641 }
7642
7643 DescriptorUpdateTemplateEntry& operator=( VkDescriptorUpdateTemplateEntry const & rhs )
7644 {
7645 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
7646 return *this;
7647 }
7648 DescriptorUpdateTemplateEntry& setDstBinding( uint32_t dstBinding_ )
7649 {
7650 dstBinding = dstBinding_;
7651 return *this;
7652 }
7653
7654 DescriptorUpdateTemplateEntry& setDstArrayElement( uint32_t dstArrayElement_ )
7655 {
7656 dstArrayElement = dstArrayElement_;
7657 return *this;
7658 }
7659
7660 DescriptorUpdateTemplateEntry& setDescriptorCount( uint32_t descriptorCount_ )
7661 {
7662 descriptorCount = descriptorCount_;
7663 return *this;
7664 }
7665
7666 DescriptorUpdateTemplateEntry& setDescriptorType( DescriptorType descriptorType_ )
7667 {
7668 descriptorType = descriptorType_;
7669 return *this;
7670 }
7671
7672 DescriptorUpdateTemplateEntry& setOffset( size_t offset_ )
7673 {
7674 offset = offset_;
7675 return *this;
7676 }
7677
7678 DescriptorUpdateTemplateEntry& setStride( size_t stride_ )
7679 {
7680 stride = stride_;
7681 return *this;
7682 }
7683
7684 operator const VkDescriptorUpdateTemplateEntry&() const
7685 {
7686 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntry*>(this);
7687 }
7688
7689 bool operator==( DescriptorUpdateTemplateEntry const& rhs ) const
7690 {
7691 return ( dstBinding == rhs.dstBinding )
7692 && ( dstArrayElement == rhs.dstArrayElement )
7693 && ( descriptorCount == rhs.descriptorCount )
7694 && ( descriptorType == rhs.descriptorType )
7695 && ( offset == rhs.offset )
7696 && ( stride == rhs.stride );
7697 }
7698
7699 bool operator!=( DescriptorUpdateTemplateEntry const& rhs ) const
7700 {
7701 return !operator==( rhs );
7702 }
7703
7704 uint32_t dstBinding;
7705 uint32_t dstArrayElement;
7706 uint32_t descriptorCount;
7707 DescriptorType descriptorType;
7708 size_t offset;
7709 size_t stride;
7710 };
7711 static_assert( sizeof( DescriptorUpdateTemplateEntry ) == sizeof( VkDescriptorUpdateTemplateEntry ), "struct and wrapper have different size!" );
7712
7713 using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
7714
7715 enum class QueryType
7716 {
7717 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
7718 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
7719 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
7720 };
7721
7722 enum class BorderColor
7723 {
7724 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
7725 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
7726 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
7727 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
7728 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
7729 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
7730 };
7731
7732 enum class PipelineBindPoint
7733 {
7734 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
7735 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
7736 };
7737
7738 enum class PipelineCacheHeaderVersion
7739 {
7740 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
7741 };
7742
7743 enum class PrimitiveTopology
7744 {
7745 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
7746 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
7747 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
7748 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
7749 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
7750 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
7751 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
7752 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
7753 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
7754 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
7755 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
7756 };
7757
7758 enum class SharingMode
7759 {
7760 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
7761 eConcurrent = VK_SHARING_MODE_CONCURRENT
7762 };
7763
7764 enum class IndexType
7765 {
7766 eUint16 = VK_INDEX_TYPE_UINT16,
7767 eUint32 = VK_INDEX_TYPE_UINT32
7768 };
7769
7770 enum class Filter
7771 {
7772 eNearest = VK_FILTER_NEAREST,
7773 eLinear = VK_FILTER_LINEAR,
7774 eCubicIMG = VK_FILTER_CUBIC_IMG
7775 };
7776
7777 enum class SamplerMipmapMode
7778 {
7779 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
7780 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
7781 };
7782
7783 enum class SamplerAddressMode
7784 {
7785 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
7786 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
7787 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
7788 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
7789 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
7790 };
7791
7792 enum class CompareOp
7793 {
7794 eNever = VK_COMPARE_OP_NEVER,
7795 eLess = VK_COMPARE_OP_LESS,
7796 eEqual = VK_COMPARE_OP_EQUAL,
7797 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
7798 eGreater = VK_COMPARE_OP_GREATER,
7799 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
7800 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
7801 eAlways = VK_COMPARE_OP_ALWAYS
7802 };
7803
7804 enum class PolygonMode
7805 {
7806 eFill = VK_POLYGON_MODE_FILL,
7807 eLine = VK_POLYGON_MODE_LINE,
7808 ePoint = VK_POLYGON_MODE_POINT,
7809 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
7810 };
7811
7812 enum class CullModeFlagBits
7813 {
7814 eNone = VK_CULL_MODE_NONE,
7815 eFront = VK_CULL_MODE_FRONT_BIT,
7816 eBack = VK_CULL_MODE_BACK_BIT,
7817 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
7818 };
7819
7820 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
7821
7822 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
7823 {
7824 return CullModeFlags( bit0 ) | bit1;
7825 }
7826
7827 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
7828 {
7829 return ~( CullModeFlags( bits ) );
7830 }
7831
7832 template <> struct FlagTraits<CullModeFlagBits>
7833 {
7834 enum
7835 {
7836 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
7837 };
7838 };
7839
7840 enum class FrontFace
7841 {
7842 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
7843 eClockwise = VK_FRONT_FACE_CLOCKWISE
7844 };
7845
7846 enum class BlendFactor
7847 {
7848 eZero = VK_BLEND_FACTOR_ZERO,
7849 eOne = VK_BLEND_FACTOR_ONE,
7850 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
7851 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
7852 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
7853 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
7854 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
7855 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
7856 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
7857 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
7858 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
7859 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
7860 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
7861 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
7862 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
7863 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
7864 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
7865 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
7866 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
7867 };
7868
7869 enum class BlendOp
7870 {
7871 eAdd = VK_BLEND_OP_ADD,
7872 eSubtract = VK_BLEND_OP_SUBTRACT,
7873 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
7874 eMin = VK_BLEND_OP_MIN,
7875 eMax = VK_BLEND_OP_MAX,
7876 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
7877 eSrcEXT = VK_BLEND_OP_SRC_EXT,
7878 eDstEXT = VK_BLEND_OP_DST_EXT,
7879 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
7880 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
7881 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
7882 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
7883 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
7884 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
7885 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
7886 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
7887 eXorEXT = VK_BLEND_OP_XOR_EXT,
7888 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
7889 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
7890 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
7891 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
7892 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
7893 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
7894 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
7895 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
7896 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
7897 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
7898 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
7899 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
7900 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
7901 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
7902 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
7903 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
7904 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
7905 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
7906 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
7907 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
7908 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
7909 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
7910 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
7911 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
7912 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
7913 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
7914 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
7915 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
7916 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
7917 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
7918 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
7919 eRedEXT = VK_BLEND_OP_RED_EXT,
7920 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
7921 eBlueEXT = VK_BLEND_OP_BLUE_EXT
7922 };
7923
7924 enum class StencilOp
7925 {
7926 eKeep = VK_STENCIL_OP_KEEP,
7927 eZero = VK_STENCIL_OP_ZERO,
7928 eReplace = VK_STENCIL_OP_REPLACE,
7929 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
7930 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
7931 eInvert = VK_STENCIL_OP_INVERT,
7932 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
7933 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
7934 };
7935
7936 struct StencilOpState
7937 {
7938 StencilOpState( StencilOp failOp_ = StencilOp::eKeep,
7939 StencilOp passOp_ = StencilOp::eKeep,
7940 StencilOp depthFailOp_ = StencilOp::eKeep,
7941 CompareOp compareOp_ = CompareOp::eNever,
7942 uint32_t compareMask_ = 0,
7943 uint32_t writeMask_ = 0,
7944 uint32_t reference_ = 0 )
7945 : failOp( failOp_ )
7946 , passOp( passOp_ )
7947 , depthFailOp( depthFailOp_ )
7948 , compareOp( compareOp_ )
7949 , compareMask( compareMask_ )
7950 , writeMask( writeMask_ )
7951 , reference( reference_ )
7952 {
7953 }
7954
7955 StencilOpState( VkStencilOpState const & rhs )
7956 {
7957 memcpy( this, &rhs, sizeof( StencilOpState ) );
7958 }
7959
7960 StencilOpState& operator=( VkStencilOpState const & rhs )
7961 {
7962 memcpy( this, &rhs, sizeof( StencilOpState ) );
7963 return *this;
7964 }
7965 StencilOpState& setFailOp( StencilOp failOp_ )
7966 {
7967 failOp = failOp_;
7968 return *this;
7969 }
7970
7971 StencilOpState& setPassOp( StencilOp passOp_ )
7972 {
7973 passOp = passOp_;
7974 return *this;
7975 }
7976
7977 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
7978 {
7979 depthFailOp = depthFailOp_;
7980 return *this;
7981 }
7982
7983 StencilOpState& setCompareOp( CompareOp compareOp_ )
7984 {
7985 compareOp = compareOp_;
7986 return *this;
7987 }
7988
7989 StencilOpState& setCompareMask( uint32_t compareMask_ )
7990 {
7991 compareMask = compareMask_;
7992 return *this;
7993 }
7994
7995 StencilOpState& setWriteMask( uint32_t writeMask_ )
7996 {
7997 writeMask = writeMask_;
7998 return *this;
7999 }
8000
8001 StencilOpState& setReference( uint32_t reference_ )
8002 {
8003 reference = reference_;
8004 return *this;
8005 }
8006
8007 operator const VkStencilOpState&() const
8008 {
8009 return *reinterpret_cast<const VkStencilOpState*>(this);
8010 }
8011
8012 bool operator==( StencilOpState const& rhs ) const
8013 {
8014 return ( failOp == rhs.failOp )
8015 && ( passOp == rhs.passOp )
8016 && ( depthFailOp == rhs.depthFailOp )
8017 && ( compareOp == rhs.compareOp )
8018 && ( compareMask == rhs.compareMask )
8019 && ( writeMask == rhs.writeMask )
8020 && ( reference == rhs.reference );
8021 }
8022
8023 bool operator!=( StencilOpState const& rhs ) const
8024 {
8025 return !operator==( rhs );
8026 }
8027
8028 StencilOp failOp;
8029 StencilOp passOp;
8030 StencilOp depthFailOp;
8031 CompareOp compareOp;
8032 uint32_t compareMask;
8033 uint32_t writeMask;
8034 uint32_t reference;
8035 };
8036 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
8037
8038 enum class LogicOp
8039 {
8040 eClear = VK_LOGIC_OP_CLEAR,
8041 eAnd = VK_LOGIC_OP_AND,
8042 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
8043 eCopy = VK_LOGIC_OP_COPY,
8044 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
8045 eNoOp = VK_LOGIC_OP_NO_OP,
8046 eXor = VK_LOGIC_OP_XOR,
8047 eOr = VK_LOGIC_OP_OR,
8048 eNor = VK_LOGIC_OP_NOR,
8049 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
8050 eInvert = VK_LOGIC_OP_INVERT,
8051 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
8052 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
8053 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
8054 eNand = VK_LOGIC_OP_NAND,
8055 eSet = VK_LOGIC_OP_SET
8056 };
8057
8058 enum class InternalAllocationType
8059 {
8060 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
8061 };
8062
8063 enum class SystemAllocationScope
8064 {
8065 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
8066 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
8067 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
8068 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
8069 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
8070 };
8071
8072 enum class PhysicalDeviceType
8073 {
8074 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
8075 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
8076 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
8077 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
8078 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
8079 };
8080
8081 enum class VertexInputRate
8082 {
8083 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
8084 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
8085 };
8086
8087 struct VertexInputBindingDescription
8088 {
8089 VertexInputBindingDescription( uint32_t binding_ = 0,
8090 uint32_t stride_ = 0,
8091 VertexInputRate inputRate_ = VertexInputRate::eVertex )
8092 : binding( binding_ )
8093 , stride( stride_ )
8094 , inputRate( inputRate_ )
8095 {
8096 }
8097
8098 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
8099 {
8100 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
8101 }
8102
8103 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
8104 {
8105 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
8106 return *this;
8107 }
8108 VertexInputBindingDescription& setBinding( uint32_t binding_ )
8109 {
8110 binding = binding_;
8111 return *this;
8112 }
8113
8114 VertexInputBindingDescription& setStride( uint32_t stride_ )
8115 {
8116 stride = stride_;
8117 return *this;
8118 }
8119
8120 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
8121 {
8122 inputRate = inputRate_;
8123 return *this;
8124 }
8125
8126 operator const VkVertexInputBindingDescription&() const
8127 {
8128 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
8129 }
8130
8131 bool operator==( VertexInputBindingDescription const& rhs ) const
8132 {
8133 return ( binding == rhs.binding )
8134 && ( stride == rhs.stride )
8135 && ( inputRate == rhs.inputRate );
8136 }
8137
8138 bool operator!=( VertexInputBindingDescription const& rhs ) const
8139 {
8140 return !operator==( rhs );
8141 }
8142
8143 uint32_t binding;
8144 uint32_t stride;
8145 VertexInputRate inputRate;
8146 };
8147 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
8148
8149 enum class Format
8150 {
8151 eUndefined = VK_FORMAT_UNDEFINED,
8152 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
8153 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
8154 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
8155 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
8156 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
8157 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
8158 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
8159 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
8160 eR8Unorm = VK_FORMAT_R8_UNORM,
8161 eR8Snorm = VK_FORMAT_R8_SNORM,
8162 eR8Uscaled = VK_FORMAT_R8_USCALED,
8163 eR8Sscaled = VK_FORMAT_R8_SSCALED,
8164 eR8Uint = VK_FORMAT_R8_UINT,
8165 eR8Sint = VK_FORMAT_R8_SINT,
8166 eR8Srgb = VK_FORMAT_R8_SRGB,
8167 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
8168 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
8169 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
8170 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
8171 eR8G8Uint = VK_FORMAT_R8G8_UINT,
8172 eR8G8Sint = VK_FORMAT_R8G8_SINT,
8173 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
8174 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
8175 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
8176 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
8177 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
8178 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
8179 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
8180 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
8181 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
8182 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
8183 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
8184 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
8185 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
8186 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
8187 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
8188 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
8189 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
8190 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
8191 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
8192 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
8193 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
8194 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
8195 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
8196 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
8197 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
8198 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
8199 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
8200 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
8201 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
8202 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
8203 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
8204 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
8205 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
8206 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
8207 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
8208 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
8209 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
8210 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
8211 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
8212 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
8213 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
8214 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
8215 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
8216 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
8217 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
8218 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
8219 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
8220 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
8221 eR16Unorm = VK_FORMAT_R16_UNORM,
8222 eR16Snorm = VK_FORMAT_R16_SNORM,
8223 eR16Uscaled = VK_FORMAT_R16_USCALED,
8224 eR16Sscaled = VK_FORMAT_R16_SSCALED,
8225 eR16Uint = VK_FORMAT_R16_UINT,
8226 eR16Sint = VK_FORMAT_R16_SINT,
8227 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
8228 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
8229 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
8230 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
8231 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
8232 eR16G16Uint = VK_FORMAT_R16G16_UINT,
8233 eR16G16Sint = VK_FORMAT_R16G16_SINT,
8234 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
8235 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
8236 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
8237 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
8238 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
8239 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
8240 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
8241 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
8242 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
8243 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
8244 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
8245 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
8246 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
8247 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
8248 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
8249 eR32Uint = VK_FORMAT_R32_UINT,
8250 eR32Sint = VK_FORMAT_R32_SINT,
8251 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
8252 eR32G32Uint = VK_FORMAT_R32G32_UINT,
8253 eR32G32Sint = VK_FORMAT_R32G32_SINT,
8254 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
8255 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
8256 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
8257 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
8258 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
8259 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
8260 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
8261 eR64Uint = VK_FORMAT_R64_UINT,
8262 eR64Sint = VK_FORMAT_R64_SINT,
8263 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
8264 eR64G64Uint = VK_FORMAT_R64G64_UINT,
8265 eR64G64Sint = VK_FORMAT_R64G64_SINT,
8266 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
8267 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
8268 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
8269 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
8270 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
8271 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
8272 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
8273 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
8274 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
8275 eD16Unorm = VK_FORMAT_D16_UNORM,
8276 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
8277 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
8278 eS8Uint = VK_FORMAT_S8_UINT,
8279 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
8280 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
8281 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
8282 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
8283 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
8284 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
8285 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
8286 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
8287 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
8288 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
8289 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
8290 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
8291 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
8292 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
8293 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
8294 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
8295 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
8296 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
8297 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
8298 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
8299 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
8300 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
8301 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
8302 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
8303 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
8304 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
8305 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
8306 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
8307 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
8308 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
8309 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
8310 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
8311 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
8312 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
8313 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
8314 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
8315 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
8316 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
8317 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
8318 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
8319 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
8320 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
8321 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
8322 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
8323 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
8324 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
8325 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
8326 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
8327 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
8328 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
8329 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
8330 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
8331 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
8332 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
8333 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
8334 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
8335 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
8336 eG8B8G8R8422Unorm = VK_FORMAT_G8B8G8R8_422_UNORM,
8337 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM,
8338 eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM,
8339 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM,
8340 eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
8341 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
8342 eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
8343 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
8344 eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
8345 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
8346 eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
8347 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
8348 eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
8349 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
8350 eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16,
8351 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16,
8352 eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
8353 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
8354 eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
8355 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
8356 eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
8357 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
8358 eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
8359 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
8360 eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
8361 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
8362 eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
8363 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
8364 eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
8365 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
8366 eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
8367 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
8368 eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
8369 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
8370 eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16,
8371 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16,
8372 eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
8373 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
8374 eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
8375 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
8376 eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
8377 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
8378 eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
8379 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
8380 eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
8381 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
8382 eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
8383 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
8384 eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
8385 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
8386 eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
8387 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
8388 eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
8389 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
8390 eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM,
8391 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM,
8392 eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM,
8393 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM,
8394 eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
8395 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
8396 eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
8397 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
8398 eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
8399 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
8400 eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
8401 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
8402 eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
8403 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
8404 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
8405 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
8406 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
8407 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
8408 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
8409 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
8410 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
8411 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
8412 };
8413
8414 struct VertexInputAttributeDescription
8415 {
8416 VertexInputAttributeDescription( uint32_t location_ = 0,
8417 uint32_t binding_ = 0,
8418 Format format_ = Format::eUndefined,
8419 uint32_t offset_ = 0 )
8420 : location( location_ )
8421 , binding( binding_ )
8422 , format( format_ )
8423 , offset( offset_ )
8424 {
8425 }
8426
8427 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
8428 {
8429 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
8430 }
8431
8432 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
8433 {
8434 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
8435 return *this;
8436 }
8437 VertexInputAttributeDescription& setLocation( uint32_t location_ )
8438 {
8439 location = location_;
8440 return *this;
8441 }
8442
8443 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
8444 {
8445 binding = binding_;
8446 return *this;
8447 }
8448
8449 VertexInputAttributeDescription& setFormat( Format format_ )
8450 {
8451 format = format_;
8452 return *this;
8453 }
8454
8455 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
8456 {
8457 offset = offset_;
8458 return *this;
8459 }
8460
8461 operator const VkVertexInputAttributeDescription&() const
8462 {
8463 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
8464 }
8465
8466 bool operator==( VertexInputAttributeDescription const& rhs ) const
8467 {
8468 return ( location == rhs.location )
8469 && ( binding == rhs.binding )
8470 && ( format == rhs.format )
8471 && ( offset == rhs.offset );
8472 }
8473
8474 bool operator!=( VertexInputAttributeDescription const& rhs ) const
8475 {
8476 return !operator==( rhs );
8477 }
8478
8479 uint32_t location;
8480 uint32_t binding;
8481 Format format;
8482 uint32_t offset;
8483 };
8484 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
8485
8486 enum class StructureType
8487 {
8488 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
8489 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
8490 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
8491 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
8492 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
8493 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
8494 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
8495 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
8496 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
8497 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
8498 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
8499 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
8500 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
8501 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
8502 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
8503 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
8504 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
8505 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
8506 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
8507 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
8508 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
8509 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
8510 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
8511 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
8512 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
8513 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
8514 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
8515 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
8516 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
8517 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
8518 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
8519 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
8520 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
8521 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
8522 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
8523 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
8524 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
8525 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
8526 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
8527 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
8528 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
8529 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
8530 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
8531 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
8532 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
8533 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
8534 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
8535 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
8536 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
8537 ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
8538 eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
8539 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
8540 eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
8541 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
8542 ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
8543 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
8544 eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
8545 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
8546 eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
8547 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
8548 eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
8549 eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
8550 eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
8551 eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
8552 eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
8553 eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
8554 eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
8555 eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
8556 eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
8557 eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
8558 eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
8559 eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
8560 eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
8561 eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
8562 ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
8563 ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
8564 eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
8565 eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
8566 eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
8567 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
8568 eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
8569 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
8570 eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
8571 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
8572 eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
8573 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
8574 eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
8575 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
8576 ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
8577 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
8578 ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
8579 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
8580 eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
8581 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
8582 eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
8583 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
8584 ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
8585 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
8586 eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
8587 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
8588 ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
8589 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
8590 eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
8591 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
8592 ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
8593 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
8594 ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
8595 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
8596 eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
8597 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
8598 eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
8599 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
8600 ePipelineTessellationDomainOriginStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
8601 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
8602 eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
8603 eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
8604 ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
8605 ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
8606 ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
8607 ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
8608 ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
8609 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
8610 eProtectedSubmitInfo = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
8611 ePhysicalDeviceProtectedMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
8612 ePhysicalDeviceProtectedMemoryProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
8613 eDeviceQueueInfo2 = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
8614 eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
8615 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
8616 eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
8617 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
8618 eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
8619 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
8620 eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
8621 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
8622 ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
8623 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
8624 eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
8625 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
8626 eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
8627 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
8628 ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
8629 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
8630 eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
8631 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
8632 ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
8633 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
8634 eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
8635 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
8636 ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
8637 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
8638 eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
8639 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
8640 eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
8641 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
8642 eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
8643 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
8644 ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
8645 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
8646 eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
8647 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
8648 eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
8649 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
8650 eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
8651 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
8652 ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
8653 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
8654 eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
8655 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
8656 ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
8657 ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
8658 eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
8659 eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
8660 ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES,
8661 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
8662 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
8663 eDeviceGroupPresentCapabilitiesKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
8664 eImageSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
8665 eBindImageMemorySwapchainInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
8666 eAcquireNextImageInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
8667 eDeviceGroupPresentInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
8668 eDeviceGroupSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
8669 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
8670 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
8671 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
8672 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
8673 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
8674 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
8675 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
8676 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
8677 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
8678 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
8679 eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
8680 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
8681 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
8682 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
8683 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
8684 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
8685 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
8686 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
8687 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
8688 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
8689 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
8690 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
8691 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
8692 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
8693 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
8694 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
8695 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
8696 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
8697 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
8698 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
8699 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
8700 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
8701 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
8702 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
8703 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
8704 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
8705 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
8706 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
8707 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
8708 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
8709 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
8710 eCommandBufferInheritanceConditionalRenderingInfoEXT = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
8711 ePhysicalDeviceConditionalRenderingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
8712 eConditionalRenderingBeginInfoEXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
8713 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
8714 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
8715 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
8716 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
8717 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
8718 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
8719 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
8720 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
8721 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
8722 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
8723 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
8724 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
8725 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
8726 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
8727 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
8728 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
8729 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
8730 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
8731 ePhysicalDeviceConservativeRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
8732 ePipelineRasterizationConservativeStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
8733 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
8734 eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR,
8735 eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR,
8736 eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR,
8737 eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR,
8738 eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR,
8739 eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR,
8740 eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR,
8741 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
8742 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
8743 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
8744 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
8745 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
8746 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
8747 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
8748 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
8749 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
8750 eDisplayProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,
8751 eDisplayPlaneProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,
8752 eDisplayModeProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,
8753 eDisplayPlaneInfo2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,
8754 eDisplayPlaneCapabilities2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR,
8755 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
8756 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
8757 eDebugUtilsObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
8758 eDebugUtilsObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
8759 eDebugUtilsLabelEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
8760 eDebugUtilsMessengerCallbackDataEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
8761 eDebugUtilsMessengerCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
8762 eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
8763 eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
8764 eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
8765 eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
8766 eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
8767 eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
8768 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
8769 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
8770 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
8771 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
8772 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
8773 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
8774 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
8775 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
8776 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
8777 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
8778 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
8779 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
8780 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
8781 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
8782 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
8783 eDescriptorSetLayoutBindingFlagsCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT,
8784 ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT,
8785 ePhysicalDeviceDescriptorIndexingPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT,
8786 eDescriptorSetVariableDescriptorCountAllocateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT,
8787 eDescriptorSetVariableDescriptorCountLayoutSupportEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT,
8788 eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
8789 ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR,
8790 eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
8791 eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
8792 ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
8793 ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
8794 ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
8795 ePipelineVertexInputDivisorStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
8796 eCheckpointDataNV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV,
8797 eQueueFamilyCheckpointPropertiesNV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
8798 };
8799
8800 struct ApplicationInfo
8801 {
8802 ApplicationInfo( const char* pApplicationName_ = nullptr,
8803 uint32_t applicationVersion_ = 0,
8804 const char* pEngineName_ = nullptr,
8805 uint32_t engineVersion_ = 0,
8806 uint32_t apiVersion_ = 0 )
8807 : pApplicationName( pApplicationName_ )
8808 , applicationVersion( applicationVersion_ )
8809 , pEngineName( pEngineName_ )
8810 , engineVersion( engineVersion_ )
8811 , apiVersion( apiVersion_ )
8812 {
8813 }
8814
8815 ApplicationInfo( VkApplicationInfo const & rhs )
8816 {
8817 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
8818 }
8819
8820 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
8821 {
8822 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
8823 return *this;
8824 }
8825 ApplicationInfo& setPNext( const void* pNext_ )
8826 {
8827 pNext = pNext_;
8828 return *this;
8829 }
8830
8831 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
8832 {
8833 pApplicationName = pApplicationName_;
8834 return *this;
8835 }
8836
8837 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
8838 {
8839 applicationVersion = applicationVersion_;
8840 return *this;
8841 }
8842
8843 ApplicationInfo& setPEngineName( const char* pEngineName_ )
8844 {
8845 pEngineName = pEngineName_;
8846 return *this;
8847 }
8848
8849 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
8850 {
8851 engineVersion = engineVersion_;
8852 return *this;
8853 }
8854
8855 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
8856 {
8857 apiVersion = apiVersion_;
8858 return *this;
8859 }
8860
8861 operator const VkApplicationInfo&() const
8862 {
8863 return *reinterpret_cast<const VkApplicationInfo*>(this);
8864 }
8865
8866 bool operator==( ApplicationInfo const& rhs ) const
8867 {
8868 return ( sType == rhs.sType )
8869 && ( pNext == rhs.pNext )
8870 && ( pApplicationName == rhs.pApplicationName )
8871 && ( applicationVersion == rhs.applicationVersion )
8872 && ( pEngineName == rhs.pEngineName )
8873 && ( engineVersion == rhs.engineVersion )
8874 && ( apiVersion == rhs.apiVersion );
8875 }
8876
8877 bool operator!=( ApplicationInfo const& rhs ) const
8878 {
8879 return !operator==( rhs );
8880 }
8881
8882 private:
8883 StructureType sType = StructureType::eApplicationInfo;
8884
8885 public:
8886 const void* pNext = nullptr;
8887 const char* pApplicationName;
8888 uint32_t applicationVersion;
8889 const char* pEngineName;
8890 uint32_t engineVersion;
8891 uint32_t apiVersion;
8892 };
8893 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
8894
8895 struct InstanceCreateInfo
8896 {
8897 InstanceCreateInfo( InstanceCreateFlags flags_ = InstanceCreateFlags(),
8898 const ApplicationInfo* pApplicationInfo_ = nullptr,
8899 uint32_t enabledLayerCount_ = 0,
8900 const char* const* ppEnabledLayerNames_ = nullptr,
8901 uint32_t enabledExtensionCount_ = 0,
8902 const char* const* ppEnabledExtensionNames_ = nullptr )
8903 : flags( flags_ )
8904 , pApplicationInfo( pApplicationInfo_ )
8905 , enabledLayerCount( enabledLayerCount_ )
8906 , ppEnabledLayerNames( ppEnabledLayerNames_ )
8907 , enabledExtensionCount( enabledExtensionCount_ )
8908 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
8909 {
8910 }
8911
8912 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
8913 {
8914 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
8915 }
8916
8917 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
8918 {
8919 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
8920 return *this;
8921 }
8922 InstanceCreateInfo& setPNext( const void* pNext_ )
8923 {
8924 pNext = pNext_;
8925 return *this;
8926 }
8927
8928 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
8929 {
8930 flags = flags_;
8931 return *this;
8932 }
8933
8934 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
8935 {
8936 pApplicationInfo = pApplicationInfo_;
8937 return *this;
8938 }
8939
8940 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
8941 {
8942 enabledLayerCount = enabledLayerCount_;
8943 return *this;
8944 }
8945
8946 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
8947 {
8948 ppEnabledLayerNames = ppEnabledLayerNames_;
8949 return *this;
8950 }
8951
8952 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
8953 {
8954 enabledExtensionCount = enabledExtensionCount_;
8955 return *this;
8956 }
8957
8958 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
8959 {
8960 ppEnabledExtensionNames = ppEnabledExtensionNames_;
8961 return *this;
8962 }
8963
8964 operator const VkInstanceCreateInfo&() const
8965 {
8966 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
8967 }
8968
8969 bool operator==( InstanceCreateInfo const& rhs ) const
8970 {
8971 return ( sType == rhs.sType )
8972 && ( pNext == rhs.pNext )
8973 && ( flags == rhs.flags )
8974 && ( pApplicationInfo == rhs.pApplicationInfo )
8975 && ( enabledLayerCount == rhs.enabledLayerCount )
8976 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
8977 && ( enabledExtensionCount == rhs.enabledExtensionCount )
8978 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
8979 }
8980
8981 bool operator!=( InstanceCreateInfo const& rhs ) const
8982 {
8983 return !operator==( rhs );
8984 }
8985
8986 private:
8987 StructureType sType = StructureType::eInstanceCreateInfo;
8988
8989 public:
8990 const void* pNext = nullptr;
8991 InstanceCreateFlags flags;
8992 const ApplicationInfo* pApplicationInfo;
8993 uint32_t enabledLayerCount;
8994 const char* const* ppEnabledLayerNames;
8995 uint32_t enabledExtensionCount;
8996 const char* const* ppEnabledExtensionNames;
8997 };
8998 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
8999
9000 struct MemoryAllocateInfo
9001 {
9002 MemoryAllocateInfo( DeviceSize allocationSize_ = 0,
9003 uint32_t memoryTypeIndex_ = 0 )
9004 : allocationSize( allocationSize_ )
9005 , memoryTypeIndex( memoryTypeIndex_ )
9006 {
9007 }
9008
9009 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
9010 {
9011 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
9012 }
9013
9014 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
9015 {
9016 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
9017 return *this;
9018 }
9019 MemoryAllocateInfo& setPNext( const void* pNext_ )
9020 {
9021 pNext = pNext_;
9022 return *this;
9023 }
9024
9025 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
9026 {
9027 allocationSize = allocationSize_;
9028 return *this;
9029 }
9030
9031 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
9032 {
9033 memoryTypeIndex = memoryTypeIndex_;
9034 return *this;
9035 }
9036
9037 operator const VkMemoryAllocateInfo&() const
9038 {
9039 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
9040 }
9041
9042 bool operator==( MemoryAllocateInfo const& rhs ) const
9043 {
9044 return ( sType == rhs.sType )
9045 && ( pNext == rhs.pNext )
9046 && ( allocationSize == rhs.allocationSize )
9047 && ( memoryTypeIndex == rhs.memoryTypeIndex );
9048 }
9049
9050 bool operator!=( MemoryAllocateInfo const& rhs ) const
9051 {
9052 return !operator==( rhs );
9053 }
9054
9055 private:
9056 StructureType sType = StructureType::eMemoryAllocateInfo;
9057
9058 public:
9059 const void* pNext = nullptr;
9060 DeviceSize allocationSize;
9061 uint32_t memoryTypeIndex;
9062 };
9063 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
9064
9065 struct MappedMemoryRange
9066 {
9067 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(),
9068 DeviceSize offset_ = 0,
9069 DeviceSize size_ = 0 )
9070 : memory( memory_ )
9071 , offset( offset_ )
9072 , size( size_ )
9073 {
9074 }
9075
9076 MappedMemoryRange( VkMappedMemoryRange const & rhs )
9077 {
9078 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
9079 }
9080
9081 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
9082 {
9083 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
9084 return *this;
9085 }
9086 MappedMemoryRange& setPNext( const void* pNext_ )
9087 {
9088 pNext = pNext_;
9089 return *this;
9090 }
9091
9092 MappedMemoryRange& setMemory( DeviceMemory memory_ )
9093 {
9094 memory = memory_;
9095 return *this;
9096 }
9097
9098 MappedMemoryRange& setOffset( DeviceSize offset_ )
9099 {
9100 offset = offset_;
9101 return *this;
9102 }
9103
9104 MappedMemoryRange& setSize( DeviceSize size_ )
9105 {
9106 size = size_;
9107 return *this;
9108 }
9109
9110 operator const VkMappedMemoryRange&() const
9111 {
9112 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
9113 }
9114
9115 bool operator==( MappedMemoryRange const& rhs ) const
9116 {
9117 return ( sType == rhs.sType )
9118 && ( pNext == rhs.pNext )
9119 && ( memory == rhs.memory )
9120 && ( offset == rhs.offset )
9121 && ( size == rhs.size );
9122 }
9123
9124 bool operator!=( MappedMemoryRange const& rhs ) const
9125 {
9126 return !operator==( rhs );
9127 }
9128
9129 private:
9130 StructureType sType = StructureType::eMappedMemoryRange;
9131
9132 public:
9133 const void* pNext = nullptr;
9134 DeviceMemory memory;
9135 DeviceSize offset;
9136 DeviceSize size;
9137 };
9138 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
9139
9140 struct WriteDescriptorSet
9141 {
9142 WriteDescriptorSet( DescriptorSet dstSet_ = DescriptorSet(),
9143 uint32_t dstBinding_ = 0,
9144 uint32_t dstArrayElement_ = 0,
9145 uint32_t descriptorCount_ = 0,
9146 DescriptorType descriptorType_ = DescriptorType::eSampler,
9147 const DescriptorImageInfo* pImageInfo_ = nullptr,
9148 const DescriptorBufferInfo* pBufferInfo_ = nullptr,
9149 const BufferView* pTexelBufferView_ = nullptr )
9150 : dstSet( dstSet_ )
9151 , dstBinding( dstBinding_ )
9152 , dstArrayElement( dstArrayElement_ )
9153 , descriptorCount( descriptorCount_ )
9154 , descriptorType( descriptorType_ )
9155 , pImageInfo( pImageInfo_ )
9156 , pBufferInfo( pBufferInfo_ )
9157 , pTexelBufferView( pTexelBufferView_ )
9158 {
9159 }
9160
9161 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
9162 {
9163 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
9164 }
9165
9166 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
9167 {
9168 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
9169 return *this;
9170 }
9171 WriteDescriptorSet& setPNext( const void* pNext_ )
9172 {
9173 pNext = pNext_;
9174 return *this;
9175 }
9176
9177 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
9178 {
9179 dstSet = dstSet_;
9180 return *this;
9181 }
9182
9183 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
9184 {
9185 dstBinding = dstBinding_;
9186 return *this;
9187 }
9188
9189 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
9190 {
9191 dstArrayElement = dstArrayElement_;
9192 return *this;
9193 }
9194
9195 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
9196 {
9197 descriptorCount = descriptorCount_;
9198 return *this;
9199 }
9200
9201 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
9202 {
9203 descriptorType = descriptorType_;
9204 return *this;
9205 }
9206
9207 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
9208 {
9209 pImageInfo = pImageInfo_;
9210 return *this;
9211 }
9212
9213 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
9214 {
9215 pBufferInfo = pBufferInfo_;
9216 return *this;
9217 }
9218
9219 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
9220 {
9221 pTexelBufferView = pTexelBufferView_;
9222 return *this;
9223 }
9224
9225 operator const VkWriteDescriptorSet&() const
9226 {
9227 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
9228 }
9229
9230 bool operator==( WriteDescriptorSet const& rhs ) const
9231 {
9232 return ( sType == rhs.sType )
9233 && ( pNext == rhs.pNext )
9234 && ( dstSet == rhs.dstSet )
9235 && ( dstBinding == rhs.dstBinding )
9236 && ( dstArrayElement == rhs.dstArrayElement )
9237 && ( descriptorCount == rhs.descriptorCount )
9238 && ( descriptorType == rhs.descriptorType )
9239 && ( pImageInfo == rhs.pImageInfo )
9240 && ( pBufferInfo == rhs.pBufferInfo )
9241 && ( pTexelBufferView == rhs.pTexelBufferView );
9242 }
9243
9244 bool operator!=( WriteDescriptorSet const& rhs ) const
9245 {
9246 return !operator==( rhs );
9247 }
9248
9249 private:
9250 StructureType sType = StructureType::eWriteDescriptorSet;
9251
9252 public:
9253 const void* pNext = nullptr;
9254 DescriptorSet dstSet;
9255 uint32_t dstBinding;
9256 uint32_t dstArrayElement;
9257 uint32_t descriptorCount;
9258 DescriptorType descriptorType;
9259 const DescriptorImageInfo* pImageInfo;
9260 const DescriptorBufferInfo* pBufferInfo;
9261 const BufferView* pTexelBufferView;
9262 };
9263 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
9264
9265 struct CopyDescriptorSet
9266 {
9267 CopyDescriptorSet( DescriptorSet srcSet_ = DescriptorSet(),
9268 uint32_t srcBinding_ = 0,
9269 uint32_t srcArrayElement_ = 0,
9270 DescriptorSet dstSet_ = DescriptorSet(),
9271 uint32_t dstBinding_ = 0,
9272 uint32_t dstArrayElement_ = 0,
9273 uint32_t descriptorCount_ = 0 )
9274 : srcSet( srcSet_ )
9275 , srcBinding( srcBinding_ )
9276 , srcArrayElement( srcArrayElement_ )
9277 , dstSet( dstSet_ )
9278 , dstBinding( dstBinding_ )
9279 , dstArrayElement( dstArrayElement_ )
9280 , descriptorCount( descriptorCount_ )
9281 {
9282 }
9283
9284 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
9285 {
9286 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
9287 }
9288
9289 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
9290 {
9291 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
9292 return *this;
9293 }
9294 CopyDescriptorSet& setPNext( const void* pNext_ )
9295 {
9296 pNext = pNext_;
9297 return *this;
9298 }
9299
9300 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
9301 {
9302 srcSet = srcSet_;
9303 return *this;
9304 }
9305
9306 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
9307 {
9308 srcBinding = srcBinding_;
9309 return *this;
9310 }
9311
9312 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
9313 {
9314 srcArrayElement = srcArrayElement_;
9315 return *this;
9316 }
9317
9318 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
9319 {
9320 dstSet = dstSet_;
9321 return *this;
9322 }
9323
9324 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
9325 {
9326 dstBinding = dstBinding_;
9327 return *this;
9328 }
9329
9330 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
9331 {
9332 dstArrayElement = dstArrayElement_;
9333 return *this;
9334 }
9335
9336 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
9337 {
9338 descriptorCount = descriptorCount_;
9339 return *this;
9340 }
9341
9342 operator const VkCopyDescriptorSet&() const
9343 {
9344 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
9345 }
9346
9347 bool operator==( CopyDescriptorSet const& rhs ) const
9348 {
9349 return ( sType == rhs.sType )
9350 && ( pNext == rhs.pNext )
9351 && ( srcSet == rhs.srcSet )
9352 && ( srcBinding == rhs.srcBinding )
9353 && ( srcArrayElement == rhs.srcArrayElement )
9354 && ( dstSet == rhs.dstSet )
9355 && ( dstBinding == rhs.dstBinding )
9356 && ( dstArrayElement == rhs.dstArrayElement )
9357 && ( descriptorCount == rhs.descriptorCount );
9358 }
9359
9360 bool operator!=( CopyDescriptorSet const& rhs ) const
9361 {
9362 return !operator==( rhs );
9363 }
9364
9365 private:
9366 StructureType sType = StructureType::eCopyDescriptorSet;
9367
9368 public:
9369 const void* pNext = nullptr;
9370 DescriptorSet srcSet;
9371 uint32_t srcBinding;
9372 uint32_t srcArrayElement;
9373 DescriptorSet dstSet;
9374 uint32_t dstBinding;
9375 uint32_t dstArrayElement;
9376 uint32_t descriptorCount;
9377 };
9378 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
9379
9380 struct BufferViewCreateInfo
9381 {
9382 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(),
9383 Buffer buffer_ = Buffer(),
9384 Format format_ = Format::eUndefined,
9385 DeviceSize offset_ = 0,
9386 DeviceSize range_ = 0 )
9387 : flags( flags_ )
9388 , buffer( buffer_ )
9389 , format( format_ )
9390 , offset( offset_ )
9391 , range( range_ )
9392 {
9393 }
9394
9395 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
9396 {
9397 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
9398 }
9399
9400 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
9401 {
9402 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
9403 return *this;
9404 }
9405 BufferViewCreateInfo& setPNext( const void* pNext_ )
9406 {
9407 pNext = pNext_;
9408 return *this;
9409 }
9410
9411 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
9412 {
9413 flags = flags_;
9414 return *this;
9415 }
9416
9417 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
9418 {
9419 buffer = buffer_;
9420 return *this;
9421 }
9422
9423 BufferViewCreateInfo& setFormat( Format format_ )
9424 {
9425 format = format_;
9426 return *this;
9427 }
9428
9429 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
9430 {
9431 offset = offset_;
9432 return *this;
9433 }
9434
9435 BufferViewCreateInfo& setRange( DeviceSize range_ )
9436 {
9437 range = range_;
9438 return *this;
9439 }
9440
9441 operator const VkBufferViewCreateInfo&() const
9442 {
9443 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
9444 }
9445
9446 bool operator==( BufferViewCreateInfo const& rhs ) const
9447 {
9448 return ( sType == rhs.sType )
9449 && ( pNext == rhs.pNext )
9450 && ( flags == rhs.flags )
9451 && ( buffer == rhs.buffer )
9452 && ( format == rhs.format )
9453 && ( offset == rhs.offset )
9454 && ( range == rhs.range );
9455 }
9456
9457 bool operator!=( BufferViewCreateInfo const& rhs ) const
9458 {
9459 return !operator==( rhs );
9460 }
9461
9462 private:
9463 StructureType sType = StructureType::eBufferViewCreateInfo;
9464
9465 public:
9466 const void* pNext = nullptr;
9467 BufferViewCreateFlags flags;
9468 Buffer buffer;
9469 Format format;
9470 DeviceSize offset;
9471 DeviceSize range;
9472 };
9473 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
9474
9475 struct ShaderModuleCreateInfo
9476 {
9477 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(),
9478 size_t codeSize_ = 0,
9479 const uint32_t* pCode_ = nullptr )
9480 : flags( flags_ )
9481 , codeSize( codeSize_ )
9482 , pCode( pCode_ )
9483 {
9484 }
9485
9486 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
9487 {
9488 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
9489 }
9490
9491 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
9492 {
9493 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
9494 return *this;
9495 }
9496 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
9497 {
9498 pNext = pNext_;
9499 return *this;
9500 }
9501
9502 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
9503 {
9504 flags = flags_;
9505 return *this;
9506 }
9507
9508 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
9509 {
9510 codeSize = codeSize_;
9511 return *this;
9512 }
9513
9514 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
9515 {
9516 pCode = pCode_;
9517 return *this;
9518 }
9519
9520 operator const VkShaderModuleCreateInfo&() const
9521 {
9522 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
9523 }
9524
9525 bool operator==( ShaderModuleCreateInfo const& rhs ) const
9526 {
9527 return ( sType == rhs.sType )
9528 && ( pNext == rhs.pNext )
9529 && ( flags == rhs.flags )
9530 && ( codeSize == rhs.codeSize )
9531 && ( pCode == rhs.pCode );
9532 }
9533
9534 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
9535 {
9536 return !operator==( rhs );
9537 }
9538
9539 private:
9540 StructureType sType = StructureType::eShaderModuleCreateInfo;
9541
9542 public:
9543 const void* pNext = nullptr;
9544 ShaderModuleCreateFlags flags;
9545 size_t codeSize;
9546 const uint32_t* pCode;
9547 };
9548 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
9549
9550 struct DescriptorSetAllocateInfo
9551 {
9552 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(),
9553 uint32_t descriptorSetCount_ = 0,
9554 const DescriptorSetLayout* pSetLayouts_ = nullptr )
9555 : descriptorPool( descriptorPool_ )
9556 , descriptorSetCount( descriptorSetCount_ )
9557 , pSetLayouts( pSetLayouts_ )
9558 {
9559 }
9560
9561 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
9562 {
9563 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
9564 }
9565
9566 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
9567 {
9568 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
9569 return *this;
9570 }
9571 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
9572 {
9573 pNext = pNext_;
9574 return *this;
9575 }
9576
9577 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
9578 {
9579 descriptorPool = descriptorPool_;
9580 return *this;
9581 }
9582
9583 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
9584 {
9585 descriptorSetCount = descriptorSetCount_;
9586 return *this;
9587 }
9588
9589 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
9590 {
9591 pSetLayouts = pSetLayouts_;
9592 return *this;
9593 }
9594
9595 operator const VkDescriptorSetAllocateInfo&() const
9596 {
9597 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
9598 }
9599
9600 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
9601 {
9602 return ( sType == rhs.sType )
9603 && ( pNext == rhs.pNext )
9604 && ( descriptorPool == rhs.descriptorPool )
9605 && ( descriptorSetCount == rhs.descriptorSetCount )
9606 && ( pSetLayouts == rhs.pSetLayouts );
9607 }
9608
9609 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
9610 {
9611 return !operator==( rhs );
9612 }
9613
9614 private:
9615 StructureType sType = StructureType::eDescriptorSetAllocateInfo;
9616
9617 public:
9618 const void* pNext = nullptr;
9619 DescriptorPool descriptorPool;
9620 uint32_t descriptorSetCount;
9621 const DescriptorSetLayout* pSetLayouts;
9622 };
9623 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
9624
9625 struct PipelineVertexInputStateCreateInfo
9626 {
9627 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(),
9628 uint32_t vertexBindingDescriptionCount_ = 0,
9629 const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr,
9630 uint32_t vertexAttributeDescriptionCount_ = 0,
9631 const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
9632 : flags( flags_ )
9633 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
9634 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
9635 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
9636 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
9637 {
9638 }
9639
9640 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
9641 {
9642 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
9643 }
9644
9645 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
9646 {
9647 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
9648 return *this;
9649 }
9650 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
9651 {
9652 pNext = pNext_;
9653 return *this;
9654 }
9655
9656 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
9657 {
9658 flags = flags_;
9659 return *this;
9660 }
9661
9662 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
9663 {
9664 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
9665 return *this;
9666 }
9667
9668 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
9669 {
9670 pVertexBindingDescriptions = pVertexBindingDescriptions_;
9671 return *this;
9672 }
9673
9674 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
9675 {
9676 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
9677 return *this;
9678 }
9679
9680 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
9681 {
9682 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
9683 return *this;
9684 }
9685
9686 operator const VkPipelineVertexInputStateCreateInfo&() const
9687 {
9688 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
9689 }
9690
9691 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
9692 {
9693 return ( sType == rhs.sType )
9694 && ( pNext == rhs.pNext )
9695 && ( flags == rhs.flags )
9696 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
9697 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
9698 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
9699 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
9700 }
9701
9702 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
9703 {
9704 return !operator==( rhs );
9705 }
9706
9707 private:
9708 StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
9709
9710 public:
9711 const void* pNext = nullptr;
9712 PipelineVertexInputStateCreateFlags flags;
9713 uint32_t vertexBindingDescriptionCount;
9714 const VertexInputBindingDescription* pVertexBindingDescriptions;
9715 uint32_t vertexAttributeDescriptionCount;
9716 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
9717 };
9718 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
9719
9720 struct PipelineInputAssemblyStateCreateInfo
9721 {
9722 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(),
9723 PrimitiveTopology topology_ = PrimitiveTopology::ePointList,
9724 Bool32 primitiveRestartEnable_ = 0 )
9725 : flags( flags_ )
9726 , topology( topology_ )
9727 , primitiveRestartEnable( primitiveRestartEnable_ )
9728 {
9729 }
9730
9731 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
9732 {
9733 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
9734 }
9735
9736 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
9737 {
9738 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
9739 return *this;
9740 }
9741 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
9742 {
9743 pNext = pNext_;
9744 return *this;
9745 }
9746
9747 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
9748 {
9749 flags = flags_;
9750 return *this;
9751 }
9752
9753 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
9754 {
9755 topology = topology_;
9756 return *this;
9757 }
9758
9759 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
9760 {
9761 primitiveRestartEnable = primitiveRestartEnable_;
9762 return *this;
9763 }
9764
9765 operator const VkPipelineInputAssemblyStateCreateInfo&() const
9766 {
9767 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
9768 }
9769
9770 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
9771 {
9772 return ( sType == rhs.sType )
9773 && ( pNext == rhs.pNext )
9774 && ( flags == rhs.flags )
9775 && ( topology == rhs.topology )
9776 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
9777 }
9778
9779 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
9780 {
9781 return !operator==( rhs );
9782 }
9783
9784 private:
9785 StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
9786
9787 public:
9788 const void* pNext = nullptr;
9789 PipelineInputAssemblyStateCreateFlags flags;
9790 PrimitiveTopology topology;
9791 Bool32 primitiveRestartEnable;
9792 };
9793 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
9794
9795 struct PipelineTessellationStateCreateInfo
9796 {
9797 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(),
9798 uint32_t patchControlPoints_ = 0 )
9799 : flags( flags_ )
9800 , patchControlPoints( patchControlPoints_ )
9801 {
9802 }
9803
9804 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
9805 {
9806 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
9807 }
9808
9809 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
9810 {
9811 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
9812 return *this;
9813 }
9814 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
9815 {
9816 pNext = pNext_;
9817 return *this;
9818 }
9819
9820 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
9821 {
9822 flags = flags_;
9823 return *this;
9824 }
9825
9826 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
9827 {
9828 patchControlPoints = patchControlPoints_;
9829 return *this;
9830 }
9831
9832 operator const VkPipelineTessellationStateCreateInfo&() const
9833 {
9834 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
9835 }
9836
9837 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
9838 {
9839 return ( sType == rhs.sType )
9840 && ( pNext == rhs.pNext )
9841 && ( flags == rhs.flags )
9842 && ( patchControlPoints == rhs.patchControlPoints );
9843 }
9844
9845 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
9846 {
9847 return !operator==( rhs );
9848 }
9849
9850 private:
9851 StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
9852
9853 public:
9854 const void* pNext = nullptr;
9855 PipelineTessellationStateCreateFlags flags;
9856 uint32_t patchControlPoints;
9857 };
9858 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
9859
9860 struct PipelineViewportStateCreateInfo
9861 {
9862 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(),
9863 uint32_t viewportCount_ = 0,
9864 const Viewport* pViewports_ = nullptr,
9865 uint32_t scissorCount_ = 0,
9866 const Rect2D* pScissors_ = nullptr )
9867 : flags( flags_ )
9868 , viewportCount( viewportCount_ )
9869 , pViewports( pViewports_ )
9870 , scissorCount( scissorCount_ )
9871 , pScissors( pScissors_ )
9872 {
9873 }
9874
9875 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
9876 {
9877 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
9878 }
9879
9880 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
9881 {
9882 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
9883 return *this;
9884 }
9885 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
9886 {
9887 pNext = pNext_;
9888 return *this;
9889 }
9890
9891 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
9892 {
9893 flags = flags_;
9894 return *this;
9895 }
9896
9897 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
9898 {
9899 viewportCount = viewportCount_;
9900 return *this;
9901 }
9902
9903 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
9904 {
9905 pViewports = pViewports_;
9906 return *this;
9907 }
9908
9909 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
9910 {
9911 scissorCount = scissorCount_;
9912 return *this;
9913 }
9914
9915 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
9916 {
9917 pScissors = pScissors_;
9918 return *this;
9919 }
9920
9921 operator const VkPipelineViewportStateCreateInfo&() const
9922 {
9923 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
9924 }
9925
9926 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
9927 {
9928 return ( sType == rhs.sType )
9929 && ( pNext == rhs.pNext )
9930 && ( flags == rhs.flags )
9931 && ( viewportCount == rhs.viewportCount )
9932 && ( pViewports == rhs.pViewports )
9933 && ( scissorCount == rhs.scissorCount )
9934 && ( pScissors == rhs.pScissors );
9935 }
9936
9937 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
9938 {
9939 return !operator==( rhs );
9940 }
9941
9942 private:
9943 StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
9944
9945 public:
9946 const void* pNext = nullptr;
9947 PipelineViewportStateCreateFlags flags;
9948 uint32_t viewportCount;
9949 const Viewport* pViewports;
9950 uint32_t scissorCount;
9951 const Rect2D* pScissors;
9952 };
9953 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
9954
9955 struct PipelineRasterizationStateCreateInfo
9956 {
9957 PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateFlags flags_ = PipelineRasterizationStateCreateFlags(),
9958 Bool32 depthClampEnable_ = 0,
9959 Bool32 rasterizerDiscardEnable_ = 0,
9960 PolygonMode polygonMode_ = PolygonMode::eFill,
9961 CullModeFlags cullMode_ = CullModeFlags(),
9962 FrontFace frontFace_ = FrontFace::eCounterClockwise,
9963 Bool32 depthBiasEnable_ = 0,
9964 float depthBiasConstantFactor_ = 0,
9965 float depthBiasClamp_ = 0,
9966 float depthBiasSlopeFactor_ = 0,
9967 float lineWidth_ = 0 )
9968 : flags( flags_ )
9969 , depthClampEnable( depthClampEnable_ )
9970 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
9971 , polygonMode( polygonMode_ )
9972 , cullMode( cullMode_ )
9973 , frontFace( frontFace_ )
9974 , depthBiasEnable( depthBiasEnable_ )
9975 , depthBiasConstantFactor( depthBiasConstantFactor_ )
9976 , depthBiasClamp( depthBiasClamp_ )
9977 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
9978 , lineWidth( lineWidth_ )
9979 {
9980 }
9981
9982 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
9983 {
9984 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
9985 }
9986
9987 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
9988 {
9989 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
9990 return *this;
9991 }
9992 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
9993 {
9994 pNext = pNext_;
9995 return *this;
9996 }
9997
9998 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
9999 {
10000 flags = flags_;
10001 return *this;
10002 }
10003
10004 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
10005 {
10006 depthClampEnable = depthClampEnable_;
10007 return *this;
10008 }
10009
10010 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
10011 {
10012 rasterizerDiscardEnable = rasterizerDiscardEnable_;
10013 return *this;
10014 }
10015
10016 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
10017 {
10018 polygonMode = polygonMode_;
10019 return *this;
10020 }
10021
10022 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
10023 {
10024 cullMode = cullMode_;
10025 return *this;
10026 }
10027
10028 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
10029 {
10030 frontFace = frontFace_;
10031 return *this;
10032 }
10033
10034 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
10035 {
10036 depthBiasEnable = depthBiasEnable_;
10037 return *this;
10038 }
10039
10040 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
10041 {
10042 depthBiasConstantFactor = depthBiasConstantFactor_;
10043 return *this;
10044 }
10045
10046 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
10047 {
10048 depthBiasClamp = depthBiasClamp_;
10049 return *this;
10050 }
10051
10052 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
10053 {
10054 depthBiasSlopeFactor = depthBiasSlopeFactor_;
10055 return *this;
10056 }
10057
10058 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
10059 {
10060 lineWidth = lineWidth_;
10061 return *this;
10062 }
10063
10064 operator const VkPipelineRasterizationStateCreateInfo&() const
10065 {
10066 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
10067 }
10068
10069 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
10070 {
10071 return ( sType == rhs.sType )
10072 && ( pNext == rhs.pNext )
10073 && ( flags == rhs.flags )
10074 && ( depthClampEnable == rhs.depthClampEnable )
10075 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
10076 && ( polygonMode == rhs.polygonMode )
10077 && ( cullMode == rhs.cullMode )
10078 && ( frontFace == rhs.frontFace )
10079 && ( depthBiasEnable == rhs.depthBiasEnable )
10080 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
10081 && ( depthBiasClamp == rhs.depthBiasClamp )
10082 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
10083 && ( lineWidth == rhs.lineWidth );
10084 }
10085
10086 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
10087 {
10088 return !operator==( rhs );
10089 }
10090
10091 private:
10092 StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
10093
10094 public:
10095 const void* pNext = nullptr;
10096 PipelineRasterizationStateCreateFlags flags;
10097 Bool32 depthClampEnable;
10098 Bool32 rasterizerDiscardEnable;
10099 PolygonMode polygonMode;
10100 CullModeFlags cullMode;
10101 FrontFace frontFace;
10102 Bool32 depthBiasEnable;
10103 float depthBiasConstantFactor;
10104 float depthBiasClamp;
10105 float depthBiasSlopeFactor;
10106 float lineWidth;
10107 };
10108 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
10109
10110 struct PipelineDepthStencilStateCreateInfo
10111 {
10112 PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateFlags flags_ = PipelineDepthStencilStateCreateFlags(),
10113 Bool32 depthTestEnable_ = 0,
10114 Bool32 depthWriteEnable_ = 0,
10115 CompareOp depthCompareOp_ = CompareOp::eNever,
10116 Bool32 depthBoundsTestEnable_ = 0,
10117 Bool32 stencilTestEnable_ = 0,
10118 StencilOpState front_ = StencilOpState(),
10119 StencilOpState back_ = StencilOpState(),
10120 float minDepthBounds_ = 0,
10121 float maxDepthBounds_ = 0 )
10122 : flags( flags_ )
10123 , depthTestEnable( depthTestEnable_ )
10124 , depthWriteEnable( depthWriteEnable_ )
10125 , depthCompareOp( depthCompareOp_ )
10126 , depthBoundsTestEnable( depthBoundsTestEnable_ )
10127 , stencilTestEnable( stencilTestEnable_ )
10128 , front( front_ )
10129 , back( back_ )
10130 , minDepthBounds( minDepthBounds_ )
10131 , maxDepthBounds( maxDepthBounds_ )
10132 {
10133 }
10134
10135 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
10136 {
10137 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
10138 }
10139
10140 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
10141 {
10142 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
10143 return *this;
10144 }
10145 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
10146 {
10147 pNext = pNext_;
10148 return *this;
10149 }
10150
10151 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
10152 {
10153 flags = flags_;
10154 return *this;
10155 }
10156
10157 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
10158 {
10159 depthTestEnable = depthTestEnable_;
10160 return *this;
10161 }
10162
10163 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
10164 {
10165 depthWriteEnable = depthWriteEnable_;
10166 return *this;
10167 }
10168
10169 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
10170 {
10171 depthCompareOp = depthCompareOp_;
10172 return *this;
10173 }
10174
10175 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
10176 {
10177 depthBoundsTestEnable = depthBoundsTestEnable_;
10178 return *this;
10179 }
10180
10181 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
10182 {
10183 stencilTestEnable = stencilTestEnable_;
10184 return *this;
10185 }
10186
10187 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
10188 {
10189 front = front_;
10190 return *this;
10191 }
10192
10193 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
10194 {
10195 back = back_;
10196 return *this;
10197 }
10198
10199 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
10200 {
10201 minDepthBounds = minDepthBounds_;
10202 return *this;
10203 }
10204
10205 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
10206 {
10207 maxDepthBounds = maxDepthBounds_;
10208 return *this;
10209 }
10210
10211 operator const VkPipelineDepthStencilStateCreateInfo&() const
10212 {
10213 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
10214 }
10215
10216 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
10217 {
10218 return ( sType == rhs.sType )
10219 && ( pNext == rhs.pNext )
10220 && ( flags == rhs.flags )
10221 && ( depthTestEnable == rhs.depthTestEnable )
10222 && ( depthWriteEnable == rhs.depthWriteEnable )
10223 && ( depthCompareOp == rhs.depthCompareOp )
10224 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
10225 && ( stencilTestEnable == rhs.stencilTestEnable )
10226 && ( front == rhs.front )
10227 && ( back == rhs.back )
10228 && ( minDepthBounds == rhs.minDepthBounds )
10229 && ( maxDepthBounds == rhs.maxDepthBounds );
10230 }
10231
10232 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
10233 {
10234 return !operator==( rhs );
10235 }
10236
10237 private:
10238 StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
10239
10240 public:
10241 const void* pNext = nullptr;
10242 PipelineDepthStencilStateCreateFlags flags;
10243 Bool32 depthTestEnable;
10244 Bool32 depthWriteEnable;
10245 CompareOp depthCompareOp;
10246 Bool32 depthBoundsTestEnable;
10247 Bool32 stencilTestEnable;
10248 StencilOpState front;
10249 StencilOpState back;
10250 float minDepthBounds;
10251 float maxDepthBounds;
10252 };
10253 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
10254
10255 struct PipelineCacheCreateInfo
10256 {
10257 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(),
10258 size_t initialDataSize_ = 0,
10259 const void* pInitialData_ = nullptr )
10260 : flags( flags_ )
10261 , initialDataSize( initialDataSize_ )
10262 , pInitialData( pInitialData_ )
10263 {
10264 }
10265
10266 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
10267 {
10268 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
10269 }
10270
10271 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
10272 {
10273 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
10274 return *this;
10275 }
10276 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
10277 {
10278 pNext = pNext_;
10279 return *this;
10280 }
10281
10282 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
10283 {
10284 flags = flags_;
10285 return *this;
10286 }
10287
10288 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
10289 {
10290 initialDataSize = initialDataSize_;
10291 return *this;
10292 }
10293
10294 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
10295 {
10296 pInitialData = pInitialData_;
10297 return *this;
10298 }
10299
10300 operator const VkPipelineCacheCreateInfo&() const
10301 {
10302 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
10303 }
10304
10305 bool operator==( PipelineCacheCreateInfo const& rhs ) const
10306 {
10307 return ( sType == rhs.sType )
10308 && ( pNext == rhs.pNext )
10309 && ( flags == rhs.flags )
10310 && ( initialDataSize == rhs.initialDataSize )
10311 && ( pInitialData == rhs.pInitialData );
10312 }
10313
10314 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
10315 {
10316 return !operator==( rhs );
10317 }
10318
10319 private:
10320 StructureType sType = StructureType::ePipelineCacheCreateInfo;
10321
10322 public:
10323 const void* pNext = nullptr;
10324 PipelineCacheCreateFlags flags;
10325 size_t initialDataSize;
10326 const void* pInitialData;
10327 };
10328 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
10329
10330 struct SamplerCreateInfo
10331 {
10332 SamplerCreateInfo( SamplerCreateFlags flags_ = SamplerCreateFlags(),
10333 Filter magFilter_ = Filter::eNearest,
10334 Filter minFilter_ = Filter::eNearest,
10335 SamplerMipmapMode mipmapMode_ = SamplerMipmapMode::eNearest,
10336 SamplerAddressMode addressModeU_ = SamplerAddressMode::eRepeat,
10337 SamplerAddressMode addressModeV_ = SamplerAddressMode::eRepeat,
10338 SamplerAddressMode addressModeW_ = SamplerAddressMode::eRepeat,
10339 float mipLodBias_ = 0,
10340 Bool32 anisotropyEnable_ = 0,
10341 float maxAnisotropy_ = 0,
10342 Bool32 compareEnable_ = 0,
10343 CompareOp compareOp_ = CompareOp::eNever,
10344 float minLod_ = 0,
10345 float maxLod_ = 0,
10346 BorderColor borderColor_ = BorderColor::eFloatTransparentBlack,
10347 Bool32 unnormalizedCoordinates_ = 0 )
10348 : flags( flags_ )
10349 , magFilter( magFilter_ )
10350 , minFilter( minFilter_ )
10351 , mipmapMode( mipmapMode_ )
10352 , addressModeU( addressModeU_ )
10353 , addressModeV( addressModeV_ )
10354 , addressModeW( addressModeW_ )
10355 , mipLodBias( mipLodBias_ )
10356 , anisotropyEnable( anisotropyEnable_ )
10357 , maxAnisotropy( maxAnisotropy_ )
10358 , compareEnable( compareEnable_ )
10359 , compareOp( compareOp_ )
10360 , minLod( minLod_ )
10361 , maxLod( maxLod_ )
10362 , borderColor( borderColor_ )
10363 , unnormalizedCoordinates( unnormalizedCoordinates_ )
10364 {
10365 }
10366
10367 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
10368 {
10369 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
10370 }
10371
10372 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
10373 {
10374 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
10375 return *this;
10376 }
10377 SamplerCreateInfo& setPNext( const void* pNext_ )
10378 {
10379 pNext = pNext_;
10380 return *this;
10381 }
10382
10383 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
10384 {
10385 flags = flags_;
10386 return *this;
10387 }
10388
10389 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
10390 {
10391 magFilter = magFilter_;
10392 return *this;
10393 }
10394
10395 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
10396 {
10397 minFilter = minFilter_;
10398 return *this;
10399 }
10400
10401 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
10402 {
10403 mipmapMode = mipmapMode_;
10404 return *this;
10405 }
10406
10407 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
10408 {
10409 addressModeU = addressModeU_;
10410 return *this;
10411 }
10412
10413 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
10414 {
10415 addressModeV = addressModeV_;
10416 return *this;
10417 }
10418
10419 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
10420 {
10421 addressModeW = addressModeW_;
10422 return *this;
10423 }
10424
10425 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
10426 {
10427 mipLodBias = mipLodBias_;
10428 return *this;
10429 }
10430
10431 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
10432 {
10433 anisotropyEnable = anisotropyEnable_;
10434 return *this;
10435 }
10436
10437 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
10438 {
10439 maxAnisotropy = maxAnisotropy_;
10440 return *this;
10441 }
10442
10443 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
10444 {
10445 compareEnable = compareEnable_;
10446 return *this;
10447 }
10448
10449 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
10450 {
10451 compareOp = compareOp_;
10452 return *this;
10453 }
10454
10455 SamplerCreateInfo& setMinLod( float minLod_ )
10456 {
10457 minLod = minLod_;
10458 return *this;
10459 }
10460
10461 SamplerCreateInfo& setMaxLod( float maxLod_ )
10462 {
10463 maxLod = maxLod_;
10464 return *this;
10465 }
10466
10467 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
10468 {
10469 borderColor = borderColor_;
10470 return *this;
10471 }
10472
10473 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
10474 {
10475 unnormalizedCoordinates = unnormalizedCoordinates_;
10476 return *this;
10477 }
10478
10479 operator const VkSamplerCreateInfo&() const
10480 {
10481 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
10482 }
10483
10484 bool operator==( SamplerCreateInfo const& rhs ) const
10485 {
10486 return ( sType == rhs.sType )
10487 && ( pNext == rhs.pNext )
10488 && ( flags == rhs.flags )
10489 && ( magFilter == rhs.magFilter )
10490 && ( minFilter == rhs.minFilter )
10491 && ( mipmapMode == rhs.mipmapMode )
10492 && ( addressModeU == rhs.addressModeU )
10493 && ( addressModeV == rhs.addressModeV )
10494 && ( addressModeW == rhs.addressModeW )
10495 && ( mipLodBias == rhs.mipLodBias )
10496 && ( anisotropyEnable == rhs.anisotropyEnable )
10497 && ( maxAnisotropy == rhs.maxAnisotropy )
10498 && ( compareEnable == rhs.compareEnable )
10499 && ( compareOp == rhs.compareOp )
10500 && ( minLod == rhs.minLod )
10501 && ( maxLod == rhs.maxLod )
10502 && ( borderColor == rhs.borderColor )
10503 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
10504 }
10505
10506 bool operator!=( SamplerCreateInfo const& rhs ) const
10507 {
10508 return !operator==( rhs );
10509 }
10510
10511 private:
10512 StructureType sType = StructureType::eSamplerCreateInfo;
10513
10514 public:
10515 const void* pNext = nullptr;
10516 SamplerCreateFlags flags;
10517 Filter magFilter;
10518 Filter minFilter;
10519 SamplerMipmapMode mipmapMode;
10520 SamplerAddressMode addressModeU;
10521 SamplerAddressMode addressModeV;
10522 SamplerAddressMode addressModeW;
10523 float mipLodBias;
10524 Bool32 anisotropyEnable;
10525 float maxAnisotropy;
10526 Bool32 compareEnable;
10527 CompareOp compareOp;
10528 float minLod;
10529 float maxLod;
10530 BorderColor borderColor;
10531 Bool32 unnormalizedCoordinates;
10532 };
10533 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
10534
10535 struct CommandBufferAllocateInfo
10536 {
10537 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(),
10538 CommandBufferLevel level_ = CommandBufferLevel::ePrimary,
10539 uint32_t commandBufferCount_ = 0 )
10540 : commandPool( commandPool_ )
10541 , level( level_ )
10542 , commandBufferCount( commandBufferCount_ )
10543 {
10544 }
10545
10546 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
10547 {
10548 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
10549 }
10550
10551 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
10552 {
10553 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
10554 return *this;
10555 }
10556 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
10557 {
10558 pNext = pNext_;
10559 return *this;
10560 }
10561
10562 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
10563 {
10564 commandPool = commandPool_;
10565 return *this;
10566 }
10567
10568 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
10569 {
10570 level = level_;
10571 return *this;
10572 }
10573
10574 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
10575 {
10576 commandBufferCount = commandBufferCount_;
10577 return *this;
10578 }
10579
10580 operator const VkCommandBufferAllocateInfo&() const
10581 {
10582 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
10583 }
10584
10585 bool operator==( CommandBufferAllocateInfo const& rhs ) const
10586 {
10587 return ( sType == rhs.sType )
10588 && ( pNext == rhs.pNext )
10589 && ( commandPool == rhs.commandPool )
10590 && ( level == rhs.level )
10591 && ( commandBufferCount == rhs.commandBufferCount );
10592 }
10593
10594 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
10595 {
10596 return !operator==( rhs );
10597 }
10598
10599 private:
10600 StructureType sType = StructureType::eCommandBufferAllocateInfo;
10601
10602 public:
10603 const void* pNext = nullptr;
10604 CommandPool commandPool;
10605 CommandBufferLevel level;
10606 uint32_t commandBufferCount;
10607 };
10608 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
10609
10610 struct RenderPassBeginInfo
10611 {
10612 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(),
10613 Framebuffer framebuffer_ = Framebuffer(),
10614 Rect2D renderArea_ = Rect2D(),
10615 uint32_t clearValueCount_ = 0,
10616 const ClearValue* pClearValues_ = nullptr )
10617 : renderPass( renderPass_ )
10618 , framebuffer( framebuffer_ )
10619 , renderArea( renderArea_ )
10620 , clearValueCount( clearValueCount_ )
10621 , pClearValues( pClearValues_ )
10622 {
10623 }
10624
10625 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
10626 {
10627 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
10628 }
10629
10630 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
10631 {
10632 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
10633 return *this;
10634 }
10635 RenderPassBeginInfo& setPNext( const void* pNext_ )
10636 {
10637 pNext = pNext_;
10638 return *this;
10639 }
10640
10641 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
10642 {
10643 renderPass = renderPass_;
10644 return *this;
10645 }
10646
10647 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
10648 {
10649 framebuffer = framebuffer_;
10650 return *this;
10651 }
10652
10653 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
10654 {
10655 renderArea = renderArea_;
10656 return *this;
10657 }
10658
10659 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
10660 {
10661 clearValueCount = clearValueCount_;
10662 return *this;
10663 }
10664
10665 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
10666 {
10667 pClearValues = pClearValues_;
10668 return *this;
10669 }
10670
10671 operator const VkRenderPassBeginInfo&() const
10672 {
10673 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
10674 }
10675
10676 bool operator==( RenderPassBeginInfo const& rhs ) const
10677 {
10678 return ( sType == rhs.sType )
10679 && ( pNext == rhs.pNext )
10680 && ( renderPass == rhs.renderPass )
10681 && ( framebuffer == rhs.framebuffer )
10682 && ( renderArea == rhs.renderArea )
10683 && ( clearValueCount == rhs.clearValueCount )
10684 && ( pClearValues == rhs.pClearValues );
10685 }
10686
10687 bool operator!=( RenderPassBeginInfo const& rhs ) const
10688 {
10689 return !operator==( rhs );
10690 }
10691
10692 private:
10693 StructureType sType = StructureType::eRenderPassBeginInfo;
10694
10695 public:
10696 const void* pNext = nullptr;
10697 RenderPass renderPass;
10698 Framebuffer framebuffer;
10699 Rect2D renderArea;
10700 uint32_t clearValueCount;
10701 const ClearValue* pClearValues;
10702 };
10703 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
10704
10705 struct EventCreateInfo
10706 {
10707 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
10708 : flags( flags_ )
10709 {
10710 }
10711
10712 EventCreateInfo( VkEventCreateInfo const & rhs )
10713 {
10714 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
10715 }
10716
10717 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
10718 {
10719 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
10720 return *this;
10721 }
10722 EventCreateInfo& setPNext( const void* pNext_ )
10723 {
10724 pNext = pNext_;
10725 return *this;
10726 }
10727
10728 EventCreateInfo& setFlags( EventCreateFlags flags_ )
10729 {
10730 flags = flags_;
10731 return *this;
10732 }
10733
10734 operator const VkEventCreateInfo&() const
10735 {
10736 return *reinterpret_cast<const VkEventCreateInfo*>(this);
10737 }
10738
10739 bool operator==( EventCreateInfo const& rhs ) const
10740 {
10741 return ( sType == rhs.sType )
10742 && ( pNext == rhs.pNext )
10743 && ( flags == rhs.flags );
10744 }
10745
10746 bool operator!=( EventCreateInfo const& rhs ) const
10747 {
10748 return !operator==( rhs );
10749 }
10750
10751 private:
10752 StructureType sType = StructureType::eEventCreateInfo;
10753
10754 public:
10755 const void* pNext = nullptr;
10756 EventCreateFlags flags;
10757 };
10758 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
10759
10760 struct SemaphoreCreateInfo
10761 {
10762 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
10763 : flags( flags_ )
10764 {
10765 }
10766
10767 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
10768 {
10769 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
10770 }
10771
10772 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
10773 {
10774 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
10775 return *this;
10776 }
10777 SemaphoreCreateInfo& setPNext( const void* pNext_ )
10778 {
10779 pNext = pNext_;
10780 return *this;
10781 }
10782
10783 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
10784 {
10785 flags = flags_;
10786 return *this;
10787 }
10788
10789 operator const VkSemaphoreCreateInfo&() const
10790 {
10791 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
10792 }
10793
10794 bool operator==( SemaphoreCreateInfo const& rhs ) const
10795 {
10796 return ( sType == rhs.sType )
10797 && ( pNext == rhs.pNext )
10798 && ( flags == rhs.flags );
10799 }
10800
10801 bool operator!=( SemaphoreCreateInfo const& rhs ) const
10802 {
10803 return !operator==( rhs );
10804 }
10805
10806 private:
10807 StructureType sType = StructureType::eSemaphoreCreateInfo;
10808
10809 public:
10810 const void* pNext = nullptr;
10811 SemaphoreCreateFlags flags;
10812 };
10813 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
10814
10815 struct FramebufferCreateInfo
10816 {
10817 FramebufferCreateInfo( FramebufferCreateFlags flags_ = FramebufferCreateFlags(),
10818 RenderPass renderPass_ = RenderPass(),
10819 uint32_t attachmentCount_ = 0,
10820 const ImageView* pAttachments_ = nullptr,
10821 uint32_t width_ = 0,
10822 uint32_t height_ = 0,
10823 uint32_t layers_ = 0 )
10824 : flags( flags_ )
10825 , renderPass( renderPass_ )
10826 , attachmentCount( attachmentCount_ )
10827 , pAttachments( pAttachments_ )
10828 , width( width_ )
10829 , height( height_ )
10830 , layers( layers_ )
10831 {
10832 }
10833
10834 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
10835 {
10836 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
10837 }
10838
10839 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
10840 {
10841 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
10842 return *this;
10843 }
10844 FramebufferCreateInfo& setPNext( const void* pNext_ )
10845 {
10846 pNext = pNext_;
10847 return *this;
10848 }
10849
10850 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
10851 {
10852 flags = flags_;
10853 return *this;
10854 }
10855
10856 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
10857 {
10858 renderPass = renderPass_;
10859 return *this;
10860 }
10861
10862 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
10863 {
10864 attachmentCount = attachmentCount_;
10865 return *this;
10866 }
10867
10868 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
10869 {
10870 pAttachments = pAttachments_;
10871 return *this;
10872 }
10873
10874 FramebufferCreateInfo& setWidth( uint32_t width_ )
10875 {
10876 width = width_;
10877 return *this;
10878 }
10879
10880 FramebufferCreateInfo& setHeight( uint32_t height_ )
10881 {
10882 height = height_;
10883 return *this;
10884 }
10885
10886 FramebufferCreateInfo& setLayers( uint32_t layers_ )
10887 {
10888 layers = layers_;
10889 return *this;
10890 }
10891
10892 operator const VkFramebufferCreateInfo&() const
10893 {
10894 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
10895 }
10896
10897 bool operator==( FramebufferCreateInfo const& rhs ) const
10898 {
10899 return ( sType == rhs.sType )
10900 && ( pNext == rhs.pNext )
10901 && ( flags == rhs.flags )
10902 && ( renderPass == rhs.renderPass )
10903 && ( attachmentCount == rhs.attachmentCount )
10904 && ( pAttachments == rhs.pAttachments )
10905 && ( width == rhs.width )
10906 && ( height == rhs.height )
10907 && ( layers == rhs.layers );
10908 }
10909
10910 bool operator!=( FramebufferCreateInfo const& rhs ) const
10911 {
10912 return !operator==( rhs );
10913 }
10914
10915 private:
10916 StructureType sType = StructureType::eFramebufferCreateInfo;
10917
10918 public:
10919 const void* pNext = nullptr;
10920 FramebufferCreateFlags flags;
10921 RenderPass renderPass;
10922 uint32_t attachmentCount;
10923 const ImageView* pAttachments;
10924 uint32_t width;
10925 uint32_t height;
10926 uint32_t layers;
10927 };
10928 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
10929
10930 struct DisplayModeCreateInfoKHR
10931 {
10932 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(),
10933 DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
10934 : flags( flags_ )
10935 , parameters( parameters_ )
10936 {
10937 }
10938
10939 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
10940 {
10941 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
10942 }
10943
10944 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
10945 {
10946 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
10947 return *this;
10948 }
10949 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
10950 {
10951 pNext = pNext_;
10952 return *this;
10953 }
10954
10955 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
10956 {
10957 flags = flags_;
10958 return *this;
10959 }
10960
10961 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
10962 {
10963 parameters = parameters_;
10964 return *this;
10965 }
10966
10967 operator const VkDisplayModeCreateInfoKHR&() const
10968 {
10969 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
10970 }
10971
10972 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
10973 {
10974 return ( sType == rhs.sType )
10975 && ( pNext == rhs.pNext )
10976 && ( flags == rhs.flags )
10977 && ( parameters == rhs.parameters );
10978 }
10979
10980 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
10981 {
10982 return !operator==( rhs );
10983 }
10984
10985 private:
10986 StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
10987
10988 public:
10989 const void* pNext = nullptr;
10990 DisplayModeCreateFlagsKHR flags;
10991 DisplayModeParametersKHR parameters;
10992 };
10993 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
10994
10995 struct DisplayPresentInfoKHR
10996 {
10997 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(),
10998 Rect2D dstRect_ = Rect2D(),
10999 Bool32 persistent_ = 0 )
11000 : srcRect( srcRect_ )
11001 , dstRect( dstRect_ )
11002 , persistent( persistent_ )
11003 {
11004 }
11005
11006 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
11007 {
11008 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
11009 }
11010
11011 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
11012 {
11013 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
11014 return *this;
11015 }
11016 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
11017 {
11018 pNext = pNext_;
11019 return *this;
11020 }
11021
11022 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
11023 {
11024 srcRect = srcRect_;
11025 return *this;
11026 }
11027
11028 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
11029 {
11030 dstRect = dstRect_;
11031 return *this;
11032 }
11033
11034 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
11035 {
11036 persistent = persistent_;
11037 return *this;
11038 }
11039
11040 operator const VkDisplayPresentInfoKHR&() const
11041 {
11042 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
11043 }
11044
11045 bool operator==( DisplayPresentInfoKHR const& rhs ) const
11046 {
11047 return ( sType == rhs.sType )
11048 && ( pNext == rhs.pNext )
11049 && ( srcRect == rhs.srcRect )
11050 && ( dstRect == rhs.dstRect )
11051 && ( persistent == rhs.persistent );
11052 }
11053
11054 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
11055 {
11056 return !operator==( rhs );
11057 }
11058
11059 private:
11060 StructureType sType = StructureType::eDisplayPresentInfoKHR;
11061
11062 public:
11063 const void* pNext = nullptr;
11064 Rect2D srcRect;
11065 Rect2D dstRect;
11066 Bool32 persistent;
11067 };
11068 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
11069
11070#ifdef VK_USE_PLATFORM_ANDROID_KHR
11071 struct AndroidSurfaceCreateInfoKHR
11072 {
11073 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(),
11074 struct ANativeWindow* window_ = nullptr )
11075 : flags( flags_ )
11076 , window( window_ )
11077 {
11078 }
11079
11080 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
11081 {
11082 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
11083 }
11084
11085 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
11086 {
11087 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
11088 return *this;
11089 }
11090 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11091 {
11092 pNext = pNext_;
11093 return *this;
11094 }
11095
11096 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
11097 {
11098 flags = flags_;
11099 return *this;
11100 }
11101
11102 AndroidSurfaceCreateInfoKHR& setWindow( struct ANativeWindow* window_ )
11103 {
11104 window = window_;
11105 return *this;
11106 }
11107
11108 operator const VkAndroidSurfaceCreateInfoKHR&() const
11109 {
11110 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
11111 }
11112
11113 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
11114 {
11115 return ( sType == rhs.sType )
11116 && ( pNext == rhs.pNext )
11117 && ( flags == rhs.flags )
11118 && ( window == rhs.window );
11119 }
11120
11121 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
11122 {
11123 return !operator==( rhs );
11124 }
11125
11126 private:
11127 StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR;
11128
11129 public:
11130 const void* pNext = nullptr;
11131 AndroidSurfaceCreateFlagsKHR flags;
11132 struct ANativeWindow* window;
11133 };
11134 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11135#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
11136
11137#ifdef VK_USE_PLATFORM_MIR_KHR
11138 struct MirSurfaceCreateInfoKHR
11139 {
11140 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(),
11141 MirConnection* connection_ = nullptr,
11142 MirSurface* mirSurface_ = nullptr )
11143 : flags( flags_ )
11144 , connection( connection_ )
11145 , mirSurface( mirSurface_ )
11146 {
11147 }
11148
11149 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
11150 {
11151 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
11152 }
11153
11154 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
11155 {
11156 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
11157 return *this;
11158 }
11159 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11160 {
11161 pNext = pNext_;
11162 return *this;
11163 }
11164
11165 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
11166 {
11167 flags = flags_;
11168 return *this;
11169 }
11170
11171 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
11172 {
11173 connection = connection_;
11174 return *this;
11175 }
11176
11177 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
11178 {
11179 mirSurface = mirSurface_;
11180 return *this;
11181 }
11182
11183 operator const VkMirSurfaceCreateInfoKHR&() const
11184 {
11185 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
11186 }
11187
11188 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
11189 {
11190 return ( sType == rhs.sType )
11191 && ( pNext == rhs.pNext )
11192 && ( flags == rhs.flags )
11193 && ( connection == rhs.connection )
11194 && ( mirSurface == rhs.mirSurface );
11195 }
11196
11197 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
11198 {
11199 return !operator==( rhs );
11200 }
11201
11202 private:
11203 StructureType sType = StructureType::eMirSurfaceCreateInfoKHR;
11204
11205 public:
11206 const void* pNext = nullptr;
11207 MirSurfaceCreateFlagsKHR flags;
11208 MirConnection* connection;
11209 MirSurface* mirSurface;
11210 };
11211 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11212#endif /*VK_USE_PLATFORM_MIR_KHR*/
11213
11214#ifdef VK_USE_PLATFORM_VI_NN
11215 struct ViSurfaceCreateInfoNN
11216 {
11217 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(),
11218 void* window_ = nullptr )
11219 : flags( flags_ )
11220 , window( window_ )
11221 {
11222 }
11223
11224 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
11225 {
11226 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
11227 }
11228
11229 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
11230 {
11231 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
11232 return *this;
11233 }
11234 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
11235 {
11236 pNext = pNext_;
11237 return *this;
11238 }
11239
11240 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
11241 {
11242 flags = flags_;
11243 return *this;
11244 }
11245
11246 ViSurfaceCreateInfoNN& setWindow( void* window_ )
11247 {
11248 window = window_;
11249 return *this;
11250 }
11251
11252 operator const VkViSurfaceCreateInfoNN&() const
11253 {
11254 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
11255 }
11256
11257 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
11258 {
11259 return ( sType == rhs.sType )
11260 && ( pNext == rhs.pNext )
11261 && ( flags == rhs.flags )
11262 && ( window == rhs.window );
11263 }
11264
11265 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
11266 {
11267 return !operator==( rhs );
11268 }
11269
11270 private:
11271 StructureType sType = StructureType::eViSurfaceCreateInfoNN;
11272
11273 public:
11274 const void* pNext = nullptr;
11275 ViSurfaceCreateFlagsNN flags;
11276 void* window;
11277 };
11278 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
11279#endif /*VK_USE_PLATFORM_VI_NN*/
11280
11281#ifdef VK_USE_PLATFORM_WAYLAND_KHR
11282 struct WaylandSurfaceCreateInfoKHR
11283 {
11284 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(),
11285 struct wl_display* display_ = nullptr,
11286 struct wl_surface* surface_ = nullptr )
11287 : flags( flags_ )
11288 , display( display_ )
11289 , surface( surface_ )
11290 {
11291 }
11292
11293 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
11294 {
11295 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
11296 }
11297
11298 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
11299 {
11300 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
11301 return *this;
11302 }
11303 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11304 {
11305 pNext = pNext_;
11306 return *this;
11307 }
11308
11309 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
11310 {
11311 flags = flags_;
11312 return *this;
11313 }
11314
11315 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
11316 {
11317 display = display_;
11318 return *this;
11319 }
11320
11321 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
11322 {
11323 surface = surface_;
11324 return *this;
11325 }
11326
11327 operator const VkWaylandSurfaceCreateInfoKHR&() const
11328 {
11329 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
11330 }
11331
11332 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
11333 {
11334 return ( sType == rhs.sType )
11335 && ( pNext == rhs.pNext )
11336 && ( flags == rhs.flags )
11337 && ( display == rhs.display )
11338 && ( surface == rhs.surface );
11339 }
11340
11341 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
11342 {
11343 return !operator==( rhs );
11344 }
11345
11346 private:
11347 StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR;
11348
11349 public:
11350 const void* pNext = nullptr;
11351 WaylandSurfaceCreateFlagsKHR flags;
11352 struct wl_display* display;
11353 struct wl_surface* surface;
11354 };
11355 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11356#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
11357
11358#ifdef VK_USE_PLATFORM_WIN32_KHR
11359 struct Win32SurfaceCreateInfoKHR
11360 {
11361 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(),
11362 HINSTANCE hinstance_ = 0,
11363 HWND hwnd_ = 0 )
11364 : flags( flags_ )
11365 , hinstance( hinstance_ )
11366 , hwnd( hwnd_ )
11367 {
11368 }
11369
11370 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
11371 {
11372 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
11373 }
11374
11375 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
11376 {
11377 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
11378 return *this;
11379 }
11380 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11381 {
11382 pNext = pNext_;
11383 return *this;
11384 }
11385
11386 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
11387 {
11388 flags = flags_;
11389 return *this;
11390 }
11391
11392 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
11393 {
11394 hinstance = hinstance_;
11395 return *this;
11396 }
11397
11398 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
11399 {
11400 hwnd = hwnd_;
11401 return *this;
11402 }
11403
11404 operator const VkWin32SurfaceCreateInfoKHR&() const
11405 {
11406 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
11407 }
11408
11409 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
11410 {
11411 return ( sType == rhs.sType )
11412 && ( pNext == rhs.pNext )
11413 && ( flags == rhs.flags )
11414 && ( hinstance == rhs.hinstance )
11415 && ( hwnd == rhs.hwnd );
11416 }
11417
11418 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
11419 {
11420 return !operator==( rhs );
11421 }
11422
11423 private:
11424 StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR;
11425
11426 public:
11427 const void* pNext = nullptr;
11428 Win32SurfaceCreateFlagsKHR flags;
11429 HINSTANCE hinstance;
11430 HWND hwnd;
11431 };
11432 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11433#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11434
11435#ifdef VK_USE_PLATFORM_XLIB_KHR
11436 struct XlibSurfaceCreateInfoKHR
11437 {
11438 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(),
11439 Display* dpy_ = nullptr,
11440 Window window_ = 0 )
11441 : flags( flags_ )
11442 , dpy( dpy_ )
11443 , window( window_ )
11444 {
11445 }
11446
11447 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
11448 {
11449 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
11450 }
11451
11452 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
11453 {
11454 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
11455 return *this;
11456 }
11457 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11458 {
11459 pNext = pNext_;
11460 return *this;
11461 }
11462
11463 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
11464 {
11465 flags = flags_;
11466 return *this;
11467 }
11468
11469 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
11470 {
11471 dpy = dpy_;
11472 return *this;
11473 }
11474
11475 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
11476 {
11477 window = window_;
11478 return *this;
11479 }
11480
11481 operator const VkXlibSurfaceCreateInfoKHR&() const
11482 {
11483 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
11484 }
11485
11486 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
11487 {
11488 return ( sType == rhs.sType )
11489 && ( pNext == rhs.pNext )
11490 && ( flags == rhs.flags )
11491 && ( dpy == rhs.dpy )
11492 && ( window == rhs.window );
11493 }
11494
11495 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
11496 {
11497 return !operator==( rhs );
11498 }
11499
11500 private:
11501 StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR;
11502
11503 public:
11504 const void* pNext = nullptr;
11505 XlibSurfaceCreateFlagsKHR flags;
11506 Display* dpy;
11507 Window window;
11508 };
11509 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11510#endif /*VK_USE_PLATFORM_XLIB_KHR*/
11511
11512#ifdef VK_USE_PLATFORM_XCB_KHR
11513 struct XcbSurfaceCreateInfoKHR
11514 {
11515 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(),
11516 xcb_connection_t* connection_ = nullptr,
11517 xcb_window_t window_ = 0 )
11518 : flags( flags_ )
11519 , connection( connection_ )
11520 , window( window_ )
11521 {
11522 }
11523
11524 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
11525 {
11526 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
11527 }
11528
11529 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
11530 {
11531 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
11532 return *this;
11533 }
11534 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
11535 {
11536 pNext = pNext_;
11537 return *this;
11538 }
11539
11540 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
11541 {
11542 flags = flags_;
11543 return *this;
11544 }
11545
11546 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
11547 {
11548 connection = connection_;
11549 return *this;
11550 }
11551
11552 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
11553 {
11554 window = window_;
11555 return *this;
11556 }
11557
11558 operator const VkXcbSurfaceCreateInfoKHR&() const
11559 {
11560 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
11561 }
11562
11563 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
11564 {
11565 return ( sType == rhs.sType )
11566 && ( pNext == rhs.pNext )
11567 && ( flags == rhs.flags )
11568 && ( connection == rhs.connection )
11569 && ( window == rhs.window );
11570 }
11571
11572 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
11573 {
11574 return !operator==( rhs );
11575 }
11576
11577 private:
11578 StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR;
11579
11580 public:
11581 const void* pNext = nullptr;
11582 XcbSurfaceCreateFlagsKHR flags;
11583 xcb_connection_t* connection;
11584 xcb_window_t window;
11585 };
11586 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
11587#endif /*VK_USE_PLATFORM_XCB_KHR*/
11588
11589 struct DebugMarkerMarkerInfoEXT
11590 {
11591 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr,
11592 std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
11593 : pMarkerName( pMarkerName_ )
11594 {
11595 memcpy( &color, color_.data(), 4 * sizeof( float ) );
11596 }
11597
11598 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
11599 {
11600 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
11601 }
11602
11603 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
11604 {
11605 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
11606 return *this;
11607 }
11608 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
11609 {
11610 pNext = pNext_;
11611 return *this;
11612 }
11613
11614 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
11615 {
11616 pMarkerName = pMarkerName_;
11617 return *this;
11618 }
11619
11620 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
11621 {
11622 memcpy( &color, color_.data(), 4 * sizeof( float ) );
11623 return *this;
11624 }
11625
11626 operator const VkDebugMarkerMarkerInfoEXT&() const
11627 {
11628 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
11629 }
11630
11631 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
11632 {
11633 return ( sType == rhs.sType )
11634 && ( pNext == rhs.pNext )
11635 && ( pMarkerName == rhs.pMarkerName )
11636 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
11637 }
11638
11639 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
11640 {
11641 return !operator==( rhs );
11642 }
11643
11644 private:
11645 StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT;
11646
11647 public:
11648 const void* pNext = nullptr;
11649 const char* pMarkerName;
11650 float color[4];
11651 };
11652 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
11653
11654 struct DedicatedAllocationImageCreateInfoNV
11655 {
11656 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
11657 : dedicatedAllocation( dedicatedAllocation_ )
11658 {
11659 }
11660
11661 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
11662 {
11663 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
11664 }
11665
11666 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
11667 {
11668 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
11669 return *this;
11670 }
11671 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
11672 {
11673 pNext = pNext_;
11674 return *this;
11675 }
11676
11677 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
11678 {
11679 dedicatedAllocation = dedicatedAllocation_;
11680 return *this;
11681 }
11682
11683 operator const VkDedicatedAllocationImageCreateInfoNV&() const
11684 {
11685 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
11686 }
11687
11688 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
11689 {
11690 return ( sType == rhs.sType )
11691 && ( pNext == rhs.pNext )
11692 && ( dedicatedAllocation == rhs.dedicatedAllocation );
11693 }
11694
11695 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
11696 {
11697 return !operator==( rhs );
11698 }
11699
11700 private:
11701 StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV;
11702
11703 public:
11704 const void* pNext = nullptr;
11705 Bool32 dedicatedAllocation;
11706 };
11707 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
11708
11709 struct DedicatedAllocationBufferCreateInfoNV
11710 {
11711 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
11712 : dedicatedAllocation( dedicatedAllocation_ )
11713 {
11714 }
11715
11716 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
11717 {
11718 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
11719 }
11720
11721 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
11722 {
11723 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
11724 return *this;
11725 }
11726 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
11727 {
11728 pNext = pNext_;
11729 return *this;
11730 }
11731
11732 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
11733 {
11734 dedicatedAllocation = dedicatedAllocation_;
11735 return *this;
11736 }
11737
11738 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
11739 {
11740 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
11741 }
11742
11743 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
11744 {
11745 return ( sType == rhs.sType )
11746 && ( pNext == rhs.pNext )
11747 && ( dedicatedAllocation == rhs.dedicatedAllocation );
11748 }
11749
11750 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
11751 {
11752 return !operator==( rhs );
11753 }
11754
11755 private:
11756 StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV;
11757
11758 public:
11759 const void* pNext = nullptr;
11760 Bool32 dedicatedAllocation;
11761 };
11762 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
11763
11764 struct DedicatedAllocationMemoryAllocateInfoNV
11765 {
11766 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(),
11767 Buffer buffer_ = Buffer() )
11768 : image( image_ )
11769 , buffer( buffer_ )
11770 {
11771 }
11772
11773 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
11774 {
11775 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
11776 }
11777
11778 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
11779 {
11780 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
11781 return *this;
11782 }
11783 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
11784 {
11785 pNext = pNext_;
11786 return *this;
11787 }
11788
11789 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
11790 {
11791 image = image_;
11792 return *this;
11793 }
11794
11795 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
11796 {
11797 buffer = buffer_;
11798 return *this;
11799 }
11800
11801 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
11802 {
11803 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
11804 }
11805
11806 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
11807 {
11808 return ( sType == rhs.sType )
11809 && ( pNext == rhs.pNext )
11810 && ( image == rhs.image )
11811 && ( buffer == rhs.buffer );
11812 }
11813
11814 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
11815 {
11816 return !operator==( rhs );
11817 }
11818
11819 private:
11820 StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
11821
11822 public:
11823 const void* pNext = nullptr;
11824 Image image;
11825 Buffer buffer;
11826 };
11827 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
11828
11829#ifdef VK_USE_PLATFORM_WIN32_NV
11830 struct ExportMemoryWin32HandleInfoNV
11831 {
11832 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
11833 DWORD dwAccess_ = 0 )
11834 : pAttributes( pAttributes_ )
11835 , dwAccess( dwAccess_ )
11836 {
11837 }
11838
11839 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
11840 {
11841 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
11842 }
11843
11844 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
11845 {
11846 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
11847 return *this;
11848 }
11849 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
11850 {
11851 pNext = pNext_;
11852 return *this;
11853 }
11854
11855 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11856 {
11857 pAttributes = pAttributes_;
11858 return *this;
11859 }
11860
11861 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
11862 {
11863 dwAccess = dwAccess_;
11864 return *this;
11865 }
11866
11867 operator const VkExportMemoryWin32HandleInfoNV&() const
11868 {
11869 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
11870 }
11871
11872 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
11873 {
11874 return ( sType == rhs.sType )
11875 && ( pNext == rhs.pNext )
11876 && ( pAttributes == rhs.pAttributes )
11877 && ( dwAccess == rhs.dwAccess );
11878 }
11879
11880 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
11881 {
11882 return !operator==( rhs );
11883 }
11884
11885 private:
11886 StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV;
11887
11888 public:
11889 const void* pNext = nullptr;
11890 const SECURITY_ATTRIBUTES* pAttributes;
11891 DWORD dwAccess;
11892 };
11893 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
11894#endif /*VK_USE_PLATFORM_WIN32_NV*/
11895
11896#ifdef VK_USE_PLATFORM_WIN32_NV
11897 struct Win32KeyedMutexAcquireReleaseInfoNV
11898 {
11899 Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0,
11900 const DeviceMemory* pAcquireSyncs_ = nullptr,
11901 const uint64_t* pAcquireKeys_ = nullptr,
11902 const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr,
11903 uint32_t releaseCount_ = 0,
11904 const DeviceMemory* pReleaseSyncs_ = nullptr,
11905 const uint64_t* pReleaseKeys_ = nullptr )
11906 : acquireCount( acquireCount_ )
11907 , pAcquireSyncs( pAcquireSyncs_ )
11908 , pAcquireKeys( pAcquireKeys_ )
11909 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
11910 , releaseCount( releaseCount_ )
11911 , pReleaseSyncs( pReleaseSyncs_ )
11912 , pReleaseKeys( pReleaseKeys_ )
11913 {
11914 }
11915
11916 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
11917 {
11918 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
11919 }
11920
11921 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
11922 {
11923 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
11924 return *this;
11925 }
11926 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
11927 {
11928 pNext = pNext_;
11929 return *this;
11930 }
11931
11932 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
11933 {
11934 acquireCount = acquireCount_;
11935 return *this;
11936 }
11937
11938 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
11939 {
11940 pAcquireSyncs = pAcquireSyncs_;
11941 return *this;
11942 }
11943
11944 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
11945 {
11946 pAcquireKeys = pAcquireKeys_;
11947 return *this;
11948 }
11949
11950 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
11951 {
11952 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
11953 return *this;
11954 }
11955
11956 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
11957 {
11958 releaseCount = releaseCount_;
11959 return *this;
11960 }
11961
11962 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
11963 {
11964 pReleaseSyncs = pReleaseSyncs_;
11965 return *this;
11966 }
11967
11968 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
11969 {
11970 pReleaseKeys = pReleaseKeys_;
11971 return *this;
11972 }
11973
11974 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
11975 {
11976 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
11977 }
11978
11979 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
11980 {
11981 return ( sType == rhs.sType )
11982 && ( pNext == rhs.pNext )
11983 && ( acquireCount == rhs.acquireCount )
11984 && ( pAcquireSyncs == rhs.pAcquireSyncs )
11985 && ( pAcquireKeys == rhs.pAcquireKeys )
11986 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
11987 && ( releaseCount == rhs.releaseCount )
11988 && ( pReleaseSyncs == rhs.pReleaseSyncs )
11989 && ( pReleaseKeys == rhs.pReleaseKeys );
11990 }
11991
11992 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
11993 {
11994 return !operator==( rhs );
11995 }
11996
11997 private:
11998 StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
11999
12000 public:
12001 const void* pNext = nullptr;
12002 uint32_t acquireCount;
12003 const DeviceMemory* pAcquireSyncs;
12004 const uint64_t* pAcquireKeys;
12005 const uint32_t* pAcquireTimeoutMilliseconds;
12006 uint32_t releaseCount;
12007 const DeviceMemory* pReleaseSyncs;
12008 const uint64_t* pReleaseKeys;
12009 };
12010 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
12011#endif /*VK_USE_PLATFORM_WIN32_NV*/
12012
12013 struct DeviceGeneratedCommandsFeaturesNVX
12014 {
12015 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
12016 : computeBindingPointSupport( computeBindingPointSupport_ )
12017 {
12018 }
12019
12020 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
12021 {
12022 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
12023 }
12024
12025 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
12026 {
12027 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
12028 return *this;
12029 }
12030 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
12031 {
12032 pNext = pNext_;
12033 return *this;
12034 }
12035
12036 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
12037 {
12038 computeBindingPointSupport = computeBindingPointSupport_;
12039 return *this;
12040 }
12041
12042 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
12043 {
12044 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
12045 }
12046
12047 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
12048 {
12049 return ( sType == rhs.sType )
12050 && ( pNext == rhs.pNext )
12051 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
12052 }
12053
12054 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
12055 {
12056 return !operator==( rhs );
12057 }
12058
12059 private:
12060 StructureType sType = StructureType::eDeviceGeneratedCommandsFeaturesNVX;
12061
12062 public:
12063 const void* pNext = nullptr;
12064 Bool32 computeBindingPointSupport;
12065 };
12066 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
12067
12068 struct DeviceGeneratedCommandsLimitsNVX
12069 {
12070 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0,
12071 uint32_t maxObjectEntryCounts_ = 0,
12072 uint32_t minSequenceCountBufferOffsetAlignment_ = 0,
12073 uint32_t minSequenceIndexBufferOffsetAlignment_ = 0,
12074 uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
12075 : maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
12076 , maxObjectEntryCounts( maxObjectEntryCounts_ )
12077 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
12078 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
12079 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
12080 {
12081 }
12082
12083 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
12084 {
12085 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
12086 }
12087
12088 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
12089 {
12090 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
12091 return *this;
12092 }
12093 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
12094 {
12095 pNext = pNext_;
12096 return *this;
12097 }
12098
12099 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
12100 {
12101 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
12102 return *this;
12103 }
12104
12105 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
12106 {
12107 maxObjectEntryCounts = maxObjectEntryCounts_;
12108 return *this;
12109 }
12110
12111 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
12112 {
12113 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
12114 return *this;
12115 }
12116
12117 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
12118 {
12119 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
12120 return *this;
12121 }
12122
12123 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
12124 {
12125 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
12126 return *this;
12127 }
12128
12129 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
12130 {
12131 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
12132 }
12133
12134 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
12135 {
12136 return ( sType == rhs.sType )
12137 && ( pNext == rhs.pNext )
12138 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
12139 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
12140 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
12141 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
12142 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
12143 }
12144
12145 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
12146 {
12147 return !operator==( rhs );
12148 }
12149
12150 private:
12151 StructureType sType = StructureType::eDeviceGeneratedCommandsLimitsNVX;
12152
12153 public:
12154 const void* pNext = nullptr;
12155 uint32_t maxIndirectCommandsLayoutTokenCount;
12156 uint32_t maxObjectEntryCounts;
12157 uint32_t minSequenceCountBufferOffsetAlignment;
12158 uint32_t minSequenceIndexBufferOffsetAlignment;
12159 uint32_t minCommandsTokenBufferOffsetAlignment;
12160 };
12161 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
12162
12163 struct CmdReserveSpaceForCommandsInfoNVX
12164 {
12165 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(),
12166 IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(),
12167 uint32_t maxSequencesCount_ = 0 )
12168 : objectTable( objectTable_ )
12169 , indirectCommandsLayout( indirectCommandsLayout_ )
12170 , maxSequencesCount( maxSequencesCount_ )
12171 {
12172 }
12173
12174 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
12175 {
12176 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
12177 }
12178
12179 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
12180 {
12181 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
12182 return *this;
12183 }
12184 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
12185 {
12186 pNext = pNext_;
12187 return *this;
12188 }
12189
12190 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
12191 {
12192 objectTable = objectTable_;
12193 return *this;
12194 }
12195
12196 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
12197 {
12198 indirectCommandsLayout = indirectCommandsLayout_;
12199 return *this;
12200 }
12201
12202 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
12203 {
12204 maxSequencesCount = maxSequencesCount_;
12205 return *this;
12206 }
12207
12208 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
12209 {
12210 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
12211 }
12212
12213 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
12214 {
12215 return ( sType == rhs.sType )
12216 && ( pNext == rhs.pNext )
12217 && ( objectTable == rhs.objectTable )
12218 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
12219 && ( maxSequencesCount == rhs.maxSequencesCount );
12220 }
12221
12222 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
12223 {
12224 return !operator==( rhs );
12225 }
12226
12227 private:
12228 StructureType sType = StructureType::eCmdReserveSpaceForCommandsInfoNVX;
12229
12230 public:
12231 const void* pNext = nullptr;
12232 ObjectTableNVX objectTable;
12233 IndirectCommandsLayoutNVX indirectCommandsLayout;
12234 uint32_t maxSequencesCount;
12235 };
12236 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
12237
12238 struct PhysicalDeviceFeatures2
12239 {
12240 PhysicalDeviceFeatures2( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
12241 : features( features_ )
12242 {
12243 }
12244
12245 PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs )
12246 {
12247 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
12248 }
12249
12250 PhysicalDeviceFeatures2& operator=( VkPhysicalDeviceFeatures2 const & rhs )
12251 {
12252 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
12253 return *this;
12254 }
12255 PhysicalDeviceFeatures2& setPNext( void* pNext_ )
12256 {
12257 pNext = pNext_;
12258 return *this;
12259 }
12260
12261 PhysicalDeviceFeatures2& setFeatures( PhysicalDeviceFeatures features_ )
12262 {
12263 features = features_;
12264 return *this;
12265 }
12266
12267 operator const VkPhysicalDeviceFeatures2&() const
12268 {
12269 return *reinterpret_cast<const VkPhysicalDeviceFeatures2*>(this);
12270 }
12271
12272 bool operator==( PhysicalDeviceFeatures2 const& rhs ) const
12273 {
12274 return ( sType == rhs.sType )
12275 && ( pNext == rhs.pNext )
12276 && ( features == rhs.features );
12277 }
12278
12279 bool operator!=( PhysicalDeviceFeatures2 const& rhs ) const
12280 {
12281 return !operator==( rhs );
12282 }
12283
12284 private:
12285 StructureType sType = StructureType::ePhysicalDeviceFeatures2;
12286
12287 public:
12288 void* pNext = nullptr;
12289 PhysicalDeviceFeatures features;
12290 };
12291 static_assert( sizeof( PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), "struct and wrapper have different size!" );
12292
12293 using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
12294
12295 struct PhysicalDevicePushDescriptorPropertiesKHR
12296 {
12297 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
12298 : maxPushDescriptors( maxPushDescriptors_ )
12299 {
12300 }
12301
12302 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
12303 {
12304 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
12305 }
12306
12307 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
12308 {
12309 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
12310 return *this;
12311 }
12312 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
12313 {
12314 pNext = pNext_;
12315 return *this;
12316 }
12317
12318 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
12319 {
12320 maxPushDescriptors = maxPushDescriptors_;
12321 return *this;
12322 }
12323
12324 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
12325 {
12326 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
12327 }
12328
12329 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
12330 {
12331 return ( sType == rhs.sType )
12332 && ( pNext == rhs.pNext )
12333 && ( maxPushDescriptors == rhs.maxPushDescriptors );
12334 }
12335
12336 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
12337 {
12338 return !operator==( rhs );
12339 }
12340
12341 private:
12342 StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
12343
12344 public:
12345 void* pNext = nullptr;
12346 uint32_t maxPushDescriptors;
12347 };
12348 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
12349
12350 struct PresentRegionsKHR
12351 {
12352 PresentRegionsKHR( uint32_t swapchainCount_ = 0,
12353 const PresentRegionKHR* pRegions_ = nullptr )
12354 : swapchainCount( swapchainCount_ )
12355 , pRegions( pRegions_ )
12356 {
12357 }
12358
12359 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
12360 {
12361 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
12362 }
12363
12364 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
12365 {
12366 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
12367 return *this;
12368 }
12369 PresentRegionsKHR& setPNext( const void* pNext_ )
12370 {
12371 pNext = pNext_;
12372 return *this;
12373 }
12374
12375 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
12376 {
12377 swapchainCount = swapchainCount_;
12378 return *this;
12379 }
12380
12381 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
12382 {
12383 pRegions = pRegions_;
12384 return *this;
12385 }
12386
12387 operator const VkPresentRegionsKHR&() const
12388 {
12389 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
12390 }
12391
12392 bool operator==( PresentRegionsKHR const& rhs ) const
12393 {
12394 return ( sType == rhs.sType )
12395 && ( pNext == rhs.pNext )
12396 && ( swapchainCount == rhs.swapchainCount )
12397 && ( pRegions == rhs.pRegions );
12398 }
12399
12400 bool operator!=( PresentRegionsKHR const& rhs ) const
12401 {
12402 return !operator==( rhs );
12403 }
12404
12405 private:
12406 StructureType sType = StructureType::ePresentRegionsKHR;
12407
12408 public:
12409 const void* pNext = nullptr;
12410 uint32_t swapchainCount;
12411 const PresentRegionKHR* pRegions;
12412 };
12413 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
12414
12415 struct PhysicalDeviceVariablePointerFeatures
12416 {
12417 PhysicalDeviceVariablePointerFeatures( Bool32 variablePointersStorageBuffer_ = 0,
12418 Bool32 variablePointers_ = 0 )
12419 : variablePointersStorageBuffer( variablePointersStorageBuffer_ )
12420 , variablePointers( variablePointers_ )
12421 {
12422 }
12423
12424 PhysicalDeviceVariablePointerFeatures( VkPhysicalDeviceVariablePointerFeatures const & rhs )
12425 {
12426 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeatures ) );
12427 }
12428
12429 PhysicalDeviceVariablePointerFeatures& operator=( VkPhysicalDeviceVariablePointerFeatures const & rhs )
12430 {
12431 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeatures ) );
12432 return *this;
12433 }
12434 PhysicalDeviceVariablePointerFeatures& setPNext( void* pNext_ )
12435 {
12436 pNext = pNext_;
12437 return *this;
12438 }
12439
12440 PhysicalDeviceVariablePointerFeatures& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
12441 {
12442 variablePointersStorageBuffer = variablePointersStorageBuffer_;
12443 return *this;
12444 }
12445
12446 PhysicalDeviceVariablePointerFeatures& setVariablePointers( Bool32 variablePointers_ )
12447 {
12448 variablePointers = variablePointers_;
12449 return *this;
12450 }
12451
12452 operator const VkPhysicalDeviceVariablePointerFeatures&() const
12453 {
12454 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeatures*>(this);
12455 }
12456
12457 bool operator==( PhysicalDeviceVariablePointerFeatures const& rhs ) const
12458 {
12459 return ( sType == rhs.sType )
12460 && ( pNext == rhs.pNext )
12461 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
12462 && ( variablePointers == rhs.variablePointers );
12463 }
12464
12465 bool operator!=( PhysicalDeviceVariablePointerFeatures const& rhs ) const
12466 {
12467 return !operator==( rhs );
12468 }
12469
12470 private:
12471 StructureType sType = StructureType::ePhysicalDeviceVariablePointerFeatures;
12472
12473 public:
12474 void* pNext = nullptr;
12475 Bool32 variablePointersStorageBuffer;
12476 Bool32 variablePointers;
12477 };
12478 static_assert( sizeof( PhysicalDeviceVariablePointerFeatures ) == sizeof( VkPhysicalDeviceVariablePointerFeatures ), "struct and wrapper have different size!" );
12479
12480 using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointerFeatures;
12481
12482 struct PhysicalDeviceIDProperties
12483 {
12484 operator const VkPhysicalDeviceIDProperties&() const
12485 {
12486 return *reinterpret_cast<const VkPhysicalDeviceIDProperties*>(this);
12487 }
12488
12489 bool operator==( PhysicalDeviceIDProperties const& rhs ) const
12490 {
12491 return ( sType == rhs.sType )
12492 && ( pNext == rhs.pNext )
12493 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
12494 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
12495 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE * sizeof( uint8_t ) ) == 0 )
12496 && ( deviceNodeMask == rhs.deviceNodeMask )
12497 && ( deviceLUIDValid == rhs.deviceLUIDValid );
12498 }
12499
12500 bool operator!=( PhysicalDeviceIDProperties const& rhs ) const
12501 {
12502 return !operator==( rhs );
12503 }
12504
12505 private:
12506 StructureType sType = StructureType::ePhysicalDeviceIdProperties;
12507
12508 public:
12509 void* pNext = nullptr;
12510 uint8_t deviceUUID[VK_UUID_SIZE];
12511 uint8_t driverUUID[VK_UUID_SIZE];
12512 uint8_t deviceLUID[VK_LUID_SIZE];
12513 uint32_t deviceNodeMask;
12514 Bool32 deviceLUIDValid;
12515 };
12516 static_assert( sizeof( PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), "struct and wrapper have different size!" );
12517
12518 using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
12519
12520#ifdef VK_USE_PLATFORM_WIN32_KHR
12521 struct ExportMemoryWin32HandleInfoKHR
12522 {
12523 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
12524 DWORD dwAccess_ = 0,
12525 LPCWSTR name_ = 0 )
12526 : pAttributes( pAttributes_ )
12527 , dwAccess( dwAccess_ )
12528 , name( name_ )
12529 {
12530 }
12531
12532 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
12533 {
12534 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
12535 }
12536
12537 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
12538 {
12539 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
12540 return *this;
12541 }
12542 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
12543 {
12544 pNext = pNext_;
12545 return *this;
12546 }
12547
12548 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
12549 {
12550 pAttributes = pAttributes_;
12551 return *this;
12552 }
12553
12554 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
12555 {
12556 dwAccess = dwAccess_;
12557 return *this;
12558 }
12559
12560 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
12561 {
12562 name = name_;
12563 return *this;
12564 }
12565
12566 operator const VkExportMemoryWin32HandleInfoKHR&() const
12567 {
12568 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
12569 }
12570
12571 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
12572 {
12573 return ( sType == rhs.sType )
12574 && ( pNext == rhs.pNext )
12575 && ( pAttributes == rhs.pAttributes )
12576 && ( dwAccess == rhs.dwAccess )
12577 && ( name == rhs.name );
12578 }
12579
12580 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
12581 {
12582 return !operator==( rhs );
12583 }
12584
12585 private:
12586 StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR;
12587
12588 public:
12589 const void* pNext = nullptr;
12590 const SECURITY_ATTRIBUTES* pAttributes;
12591 DWORD dwAccess;
12592 LPCWSTR name;
12593 };
12594 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
12595#endif /*VK_USE_PLATFORM_WIN32_KHR*/
12596
12597#ifdef VK_USE_PLATFORM_WIN32_KHR
12598 struct MemoryWin32HandlePropertiesKHR
12599 {
12600 operator const VkMemoryWin32HandlePropertiesKHR&() const
12601 {
12602 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
12603 }
12604
12605 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
12606 {
12607 return ( sType == rhs.sType )
12608 && ( pNext == rhs.pNext )
12609 && ( memoryTypeBits == rhs.memoryTypeBits );
12610 }
12611
12612 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
12613 {
12614 return !operator==( rhs );
12615 }
12616
12617 private:
12618 StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR;
12619
12620 public:
12621 void* pNext = nullptr;
12622 uint32_t memoryTypeBits;
12623 };
12624 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
12625#endif /*VK_USE_PLATFORM_WIN32_KHR*/
12626
12627 struct MemoryFdPropertiesKHR
12628 {
12629 operator const VkMemoryFdPropertiesKHR&() const
12630 {
12631 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
12632 }
12633
12634 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
12635 {
12636 return ( sType == rhs.sType )
12637 && ( pNext == rhs.pNext )
12638 && ( memoryTypeBits == rhs.memoryTypeBits );
12639 }
12640
12641 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
12642 {
12643 return !operator==( rhs );
12644 }
12645
12646 private:
12647 StructureType sType = StructureType::eMemoryFdPropertiesKHR;
12648
12649 public:
12650 void* pNext = nullptr;
12651 uint32_t memoryTypeBits;
12652 };
12653 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
12654
12655#ifdef VK_USE_PLATFORM_WIN32_KHR
12656 struct Win32KeyedMutexAcquireReleaseInfoKHR
12657 {
12658 Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0,
12659 const DeviceMemory* pAcquireSyncs_ = nullptr,
12660 const uint64_t* pAcquireKeys_ = nullptr,
12661 const uint32_t* pAcquireTimeouts_ = nullptr,
12662 uint32_t releaseCount_ = 0,
12663 const DeviceMemory* pReleaseSyncs_ = nullptr,
12664 const uint64_t* pReleaseKeys_ = nullptr )
12665 : acquireCount( acquireCount_ )
12666 , pAcquireSyncs( pAcquireSyncs_ )
12667 , pAcquireKeys( pAcquireKeys_ )
12668 , pAcquireTimeouts( pAcquireTimeouts_ )
12669 , releaseCount( releaseCount_ )
12670 , pReleaseSyncs( pReleaseSyncs_ )
12671 , pReleaseKeys( pReleaseKeys_ )
12672 {
12673 }
12674
12675 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
12676 {
12677 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
12678 }
12679
12680 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
12681 {
12682 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
12683 return *this;
12684 }
12685 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
12686 {
12687 pNext = pNext_;
12688 return *this;
12689 }
12690
12691 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
12692 {
12693 acquireCount = acquireCount_;
12694 return *this;
12695 }
12696
12697 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
12698 {
12699 pAcquireSyncs = pAcquireSyncs_;
12700 return *this;
12701 }
12702
12703 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
12704 {
12705 pAcquireKeys = pAcquireKeys_;
12706 return *this;
12707 }
12708
12709 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
12710 {
12711 pAcquireTimeouts = pAcquireTimeouts_;
12712 return *this;
12713 }
12714
12715 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
12716 {
12717 releaseCount = releaseCount_;
12718 return *this;
12719 }
12720
12721 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
12722 {
12723 pReleaseSyncs = pReleaseSyncs_;
12724 return *this;
12725 }
12726
12727 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
12728 {
12729 pReleaseKeys = pReleaseKeys_;
12730 return *this;
12731 }
12732
12733 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
12734 {
12735 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
12736 }
12737
12738 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
12739 {
12740 return ( sType == rhs.sType )
12741 && ( pNext == rhs.pNext )
12742 && ( acquireCount == rhs.acquireCount )
12743 && ( pAcquireSyncs == rhs.pAcquireSyncs )
12744 && ( pAcquireKeys == rhs.pAcquireKeys )
12745 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
12746 && ( releaseCount == rhs.releaseCount )
12747 && ( pReleaseSyncs == rhs.pReleaseSyncs )
12748 && ( pReleaseKeys == rhs.pReleaseKeys );
12749 }
12750
12751 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
12752 {
12753 return !operator==( rhs );
12754 }
12755
12756 private:
12757 StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
12758
12759 public:
12760 const void* pNext = nullptr;
12761 uint32_t acquireCount;
12762 const DeviceMemory* pAcquireSyncs;
12763 const uint64_t* pAcquireKeys;
12764 const uint32_t* pAcquireTimeouts;
12765 uint32_t releaseCount;
12766 const DeviceMemory* pReleaseSyncs;
12767 const uint64_t* pReleaseKeys;
12768 };
12769 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
12770#endif /*VK_USE_PLATFORM_WIN32_KHR*/
12771
12772#ifdef VK_USE_PLATFORM_WIN32_KHR
12773 struct ExportSemaphoreWin32HandleInfoKHR
12774 {
12775 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
12776 DWORD dwAccess_ = 0,
12777 LPCWSTR name_ = 0 )
12778 : pAttributes( pAttributes_ )
12779 , dwAccess( dwAccess_ )
12780 , name( name_ )
12781 {
12782 }
12783
12784 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
12785 {
12786 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
12787 }
12788
12789 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
12790 {
12791 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
12792 return *this;
12793 }
12794 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
12795 {
12796 pNext = pNext_;
12797 return *this;
12798 }
12799
12800 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
12801 {
12802 pAttributes = pAttributes_;
12803 return *this;
12804 }
12805
12806 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
12807 {
12808 dwAccess = dwAccess_;
12809 return *this;
12810 }
12811
12812 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
12813 {
12814 name = name_;
12815 return *this;
12816 }
12817
12818 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
12819 {
12820 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
12821 }
12822
12823 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
12824 {
12825 return ( sType == rhs.sType )
12826 && ( pNext == rhs.pNext )
12827 && ( pAttributes == rhs.pAttributes )
12828 && ( dwAccess == rhs.dwAccess )
12829 && ( name == rhs.name );
12830 }
12831
12832 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
12833 {
12834 return !operator==( rhs );
12835 }
12836
12837 private:
12838 StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR;
12839
12840 public:
12841 const void* pNext = nullptr;
12842 const SECURITY_ATTRIBUTES* pAttributes;
12843 DWORD dwAccess;
12844 LPCWSTR name;
12845 };
12846 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
12847#endif /*VK_USE_PLATFORM_WIN32_KHR*/
12848
12849#ifdef VK_USE_PLATFORM_WIN32_KHR
12850 struct D3D12FenceSubmitInfoKHR
12851 {
12852 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0,
12853 const uint64_t* pWaitSemaphoreValues_ = nullptr,
12854 uint32_t signalSemaphoreValuesCount_ = 0,
12855 const uint64_t* pSignalSemaphoreValues_ = nullptr )
12856 : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
12857 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
12858 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
12859 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
12860 {
12861 }
12862
12863 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
12864 {
12865 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
12866 }
12867
12868 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
12869 {
12870 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
12871 return *this;
12872 }
12873 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
12874 {
12875 pNext = pNext_;
12876 return *this;
12877 }
12878
12879 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
12880 {
12881 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
12882 return *this;
12883 }
12884
12885 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
12886 {
12887 pWaitSemaphoreValues = pWaitSemaphoreValues_;
12888 return *this;
12889 }
12890
12891 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
12892 {
12893 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
12894 return *this;
12895 }
12896
12897 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
12898 {
12899 pSignalSemaphoreValues = pSignalSemaphoreValues_;
12900 return *this;
12901 }
12902
12903 operator const VkD3D12FenceSubmitInfoKHR&() const
12904 {
12905 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
12906 }
12907
12908 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
12909 {
12910 return ( sType == rhs.sType )
12911 && ( pNext == rhs.pNext )
12912 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
12913 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
12914 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
12915 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
12916 }
12917
12918 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
12919 {
12920 return !operator==( rhs );
12921 }
12922
12923 private:
12924 StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR;
12925
12926 public:
12927 const void* pNext = nullptr;
12928 uint32_t waitSemaphoreValuesCount;
12929 const uint64_t* pWaitSemaphoreValues;
12930 uint32_t signalSemaphoreValuesCount;
12931 const uint64_t* pSignalSemaphoreValues;
12932 };
12933 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
12934#endif /*VK_USE_PLATFORM_WIN32_KHR*/
12935
12936#ifdef VK_USE_PLATFORM_WIN32_KHR
12937 struct ExportFenceWin32HandleInfoKHR
12938 {
12939 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr,
12940 DWORD dwAccess_ = 0,
12941 LPCWSTR name_ = 0 )
12942 : pAttributes( pAttributes_ )
12943 , dwAccess( dwAccess_ )
12944 , name( name_ )
12945 {
12946 }
12947
12948 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
12949 {
12950 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
12951 }
12952
12953 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
12954 {
12955 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
12956 return *this;
12957 }
12958 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
12959 {
12960 pNext = pNext_;
12961 return *this;
12962 }
12963
12964 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
12965 {
12966 pAttributes = pAttributes_;
12967 return *this;
12968 }
12969
12970 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
12971 {
12972 dwAccess = dwAccess_;
12973 return *this;
12974 }
12975
12976 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
12977 {
12978 name = name_;
12979 return *this;
12980 }
12981
12982 operator const VkExportFenceWin32HandleInfoKHR&() const
12983 {
12984 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
12985 }
12986
12987 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
12988 {
12989 return ( sType == rhs.sType )
12990 && ( pNext == rhs.pNext )
12991 && ( pAttributes == rhs.pAttributes )
12992 && ( dwAccess == rhs.dwAccess )
12993 && ( name == rhs.name );
12994 }
12995
12996 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
12997 {
12998 return !operator==( rhs );
12999 }
13000
13001 private:
13002 StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR;
13003
13004 public:
13005 const void* pNext = nullptr;
13006 const SECURITY_ATTRIBUTES* pAttributes;
13007 DWORD dwAccess;
13008 LPCWSTR name;
13009 };
13010 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
13011#endif /*VK_USE_PLATFORM_WIN32_KHR*/
13012
13013 struct PhysicalDeviceMultiviewFeatures
13014 {
13015 PhysicalDeviceMultiviewFeatures( Bool32 multiview_ = 0,
13016 Bool32 multiviewGeometryShader_ = 0,
13017 Bool32 multiviewTessellationShader_ = 0 )
13018 : multiview( multiview_ )
13019 , multiviewGeometryShader( multiviewGeometryShader_ )
13020 , multiviewTessellationShader( multiviewTessellationShader_ )
13021 {
13022 }
13023
13024 PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs )
13025 {
13026 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
13027 }
13028
13029 PhysicalDeviceMultiviewFeatures& operator=( VkPhysicalDeviceMultiviewFeatures const & rhs )
13030 {
13031 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
13032 return *this;
13033 }
13034 PhysicalDeviceMultiviewFeatures& setPNext( void* pNext_ )
13035 {
13036 pNext = pNext_;
13037 return *this;
13038 }
13039
13040 PhysicalDeviceMultiviewFeatures& setMultiview( Bool32 multiview_ )
13041 {
13042 multiview = multiview_;
13043 return *this;
13044 }
13045
13046 PhysicalDeviceMultiviewFeatures& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
13047 {
13048 multiviewGeometryShader = multiviewGeometryShader_;
13049 return *this;
13050 }
13051
13052 PhysicalDeviceMultiviewFeatures& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
13053 {
13054 multiviewTessellationShader = multiviewTessellationShader_;
13055 return *this;
13056 }
13057
13058 operator const VkPhysicalDeviceMultiviewFeatures&() const
13059 {
13060 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(this);
13061 }
13062
13063 bool operator==( PhysicalDeviceMultiviewFeatures const& rhs ) const
13064 {
13065 return ( sType == rhs.sType )
13066 && ( pNext == rhs.pNext )
13067 && ( multiview == rhs.multiview )
13068 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
13069 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
13070 }
13071
13072 bool operator!=( PhysicalDeviceMultiviewFeatures const& rhs ) const
13073 {
13074 return !operator==( rhs );
13075 }
13076
13077 private:
13078 StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures;
13079
13080 public:
13081 void* pNext = nullptr;
13082 Bool32 multiview;
13083 Bool32 multiviewGeometryShader;
13084 Bool32 multiviewTessellationShader;
13085 };
13086 static_assert( sizeof( PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), "struct and wrapper have different size!" );
13087
13088 using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
13089
13090 struct PhysicalDeviceMultiviewProperties
13091 {
13092 operator const VkPhysicalDeviceMultiviewProperties&() const
13093 {
13094 return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>(this);
13095 }
13096
13097 bool operator==( PhysicalDeviceMultiviewProperties const& rhs ) const
13098 {
13099 return ( sType == rhs.sType )
13100 && ( pNext == rhs.pNext )
13101 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
13102 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
13103 }
13104
13105 bool operator!=( PhysicalDeviceMultiviewProperties const& rhs ) const
13106 {
13107 return !operator==( rhs );
13108 }
13109
13110 private:
13111 StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties;
13112
13113 public:
13114 void* pNext = nullptr;
13115 uint32_t maxMultiviewViewCount;
13116 uint32_t maxMultiviewInstanceIndex;
13117 };
13118 static_assert( sizeof( PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), "struct and wrapper have different size!" );
13119
13120 using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
13121
13122 struct RenderPassMultiviewCreateInfo
13123 {
13124 RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = 0,
13125 const uint32_t* pViewMasks_ = nullptr,
13126 uint32_t dependencyCount_ = 0,
13127 const int32_t* pViewOffsets_ = nullptr,
13128 uint32_t correlationMaskCount_ = 0,
13129 const uint32_t* pCorrelationMasks_ = nullptr )
13130 : subpassCount( subpassCount_ )
13131 , pViewMasks( pViewMasks_ )
13132 , dependencyCount( dependencyCount_ )
13133 , pViewOffsets( pViewOffsets_ )
13134 , correlationMaskCount( correlationMaskCount_ )
13135 , pCorrelationMasks( pCorrelationMasks_ )
13136 {
13137 }
13138
13139 RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs )
13140 {
13141 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
13142 }
13143
13144 RenderPassMultiviewCreateInfo& operator=( VkRenderPassMultiviewCreateInfo const & rhs )
13145 {
13146 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
13147 return *this;
13148 }
13149 RenderPassMultiviewCreateInfo& setPNext( const void* pNext_ )
13150 {
13151 pNext = pNext_;
13152 return *this;
13153 }
13154
13155 RenderPassMultiviewCreateInfo& setSubpassCount( uint32_t subpassCount_ )
13156 {
13157 subpassCount = subpassCount_;
13158 return *this;
13159 }
13160
13161 RenderPassMultiviewCreateInfo& setPViewMasks( const uint32_t* pViewMasks_ )
13162 {
13163 pViewMasks = pViewMasks_;
13164 return *this;
13165 }
13166
13167 RenderPassMultiviewCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
13168 {
13169 dependencyCount = dependencyCount_;
13170 return *this;
13171 }
13172
13173 RenderPassMultiviewCreateInfo& setPViewOffsets( const int32_t* pViewOffsets_ )
13174 {
13175 pViewOffsets = pViewOffsets_;
13176 return *this;
13177 }
13178
13179 RenderPassMultiviewCreateInfo& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
13180 {
13181 correlationMaskCount = correlationMaskCount_;
13182 return *this;
13183 }
13184
13185 RenderPassMultiviewCreateInfo& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
13186 {
13187 pCorrelationMasks = pCorrelationMasks_;
13188 return *this;
13189 }
13190
13191 operator const VkRenderPassMultiviewCreateInfo&() const
13192 {
13193 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(this);
13194 }
13195
13196 bool operator==( RenderPassMultiviewCreateInfo const& rhs ) const
13197 {
13198 return ( sType == rhs.sType )
13199 && ( pNext == rhs.pNext )
13200 && ( subpassCount == rhs.subpassCount )
13201 && ( pViewMasks == rhs.pViewMasks )
13202 && ( dependencyCount == rhs.dependencyCount )
13203 && ( pViewOffsets == rhs.pViewOffsets )
13204 && ( correlationMaskCount == rhs.correlationMaskCount )
13205 && ( pCorrelationMasks == rhs.pCorrelationMasks );
13206 }
13207
13208 bool operator!=( RenderPassMultiviewCreateInfo const& rhs ) const
13209 {
13210 return !operator==( rhs );
13211 }
13212
13213 private:
13214 StructureType sType = StructureType::eRenderPassMultiviewCreateInfo;
13215
13216 public:
13217 const void* pNext = nullptr;
13218 uint32_t subpassCount;
13219 const uint32_t* pViewMasks;
13220 uint32_t dependencyCount;
13221 const int32_t* pViewOffsets;
13222 uint32_t correlationMaskCount;
13223 const uint32_t* pCorrelationMasks;
13224 };
13225 static_assert( sizeof( RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), "struct and wrapper have different size!" );
13226
13227 using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
13228
13229 struct BindBufferMemoryInfo
13230 {
13231 BindBufferMemoryInfo( Buffer buffer_ = Buffer(),
13232 DeviceMemory memory_ = DeviceMemory(),
13233 DeviceSize memoryOffset_ = 0 )
13234 : buffer( buffer_ )
13235 , memory( memory_ )
13236 , memoryOffset( memoryOffset_ )
13237 {
13238 }
13239
13240 BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs )
13241 {
13242 memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
13243 }
13244
13245 BindBufferMemoryInfo& operator=( VkBindBufferMemoryInfo const & rhs )
13246 {
13247 memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
13248 return *this;
13249 }
13250 BindBufferMemoryInfo& setPNext( const void* pNext_ )
13251 {
13252 pNext = pNext_;
13253 return *this;
13254 }
13255
13256 BindBufferMemoryInfo& setBuffer( Buffer buffer_ )
13257 {
13258 buffer = buffer_;
13259 return *this;
13260 }
13261
13262 BindBufferMemoryInfo& setMemory( DeviceMemory memory_ )
13263 {
13264 memory = memory_;
13265 return *this;
13266 }
13267
13268 BindBufferMemoryInfo& setMemoryOffset( DeviceSize memoryOffset_ )
13269 {
13270 memoryOffset = memoryOffset_;
13271 return *this;
13272 }
13273
13274 operator const VkBindBufferMemoryInfo&() const
13275 {
13276 return *reinterpret_cast<const VkBindBufferMemoryInfo*>(this);
13277 }
13278
13279 bool operator==( BindBufferMemoryInfo const& rhs ) const
13280 {
13281 return ( sType == rhs.sType )
13282 && ( pNext == rhs.pNext )
13283 && ( buffer == rhs.buffer )
13284 && ( memory == rhs.memory )
13285 && ( memoryOffset == rhs.memoryOffset );
13286 }
13287
13288 bool operator!=( BindBufferMemoryInfo const& rhs ) const
13289 {
13290 return !operator==( rhs );
13291 }
13292
13293 private:
13294 StructureType sType = StructureType::eBindBufferMemoryInfo;
13295
13296 public:
13297 const void* pNext = nullptr;
13298 Buffer buffer;
13299 DeviceMemory memory;
13300 DeviceSize memoryOffset;
13301 };
13302 static_assert( sizeof( BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "struct and wrapper have different size!" );
13303
13304 using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
13305
13306 struct BindBufferMemoryDeviceGroupInfo
13307 {
13308 BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0,
13309 const uint32_t* pDeviceIndices_ = nullptr )
13310 : deviceIndexCount( deviceIndexCount_ )
13311 , pDeviceIndices( pDeviceIndices_ )
13312 {
13313 }
13314
13315 BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs )
13316 {
13317 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
13318 }
13319
13320 BindBufferMemoryDeviceGroupInfo& operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs )
13321 {
13322 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
13323 return *this;
13324 }
13325 BindBufferMemoryDeviceGroupInfo& setPNext( const void* pNext_ )
13326 {
13327 pNext = pNext_;
13328 return *this;
13329 }
13330
13331 BindBufferMemoryDeviceGroupInfo& setDeviceIndexCount( uint32_t deviceIndexCount_ )
13332 {
13333 deviceIndexCount = deviceIndexCount_;
13334 return *this;
13335 }
13336
13337 BindBufferMemoryDeviceGroupInfo& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
13338 {
13339 pDeviceIndices = pDeviceIndices_;
13340 return *this;
13341 }
13342
13343 operator const VkBindBufferMemoryDeviceGroupInfo&() const
13344 {
13345 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>(this);
13346 }
13347
13348 bool operator==( BindBufferMemoryDeviceGroupInfo const& rhs ) const
13349 {
13350 return ( sType == rhs.sType )
13351 && ( pNext == rhs.pNext )
13352 && ( deviceIndexCount == rhs.deviceIndexCount )
13353 && ( pDeviceIndices == rhs.pDeviceIndices );
13354 }
13355
13356 bool operator!=( BindBufferMemoryDeviceGroupInfo const& rhs ) const
13357 {
13358 return !operator==( rhs );
13359 }
13360
13361 private:
13362 StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo;
13363
13364 public:
13365 const void* pNext = nullptr;
13366 uint32_t deviceIndexCount;
13367 const uint32_t* pDeviceIndices;
13368 };
13369 static_assert( sizeof( BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), "struct and wrapper have different size!" );
13370
13371 using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
13372
13373 struct BindImageMemoryInfo
13374 {
13375 BindImageMemoryInfo( Image image_ = Image(),
13376 DeviceMemory memory_ = DeviceMemory(),
13377 DeviceSize memoryOffset_ = 0 )
13378 : image( image_ )
13379 , memory( memory_ )
13380 , memoryOffset( memoryOffset_ )
13381 {
13382 }
13383
13384 BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs )
13385 {
13386 memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
13387 }
13388
13389 BindImageMemoryInfo& operator=( VkBindImageMemoryInfo const & rhs )
13390 {
13391 memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
13392 return *this;
13393 }
13394 BindImageMemoryInfo& setPNext( const void* pNext_ )
13395 {
13396 pNext = pNext_;
13397 return *this;
13398 }
13399
13400 BindImageMemoryInfo& setImage( Image image_ )
13401 {
13402 image = image_;
13403 return *this;
13404 }
13405
13406 BindImageMemoryInfo& setMemory( DeviceMemory memory_ )
13407 {
13408 memory = memory_;
13409 return *this;
13410 }
13411
13412 BindImageMemoryInfo& setMemoryOffset( DeviceSize memoryOffset_ )
13413 {
13414 memoryOffset = memoryOffset_;
13415 return *this;
13416 }
13417
13418 operator const VkBindImageMemoryInfo&() const
13419 {
13420 return *reinterpret_cast<const VkBindImageMemoryInfo*>(this);
13421 }
13422
13423 bool operator==( BindImageMemoryInfo const& rhs ) const
13424 {
13425 return ( sType == rhs.sType )
13426 && ( pNext == rhs.pNext )
13427 && ( image == rhs.image )
13428 && ( memory == rhs.memory )
13429 && ( memoryOffset == rhs.memoryOffset );
13430 }
13431
13432 bool operator!=( BindImageMemoryInfo const& rhs ) const
13433 {
13434 return !operator==( rhs );
13435 }
13436
13437 private:
13438 StructureType sType = StructureType::eBindImageMemoryInfo;
13439
13440 public:
13441 const void* pNext = nullptr;
13442 Image image;
13443 DeviceMemory memory;
13444 DeviceSize memoryOffset;
13445 };
13446 static_assert( sizeof( BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "struct and wrapper have different size!" );
13447
13448 using BindImageMemoryInfoKHR = BindImageMemoryInfo;
13449
13450 struct BindImageMemoryDeviceGroupInfo
13451 {
13452 BindImageMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0,
13453 const uint32_t* pDeviceIndices_ = nullptr,
13454 uint32_t splitInstanceBindRegionCount_ = 0,
13455 const Rect2D* pSplitInstanceBindRegions_ = nullptr )
13456 : deviceIndexCount( deviceIndexCount_ )
13457 , pDeviceIndices( pDeviceIndices_ )
13458 , splitInstanceBindRegionCount( splitInstanceBindRegionCount_ )
13459 , pSplitInstanceBindRegions( pSplitInstanceBindRegions_ )
13460 {
13461 }
13462
13463 BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs )
13464 {
13465 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
13466 }
13467
13468 BindImageMemoryDeviceGroupInfo& operator=( VkBindImageMemoryDeviceGroupInfo const & rhs )
13469 {
13470 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
13471 return *this;
13472 }
13473 BindImageMemoryDeviceGroupInfo& setPNext( const void* pNext_ )
13474 {
13475 pNext = pNext_;
13476 return *this;
13477 }
13478
13479 BindImageMemoryDeviceGroupInfo& setDeviceIndexCount( uint32_t deviceIndexCount_ )
13480 {
13481 deviceIndexCount = deviceIndexCount_;
13482 return *this;
13483 }
13484
13485 BindImageMemoryDeviceGroupInfo& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
13486 {
13487 pDeviceIndices = pDeviceIndices_;
13488 return *this;
13489 }
13490
13491 BindImageMemoryDeviceGroupInfo& setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ )
13492 {
13493 splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
13494 return *this;
13495 }
13496
13497 BindImageMemoryDeviceGroupInfo& setPSplitInstanceBindRegions( const Rect2D* pSplitInstanceBindRegions_ )
13498 {
13499 pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
13500 return *this;
13501 }
13502
13503 operator const VkBindImageMemoryDeviceGroupInfo&() const
13504 {
13505 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>(this);
13506 }
13507
13508 bool operator==( BindImageMemoryDeviceGroupInfo const& rhs ) const
13509 {
13510 return ( sType == rhs.sType )
13511 && ( pNext == rhs.pNext )
13512 && ( deviceIndexCount == rhs.deviceIndexCount )
13513 && ( pDeviceIndices == rhs.pDeviceIndices )
13514 && ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount )
13515 && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions );
13516 }
13517
13518 bool operator!=( BindImageMemoryDeviceGroupInfo const& rhs ) const
13519 {
13520 return !operator==( rhs );
13521 }
13522
13523 private:
13524 StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo;
13525
13526 public:
13527 const void* pNext = nullptr;
13528 uint32_t deviceIndexCount;
13529 const uint32_t* pDeviceIndices;
13530 uint32_t splitInstanceBindRegionCount;
13531 const Rect2D* pSplitInstanceBindRegions;
13532 };
13533 static_assert( sizeof( BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), "struct and wrapper have different size!" );
13534
13535 using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
13536
13537 struct DeviceGroupRenderPassBeginInfo
13538 {
13539 DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = 0,
13540 uint32_t deviceRenderAreaCount_ = 0,
13541 const Rect2D* pDeviceRenderAreas_ = nullptr )
13542 : deviceMask( deviceMask_ )
13543 , deviceRenderAreaCount( deviceRenderAreaCount_ )
13544 , pDeviceRenderAreas( pDeviceRenderAreas_ )
13545 {
13546 }
13547
13548 DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs )
13549 {
13550 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
13551 }
13552
13553 DeviceGroupRenderPassBeginInfo& operator=( VkDeviceGroupRenderPassBeginInfo const & rhs )
13554 {
13555 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
13556 return *this;
13557 }
13558 DeviceGroupRenderPassBeginInfo& setPNext( const void* pNext_ )
13559 {
13560 pNext = pNext_;
13561 return *this;
13562 }
13563
13564 DeviceGroupRenderPassBeginInfo& setDeviceMask( uint32_t deviceMask_ )
13565 {
13566 deviceMask = deviceMask_;
13567 return *this;
13568 }
13569
13570 DeviceGroupRenderPassBeginInfo& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
13571 {
13572 deviceRenderAreaCount = deviceRenderAreaCount_;
13573 return *this;
13574 }
13575
13576 DeviceGroupRenderPassBeginInfo& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
13577 {
13578 pDeviceRenderAreas = pDeviceRenderAreas_;
13579 return *this;
13580 }
13581
13582 operator const VkDeviceGroupRenderPassBeginInfo&() const
13583 {
13584 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>(this);
13585 }
13586
13587 bool operator==( DeviceGroupRenderPassBeginInfo const& rhs ) const
13588 {
13589 return ( sType == rhs.sType )
13590 && ( pNext == rhs.pNext )
13591 && ( deviceMask == rhs.deviceMask )
13592 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
13593 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
13594 }
13595
13596 bool operator!=( DeviceGroupRenderPassBeginInfo const& rhs ) const
13597 {
13598 return !operator==( rhs );
13599 }
13600
13601 private:
13602 StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo;
13603
13604 public:
13605 const void* pNext = nullptr;
13606 uint32_t deviceMask;
13607 uint32_t deviceRenderAreaCount;
13608 const Rect2D* pDeviceRenderAreas;
13609 };
13610 static_assert( sizeof( DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), "struct and wrapper have different size!" );
13611
13612 using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
13613
13614 struct DeviceGroupCommandBufferBeginInfo
13615 {
13616 DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = 0 )
13617 : deviceMask( deviceMask_ )
13618 {
13619 }
13620
13621 DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs )
13622 {
13623 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
13624 }
13625
13626 DeviceGroupCommandBufferBeginInfo& operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs )
13627 {
13628 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
13629 return *this;
13630 }
13631 DeviceGroupCommandBufferBeginInfo& setPNext( const void* pNext_ )
13632 {
13633 pNext = pNext_;
13634 return *this;
13635 }
13636
13637 DeviceGroupCommandBufferBeginInfo& setDeviceMask( uint32_t deviceMask_ )
13638 {
13639 deviceMask = deviceMask_;
13640 return *this;
13641 }
13642
13643 operator const VkDeviceGroupCommandBufferBeginInfo&() const
13644 {
13645 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>(this);
13646 }
13647
13648 bool operator==( DeviceGroupCommandBufferBeginInfo const& rhs ) const
13649 {
13650 return ( sType == rhs.sType )
13651 && ( pNext == rhs.pNext )
13652 && ( deviceMask == rhs.deviceMask );
13653 }
13654
13655 bool operator!=( DeviceGroupCommandBufferBeginInfo const& rhs ) const
13656 {
13657 return !operator==( rhs );
13658 }
13659
13660 private:
13661 StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo;
13662
13663 public:
13664 const void* pNext = nullptr;
13665 uint32_t deviceMask;
13666 };
13667 static_assert( sizeof( DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), "struct and wrapper have different size!" );
13668
13669 using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
13670
13671 struct DeviceGroupSubmitInfo
13672 {
13673 DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = 0,
13674 const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr,
13675 uint32_t commandBufferCount_ = 0,
13676 const uint32_t* pCommandBufferDeviceMasks_ = nullptr,
13677 uint32_t signalSemaphoreCount_ = 0,
13678 const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr )
13679 : waitSemaphoreCount( waitSemaphoreCount_ )
13680 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
13681 , commandBufferCount( commandBufferCount_ )
13682 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
13683 , signalSemaphoreCount( signalSemaphoreCount_ )
13684 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
13685 {
13686 }
13687
13688 DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs )
13689 {
13690 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
13691 }
13692
13693 DeviceGroupSubmitInfo& operator=( VkDeviceGroupSubmitInfo const & rhs )
13694 {
13695 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
13696 return *this;
13697 }
13698 DeviceGroupSubmitInfo& setPNext( const void* pNext_ )
13699 {
13700 pNext = pNext_;
13701 return *this;
13702 }
13703
13704 DeviceGroupSubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13705 {
13706 waitSemaphoreCount = waitSemaphoreCount_;
13707 return *this;
13708 }
13709
13710 DeviceGroupSubmitInfo& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
13711 {
13712 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
13713 return *this;
13714 }
13715
13716 DeviceGroupSubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
13717 {
13718 commandBufferCount = commandBufferCount_;
13719 return *this;
13720 }
13721
13722 DeviceGroupSubmitInfo& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
13723 {
13724 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
13725 return *this;
13726 }
13727
13728 DeviceGroupSubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
13729 {
13730 signalSemaphoreCount = signalSemaphoreCount_;
13731 return *this;
13732 }
13733
13734 DeviceGroupSubmitInfo& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
13735 {
13736 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
13737 return *this;
13738 }
13739
13740 operator const VkDeviceGroupSubmitInfo&() const
13741 {
13742 return *reinterpret_cast<const VkDeviceGroupSubmitInfo*>(this);
13743 }
13744
13745 bool operator==( DeviceGroupSubmitInfo const& rhs ) const
13746 {
13747 return ( sType == rhs.sType )
13748 && ( pNext == rhs.pNext )
13749 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13750 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
13751 && ( commandBufferCount == rhs.commandBufferCount )
13752 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
13753 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
13754 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
13755 }
13756
13757 bool operator!=( DeviceGroupSubmitInfo const& rhs ) const
13758 {
13759 return !operator==( rhs );
13760 }
13761
13762 private:
13763 StructureType sType = StructureType::eDeviceGroupSubmitInfo;
13764
13765 public:
13766 const void* pNext = nullptr;
13767 uint32_t waitSemaphoreCount;
13768 const uint32_t* pWaitSemaphoreDeviceIndices;
13769 uint32_t commandBufferCount;
13770 const uint32_t* pCommandBufferDeviceMasks;
13771 uint32_t signalSemaphoreCount;
13772 const uint32_t* pSignalSemaphoreDeviceIndices;
13773 };
13774 static_assert( sizeof( DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), "struct and wrapper have different size!" );
13775
13776 using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
13777
13778 struct DeviceGroupBindSparseInfo
13779 {
13780 DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = 0,
13781 uint32_t memoryDeviceIndex_ = 0 )
13782 : resourceDeviceIndex( resourceDeviceIndex_ )
13783 , memoryDeviceIndex( memoryDeviceIndex_ )
13784 {
13785 }
13786
13787 DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs )
13788 {
13789 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
13790 }
13791
13792 DeviceGroupBindSparseInfo& operator=( VkDeviceGroupBindSparseInfo const & rhs )
13793 {
13794 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
13795 return *this;
13796 }
13797 DeviceGroupBindSparseInfo& setPNext( const void* pNext_ )
13798 {
13799 pNext = pNext_;
13800 return *this;
13801 }
13802
13803 DeviceGroupBindSparseInfo& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
13804 {
13805 resourceDeviceIndex = resourceDeviceIndex_;
13806 return *this;
13807 }
13808
13809 DeviceGroupBindSparseInfo& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
13810 {
13811 memoryDeviceIndex = memoryDeviceIndex_;
13812 return *this;
13813 }
13814
13815 operator const VkDeviceGroupBindSparseInfo&() const
13816 {
13817 return *reinterpret_cast<const VkDeviceGroupBindSparseInfo*>(this);
13818 }
13819
13820 bool operator==( DeviceGroupBindSparseInfo const& rhs ) const
13821 {
13822 return ( sType == rhs.sType )
13823 && ( pNext == rhs.pNext )
13824 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
13825 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
13826 }
13827
13828 bool operator!=( DeviceGroupBindSparseInfo const& rhs ) const
13829 {
13830 return !operator==( rhs );
13831 }
13832
13833 private:
13834 StructureType sType = StructureType::eDeviceGroupBindSparseInfo;
13835
13836 public:
13837 const void* pNext = nullptr;
13838 uint32_t resourceDeviceIndex;
13839 uint32_t memoryDeviceIndex;
13840 };
13841 static_assert( sizeof( DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), "struct and wrapper have different size!" );
13842
13843 using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
13844
13845 struct ImageSwapchainCreateInfoKHR
13846 {
13847 ImageSwapchainCreateInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR() )
13848 : swapchain( swapchain_ )
13849 {
13850 }
13851
13852 ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs )
13853 {
13854 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
13855 }
13856
13857 ImageSwapchainCreateInfoKHR& operator=( VkImageSwapchainCreateInfoKHR const & rhs )
13858 {
13859 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
13860 return *this;
13861 }
13862 ImageSwapchainCreateInfoKHR& setPNext( const void* pNext_ )
13863 {
13864 pNext = pNext_;
13865 return *this;
13866 }
13867
13868 ImageSwapchainCreateInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
13869 {
13870 swapchain = swapchain_;
13871 return *this;
13872 }
13873
13874 operator const VkImageSwapchainCreateInfoKHR&() const
13875 {
13876 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>(this);
13877 }
13878
13879 bool operator==( ImageSwapchainCreateInfoKHR const& rhs ) const
13880 {
13881 return ( sType == rhs.sType )
13882 && ( pNext == rhs.pNext )
13883 && ( swapchain == rhs.swapchain );
13884 }
13885
13886 bool operator!=( ImageSwapchainCreateInfoKHR const& rhs ) const
13887 {
13888 return !operator==( rhs );
13889 }
13890
13891 private:
13892 StructureType sType = StructureType::eImageSwapchainCreateInfoKHR;
13893
13894 public:
13895 const void* pNext = nullptr;
13896 SwapchainKHR swapchain;
13897 };
13898 static_assert( sizeof( ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
13899
13900 struct BindImageMemorySwapchainInfoKHR
13901 {
13902 BindImageMemorySwapchainInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR(),
13903 uint32_t imageIndex_ = 0 )
13904 : swapchain( swapchain_ )
13905 , imageIndex( imageIndex_ )
13906 {
13907 }
13908
13909 BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs )
13910 {
13911 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
13912 }
13913
13914 BindImageMemorySwapchainInfoKHR& operator=( VkBindImageMemorySwapchainInfoKHR const & rhs )
13915 {
13916 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
13917 return *this;
13918 }
13919 BindImageMemorySwapchainInfoKHR& setPNext( const void* pNext_ )
13920 {
13921 pNext = pNext_;
13922 return *this;
13923 }
13924
13925 BindImageMemorySwapchainInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
13926 {
13927 swapchain = swapchain_;
13928 return *this;
13929 }
13930
13931 BindImageMemorySwapchainInfoKHR& setImageIndex( uint32_t imageIndex_ )
13932 {
13933 imageIndex = imageIndex_;
13934 return *this;
13935 }
13936
13937 operator const VkBindImageMemorySwapchainInfoKHR&() const
13938 {
13939 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>(this);
13940 }
13941
13942 bool operator==( BindImageMemorySwapchainInfoKHR const& rhs ) const
13943 {
13944 return ( sType == rhs.sType )
13945 && ( pNext == rhs.pNext )
13946 && ( swapchain == rhs.swapchain )
13947 && ( imageIndex == rhs.imageIndex );
13948 }
13949
13950 bool operator!=( BindImageMemorySwapchainInfoKHR const& rhs ) const
13951 {
13952 return !operator==( rhs );
13953 }
13954
13955 private:
13956 StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR;
13957
13958 public:
13959 const void* pNext = nullptr;
13960 SwapchainKHR swapchain;
13961 uint32_t imageIndex;
13962 };
13963 static_assert( sizeof( BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), "struct and wrapper have different size!" );
13964
13965 struct AcquireNextImageInfoKHR
13966 {
13967 AcquireNextImageInfoKHR( SwapchainKHR swapchain_ = SwapchainKHR(),
13968 uint64_t timeout_ = 0,
13969 Semaphore semaphore_ = Semaphore(),
13970 Fence fence_ = Fence(),
13971 uint32_t deviceMask_ = 0 )
13972 : swapchain( swapchain_ )
13973 , timeout( timeout_ )
13974 , semaphore( semaphore_ )
13975 , fence( fence_ )
13976 , deviceMask( deviceMask_ )
13977 {
13978 }
13979
13980 AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs )
13981 {
13982 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
13983 }
13984
13985 AcquireNextImageInfoKHR& operator=( VkAcquireNextImageInfoKHR const & rhs )
13986 {
13987 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
13988 return *this;
13989 }
13990 AcquireNextImageInfoKHR& setPNext( const void* pNext_ )
13991 {
13992 pNext = pNext_;
13993 return *this;
13994 }
13995
13996 AcquireNextImageInfoKHR& setSwapchain( SwapchainKHR swapchain_ )
13997 {
13998 swapchain = swapchain_;
13999 return *this;
14000 }
14001
14002 AcquireNextImageInfoKHR& setTimeout( uint64_t timeout_ )
14003 {
14004 timeout = timeout_;
14005 return *this;
14006 }
14007
14008 AcquireNextImageInfoKHR& setSemaphore( Semaphore semaphore_ )
14009 {
14010 semaphore = semaphore_;
14011 return *this;
14012 }
14013
14014 AcquireNextImageInfoKHR& setFence( Fence fence_ )
14015 {
14016 fence = fence_;
14017 return *this;
14018 }
14019
14020 AcquireNextImageInfoKHR& setDeviceMask( uint32_t deviceMask_ )
14021 {
14022 deviceMask = deviceMask_;
14023 return *this;
14024 }
14025
14026 operator const VkAcquireNextImageInfoKHR&() const
14027 {
14028 return *reinterpret_cast<const VkAcquireNextImageInfoKHR*>(this);
14029 }
14030
14031 bool operator==( AcquireNextImageInfoKHR const& rhs ) const
14032 {
14033 return ( sType == rhs.sType )
14034 && ( pNext == rhs.pNext )
14035 && ( swapchain == rhs.swapchain )
14036 && ( timeout == rhs.timeout )
14037 && ( semaphore == rhs.semaphore )
14038 && ( fence == rhs.fence )
14039 && ( deviceMask == rhs.deviceMask );
14040 }
14041
14042 bool operator!=( AcquireNextImageInfoKHR const& rhs ) const
14043 {
14044 return !operator==( rhs );
14045 }
14046
14047 private:
14048 StructureType sType = StructureType::eAcquireNextImageInfoKHR;
14049
14050 public:
14051 const void* pNext = nullptr;
14052 SwapchainKHR swapchain;
14053 uint64_t timeout;
14054 Semaphore semaphore;
14055 Fence fence;
14056 uint32_t deviceMask;
14057 };
14058 static_assert( sizeof( AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), "struct and wrapper have different size!" );
14059
14060 struct HdrMetadataEXT
14061 {
14062 HdrMetadataEXT( XYColorEXT displayPrimaryRed_ = XYColorEXT(),
14063 XYColorEXT displayPrimaryGreen_ = XYColorEXT(),
14064 XYColorEXT displayPrimaryBlue_ = XYColorEXT(),
14065 XYColorEXT whitePoint_ = XYColorEXT(),
14066 float maxLuminance_ = 0,
14067 float minLuminance_ = 0,
14068 float maxContentLightLevel_ = 0,
14069 float maxFrameAverageLightLevel_ = 0 )
14070 : displayPrimaryRed( displayPrimaryRed_ )
14071 , displayPrimaryGreen( displayPrimaryGreen_ )
14072 , displayPrimaryBlue( displayPrimaryBlue_ )
14073 , whitePoint( whitePoint_ )
14074 , maxLuminance( maxLuminance_ )
14075 , minLuminance( minLuminance_ )
14076 , maxContentLightLevel( maxContentLightLevel_ )
14077 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
14078 {
14079 }
14080
14081 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
14082 {
14083 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
14084 }
14085
14086 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
14087 {
14088 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
14089 return *this;
14090 }
14091 HdrMetadataEXT& setPNext( const void* pNext_ )
14092 {
14093 pNext = pNext_;
14094 return *this;
14095 }
14096
14097 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
14098 {
14099 displayPrimaryRed = displayPrimaryRed_;
14100 return *this;
14101 }
14102
14103 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
14104 {
14105 displayPrimaryGreen = displayPrimaryGreen_;
14106 return *this;
14107 }
14108
14109 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
14110 {
14111 displayPrimaryBlue = displayPrimaryBlue_;
14112 return *this;
14113 }
14114
14115 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
14116 {
14117 whitePoint = whitePoint_;
14118 return *this;
14119 }
14120
14121 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
14122 {
14123 maxLuminance = maxLuminance_;
14124 return *this;
14125 }
14126
14127 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
14128 {
14129 minLuminance = minLuminance_;
14130 return *this;
14131 }
14132
14133 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
14134 {
14135 maxContentLightLevel = maxContentLightLevel_;
14136 return *this;
14137 }
14138
14139 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
14140 {
14141 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
14142 return *this;
14143 }
14144
14145 operator const VkHdrMetadataEXT&() const
14146 {
14147 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
14148 }
14149
14150 bool operator==( HdrMetadataEXT const& rhs ) const
14151 {
14152 return ( sType == rhs.sType )
14153 && ( pNext == rhs.pNext )
14154 && ( displayPrimaryRed == rhs.displayPrimaryRed )
14155 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
14156 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
14157 && ( whitePoint == rhs.whitePoint )
14158 && ( maxLuminance == rhs.maxLuminance )
14159 && ( minLuminance == rhs.minLuminance )
14160 && ( maxContentLightLevel == rhs.maxContentLightLevel )
14161 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
14162 }
14163
14164 bool operator!=( HdrMetadataEXT const& rhs ) const
14165 {
14166 return !operator==( rhs );
14167 }
14168
14169 private:
14170 StructureType sType = StructureType::eHdrMetadataEXT;
14171
14172 public:
14173 const void* pNext = nullptr;
14174 XYColorEXT displayPrimaryRed;
14175 XYColorEXT displayPrimaryGreen;
14176 XYColorEXT displayPrimaryBlue;
14177 XYColorEXT whitePoint;
14178 float maxLuminance;
14179 float minLuminance;
14180 float maxContentLightLevel;
14181 float maxFrameAverageLightLevel;
14182 };
14183 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
14184
14185 struct PresentTimesInfoGOOGLE
14186 {
14187 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0,
14188 const PresentTimeGOOGLE* pTimes_ = nullptr )
14189 : swapchainCount( swapchainCount_ )
14190 , pTimes( pTimes_ )
14191 {
14192 }
14193
14194 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
14195 {
14196 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
14197 }
14198
14199 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
14200 {
14201 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
14202 return *this;
14203 }
14204 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
14205 {
14206 pNext = pNext_;
14207 return *this;
14208 }
14209
14210 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
14211 {
14212 swapchainCount = swapchainCount_;
14213 return *this;
14214 }
14215
14216 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
14217 {
14218 pTimes = pTimes_;
14219 return *this;
14220 }
14221
14222 operator const VkPresentTimesInfoGOOGLE&() const
14223 {
14224 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
14225 }
14226
14227 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
14228 {
14229 return ( sType == rhs.sType )
14230 && ( pNext == rhs.pNext )
14231 && ( swapchainCount == rhs.swapchainCount )
14232 && ( pTimes == rhs.pTimes );
14233 }
14234
14235 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
14236 {
14237 return !operator==( rhs );
14238 }
14239
14240 private:
14241 StructureType sType = StructureType::ePresentTimesInfoGOOGLE;
14242
14243 public:
14244 const void* pNext = nullptr;
14245 uint32_t swapchainCount;
14246 const PresentTimeGOOGLE* pTimes;
14247 };
14248 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
14249
14250#ifdef VK_USE_PLATFORM_IOS_MVK
14251 struct IOSSurfaceCreateInfoMVK
14252 {
14253 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(),
14254 const void* pView_ = nullptr )
14255 : flags( flags_ )
14256 , pView( pView_ )
14257 {
14258 }
14259
14260 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
14261 {
14262 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
14263 }
14264
14265 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
14266 {
14267 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
14268 return *this;
14269 }
14270 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
14271 {
14272 pNext = pNext_;
14273 return *this;
14274 }
14275
14276 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
14277 {
14278 flags = flags_;
14279 return *this;
14280 }
14281
14282 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
14283 {
14284 pView = pView_;
14285 return *this;
14286 }
14287
14288 operator const VkIOSSurfaceCreateInfoMVK&() const
14289 {
14290 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
14291 }
14292
14293 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
14294 {
14295 return ( sType == rhs.sType )
14296 && ( pNext == rhs.pNext )
14297 && ( flags == rhs.flags )
14298 && ( pView == rhs.pView );
14299 }
14300
14301 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
14302 {
14303 return !operator==( rhs );
14304 }
14305
14306 private:
14307 StructureType sType = StructureType::eIosSurfaceCreateInfoMVK;
14308
14309 public:
14310 const void* pNext = nullptr;
14311 IOSSurfaceCreateFlagsMVK flags;
14312 const void* pView;
14313 };
14314 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
14315#endif /*VK_USE_PLATFORM_IOS_MVK*/
14316
14317#ifdef VK_USE_PLATFORM_MACOS_MVK
14318 struct MacOSSurfaceCreateInfoMVK
14319 {
14320 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(),
14321 const void* pView_ = nullptr )
14322 : flags( flags_ )
14323 , pView( pView_ )
14324 {
14325 }
14326
14327 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
14328 {
14329 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
14330 }
14331
14332 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
14333 {
14334 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
14335 return *this;
14336 }
14337 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
14338 {
14339 pNext = pNext_;
14340 return *this;
14341 }
14342
14343 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
14344 {
14345 flags = flags_;
14346 return *this;
14347 }
14348
14349 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
14350 {
14351 pView = pView_;
14352 return *this;
14353 }
14354
14355 operator const VkMacOSSurfaceCreateInfoMVK&() const
14356 {
14357 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
14358 }
14359
14360 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
14361 {
14362 return ( sType == rhs.sType )
14363 && ( pNext == rhs.pNext )
14364 && ( flags == rhs.flags )
14365 && ( pView == rhs.pView );
14366 }
14367
14368 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
14369 {
14370 return !operator==( rhs );
14371 }
14372
14373 private:
14374 StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK;
14375
14376 public:
14377 const void* pNext = nullptr;
14378 MacOSSurfaceCreateFlagsMVK flags;
14379 const void* pView;
14380 };
14381 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
14382#endif /*VK_USE_PLATFORM_MACOS_MVK*/
14383
14384 struct PipelineViewportWScalingStateCreateInfoNV
14385 {
14386 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0,
14387 uint32_t viewportCount_ = 0,
14388 const ViewportWScalingNV* pViewportWScalings_ = nullptr )
14389 : viewportWScalingEnable( viewportWScalingEnable_ )
14390 , viewportCount( viewportCount_ )
14391 , pViewportWScalings( pViewportWScalings_ )
14392 {
14393 }
14394
14395 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
14396 {
14397 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
14398 }
14399
14400 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
14401 {
14402 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
14403 return *this;
14404 }
14405 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
14406 {
14407 pNext = pNext_;
14408 return *this;
14409 }
14410
14411 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
14412 {
14413 viewportWScalingEnable = viewportWScalingEnable_;
14414 return *this;
14415 }
14416
14417 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
14418 {
14419 viewportCount = viewportCount_;
14420 return *this;
14421 }
14422
14423 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
14424 {
14425 pViewportWScalings = pViewportWScalings_;
14426 return *this;
14427 }
14428
14429 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
14430 {
14431 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
14432 }
14433
14434 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
14435 {
14436 return ( sType == rhs.sType )
14437 && ( pNext == rhs.pNext )
14438 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
14439 && ( viewportCount == rhs.viewportCount )
14440 && ( pViewportWScalings == rhs.pViewportWScalings );
14441 }
14442
14443 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
14444 {
14445 return !operator==( rhs );
14446 }
14447
14448 private:
14449 StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
14450
14451 public:
14452 const void* pNext = nullptr;
14453 Bool32 viewportWScalingEnable;
14454 uint32_t viewportCount;
14455 const ViewportWScalingNV* pViewportWScalings;
14456 };
14457 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
14458
14459 struct PhysicalDeviceDiscardRectanglePropertiesEXT
14460 {
14461 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
14462 : maxDiscardRectangles( maxDiscardRectangles_ )
14463 {
14464 }
14465
14466 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
14467 {
14468 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
14469 }
14470
14471 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
14472 {
14473 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
14474 return *this;
14475 }
14476 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
14477 {
14478 pNext = pNext_;
14479 return *this;
14480 }
14481
14482 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
14483 {
14484 maxDiscardRectangles = maxDiscardRectangles_;
14485 return *this;
14486 }
14487
14488 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
14489 {
14490 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
14491 }
14492
14493 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
14494 {
14495 return ( sType == rhs.sType )
14496 && ( pNext == rhs.pNext )
14497 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
14498 }
14499
14500 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
14501 {
14502 return !operator==( rhs );
14503 }
14504
14505 private:
14506 StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
14507
14508 public:
14509 void* pNext = nullptr;
14510 uint32_t maxDiscardRectangles;
14511 };
14512 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
14513
14514 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
14515 {
14516 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
14517 {
14518 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
14519 }
14520
14521 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
14522 {
14523 return ( sType == rhs.sType )
14524 && ( pNext == rhs.pNext )
14525 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
14526 }
14527
14528 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
14529 {
14530 return !operator==( rhs );
14531 }
14532
14533 private:
14534 StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
14535
14536 public:
14537 void* pNext = nullptr;
14538 Bool32 perViewPositionAllComponents;
14539 };
14540 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
14541
14542 struct PhysicalDeviceSurfaceInfo2KHR
14543 {
14544 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
14545 : surface( surface_ )
14546 {
14547 }
14548
14549 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
14550 {
14551 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
14552 }
14553
14554 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
14555 {
14556 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
14557 return *this;
14558 }
14559 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
14560 {
14561 pNext = pNext_;
14562 return *this;
14563 }
14564
14565 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
14566 {
14567 surface = surface_;
14568 return *this;
14569 }
14570
14571 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
14572 {
14573 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
14574 }
14575
14576 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
14577 {
14578 return ( sType == rhs.sType )
14579 && ( pNext == rhs.pNext )
14580 && ( surface == rhs.surface );
14581 }
14582
14583 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
14584 {
14585 return !operator==( rhs );
14586 }
14587
14588 private:
14589 StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
14590
14591 public:
14592 const void* pNext = nullptr;
14593 SurfaceKHR surface;
14594 };
14595 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
14596
14597 struct DisplayPlaneProperties2KHR
14598 {
14599 operator const VkDisplayPlaneProperties2KHR&() const
14600 {
14601 return *reinterpret_cast<const VkDisplayPlaneProperties2KHR*>(this);
14602 }
14603
14604 bool operator==( DisplayPlaneProperties2KHR const& rhs ) const
14605 {
14606 return ( sType == rhs.sType )
14607 && ( pNext == rhs.pNext )
14608 && ( displayPlaneProperties == rhs.displayPlaneProperties );
14609 }
14610
14611 bool operator!=( DisplayPlaneProperties2KHR const& rhs ) const
14612 {
14613 return !operator==( rhs );
14614 }
14615
14616 private:
14617 StructureType sType = StructureType::eDisplayPlaneProperties2KHR;
14618
14619 public:
14620 void* pNext = nullptr;
14621 DisplayPlanePropertiesKHR displayPlaneProperties;
14622 };
14623 static_assert( sizeof( DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), "struct and wrapper have different size!" );
14624
14625 struct DisplayModeProperties2KHR
14626 {
14627 operator const VkDisplayModeProperties2KHR&() const
14628 {
14629 return *reinterpret_cast<const VkDisplayModeProperties2KHR*>(this);
14630 }
14631
14632 bool operator==( DisplayModeProperties2KHR const& rhs ) const
14633 {
14634 return ( sType == rhs.sType )
14635 && ( pNext == rhs.pNext )
14636 && ( displayModeProperties == rhs.displayModeProperties );
14637 }
14638
14639 bool operator!=( DisplayModeProperties2KHR const& rhs ) const
14640 {
14641 return !operator==( rhs );
14642 }
14643
14644 private:
14645 StructureType sType = StructureType::eDisplayModeProperties2KHR;
14646
14647 public:
14648 void* pNext = nullptr;
14649 DisplayModePropertiesKHR displayModeProperties;
14650 };
14651 static_assert( sizeof( DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), "struct and wrapper have different size!" );
14652
14653 struct DisplayPlaneInfo2KHR
14654 {
14655 DisplayPlaneInfo2KHR( DisplayModeKHR mode_ = DisplayModeKHR(),
14656 uint32_t planeIndex_ = 0 )
14657 : mode( mode_ )
14658 , planeIndex( planeIndex_ )
14659 {
14660 }
14661
14662 DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs )
14663 {
14664 memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
14665 }
14666
14667 DisplayPlaneInfo2KHR& operator=( VkDisplayPlaneInfo2KHR const & rhs )
14668 {
14669 memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
14670 return *this;
14671 }
14672 DisplayPlaneInfo2KHR& setPNext( const void* pNext_ )
14673 {
14674 pNext = pNext_;
14675 return *this;
14676 }
14677
14678 DisplayPlaneInfo2KHR& setMode( DisplayModeKHR mode_ )
14679 {
14680 mode = mode_;
14681 return *this;
14682 }
14683
14684 DisplayPlaneInfo2KHR& setPlaneIndex( uint32_t planeIndex_ )
14685 {
14686 planeIndex = planeIndex_;
14687 return *this;
14688 }
14689
14690 operator const VkDisplayPlaneInfo2KHR&() const
14691 {
14692 return *reinterpret_cast<const VkDisplayPlaneInfo2KHR*>(this);
14693 }
14694
14695 bool operator==( DisplayPlaneInfo2KHR const& rhs ) const
14696 {
14697 return ( sType == rhs.sType )
14698 && ( pNext == rhs.pNext )
14699 && ( mode == rhs.mode )
14700 && ( planeIndex == rhs.planeIndex );
14701 }
14702
14703 bool operator!=( DisplayPlaneInfo2KHR const& rhs ) const
14704 {
14705 return !operator==( rhs );
14706 }
14707
14708 private:
14709 StructureType sType = StructureType::eDisplayPlaneInfo2KHR;
14710
14711 public:
14712 const void* pNext = nullptr;
14713 DisplayModeKHR mode;
14714 uint32_t planeIndex;
14715 };
14716 static_assert( sizeof( DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "struct and wrapper have different size!" );
14717
14718 struct PhysicalDevice16BitStorageFeatures
14719 {
14720 PhysicalDevice16BitStorageFeatures( Bool32 storageBuffer16BitAccess_ = 0,
14721 Bool32 uniformAndStorageBuffer16BitAccess_ = 0,
14722 Bool32 storagePushConstant16_ = 0,
14723 Bool32 storageInputOutput16_ = 0 )
14724 : storageBuffer16BitAccess( storageBuffer16BitAccess_ )
14725 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
14726 , storagePushConstant16( storagePushConstant16_ )
14727 , storageInputOutput16( storageInputOutput16_ )
14728 {
14729 }
14730
14731 PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs )
14732 {
14733 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
14734 }
14735
14736 PhysicalDevice16BitStorageFeatures& operator=( VkPhysicalDevice16BitStorageFeatures const & rhs )
14737 {
14738 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
14739 return *this;
14740 }
14741 PhysicalDevice16BitStorageFeatures& setPNext( void* pNext_ )
14742 {
14743 pNext = pNext_;
14744 return *this;
14745 }
14746
14747 PhysicalDevice16BitStorageFeatures& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
14748 {
14749 storageBuffer16BitAccess = storageBuffer16BitAccess_;
14750 return *this;
14751 }
14752
14753 PhysicalDevice16BitStorageFeatures& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
14754 {
14755 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
14756 return *this;
14757 }
14758
14759 PhysicalDevice16BitStorageFeatures& setStoragePushConstant16( Bool32 storagePushConstant16_ )
14760 {
14761 storagePushConstant16 = storagePushConstant16_;
14762 return *this;
14763 }
14764
14765 PhysicalDevice16BitStorageFeatures& setStorageInputOutput16( Bool32 storageInputOutput16_ )
14766 {
14767 storageInputOutput16 = storageInputOutput16_;
14768 return *this;
14769 }
14770
14771 operator const VkPhysicalDevice16BitStorageFeatures&() const
14772 {
14773 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(this);
14774 }
14775
14776 bool operator==( PhysicalDevice16BitStorageFeatures const& rhs ) const
14777 {
14778 return ( sType == rhs.sType )
14779 && ( pNext == rhs.pNext )
14780 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
14781 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
14782 && ( storagePushConstant16 == rhs.storagePushConstant16 )
14783 && ( storageInputOutput16 == rhs.storageInputOutput16 );
14784 }
14785
14786 bool operator!=( PhysicalDevice16BitStorageFeatures const& rhs ) const
14787 {
14788 return !operator==( rhs );
14789 }
14790
14791 private:
14792 StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures;
14793
14794 public:
14795 void* pNext = nullptr;
14796 Bool32 storageBuffer16BitAccess;
14797 Bool32 uniformAndStorageBuffer16BitAccess;
14798 Bool32 storagePushConstant16;
14799 Bool32 storageInputOutput16;
14800 };
14801 static_assert( sizeof( PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), "struct and wrapper have different size!" );
14802
14803 using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
14804
14805 struct BufferMemoryRequirementsInfo2
14806 {
14807 BufferMemoryRequirementsInfo2( Buffer buffer_ = Buffer() )
14808 : buffer( buffer_ )
14809 {
14810 }
14811
14812 BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs )
14813 {
14814 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
14815 }
14816
14817 BufferMemoryRequirementsInfo2& operator=( VkBufferMemoryRequirementsInfo2 const & rhs )
14818 {
14819 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
14820 return *this;
14821 }
14822 BufferMemoryRequirementsInfo2& setPNext( const void* pNext_ )
14823 {
14824 pNext = pNext_;
14825 return *this;
14826 }
14827
14828 BufferMemoryRequirementsInfo2& setBuffer( Buffer buffer_ )
14829 {
14830 buffer = buffer_;
14831 return *this;
14832 }
14833
14834 operator const VkBufferMemoryRequirementsInfo2&() const
14835 {
14836 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>(this);
14837 }
14838
14839 bool operator==( BufferMemoryRequirementsInfo2 const& rhs ) const
14840 {
14841 return ( sType == rhs.sType )
14842 && ( pNext == rhs.pNext )
14843 && ( buffer == rhs.buffer );
14844 }
14845
14846 bool operator!=( BufferMemoryRequirementsInfo2 const& rhs ) const
14847 {
14848 return !operator==( rhs );
14849 }
14850
14851 private:
14852 StructureType sType = StructureType::eBufferMemoryRequirementsInfo2;
14853
14854 public:
14855 const void* pNext = nullptr;
14856 Buffer buffer;
14857 };
14858 static_assert( sizeof( BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
14859
14860 using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
14861
14862 struct ImageMemoryRequirementsInfo2
14863 {
14864 ImageMemoryRequirementsInfo2( Image image_ = Image() )
14865 : image( image_ )
14866 {
14867 }
14868
14869 ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs )
14870 {
14871 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
14872 }
14873
14874 ImageMemoryRequirementsInfo2& operator=( VkImageMemoryRequirementsInfo2 const & rhs )
14875 {
14876 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
14877 return *this;
14878 }
14879 ImageMemoryRequirementsInfo2& setPNext( const void* pNext_ )
14880 {
14881 pNext = pNext_;
14882 return *this;
14883 }
14884
14885 ImageMemoryRequirementsInfo2& setImage( Image image_ )
14886 {
14887 image = image_;
14888 return *this;
14889 }
14890
14891 operator const VkImageMemoryRequirementsInfo2&() const
14892 {
14893 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2*>(this);
14894 }
14895
14896 bool operator==( ImageMemoryRequirementsInfo2 const& rhs ) const
14897 {
14898 return ( sType == rhs.sType )
14899 && ( pNext == rhs.pNext )
14900 && ( image == rhs.image );
14901 }
14902
14903 bool operator!=( ImageMemoryRequirementsInfo2 const& rhs ) const
14904 {
14905 return !operator==( rhs );
14906 }
14907
14908 private:
14909 StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
14910
14911 public:
14912 const void* pNext = nullptr;
14913 Image image;
14914 };
14915 static_assert( sizeof( ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
14916
14917 using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
14918
14919 struct ImageSparseMemoryRequirementsInfo2
14920 {
14921 ImageSparseMemoryRequirementsInfo2( Image image_ = Image() )
14922 : image( image_ )
14923 {
14924 }
14925
14926 ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs )
14927 {
14928 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
14929 }
14930
14931 ImageSparseMemoryRequirementsInfo2& operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs )
14932 {
14933 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
14934 return *this;
14935 }
14936 ImageSparseMemoryRequirementsInfo2& setPNext( const void* pNext_ )
14937 {
14938 pNext = pNext_;
14939 return *this;
14940 }
14941
14942 ImageSparseMemoryRequirementsInfo2& setImage( Image image_ )
14943 {
14944 image = image_;
14945 return *this;
14946 }
14947
14948 operator const VkImageSparseMemoryRequirementsInfo2&() const
14949 {
14950 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>(this);
14951 }
14952
14953 bool operator==( ImageSparseMemoryRequirementsInfo2 const& rhs ) const
14954 {
14955 return ( sType == rhs.sType )
14956 && ( pNext == rhs.pNext )
14957 && ( image == rhs.image );
14958 }
14959
14960 bool operator!=( ImageSparseMemoryRequirementsInfo2 const& rhs ) const
14961 {
14962 return !operator==( rhs );
14963 }
14964
14965 private:
14966 StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
14967
14968 public:
14969 const void* pNext = nullptr;
14970 Image image;
14971 };
14972 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), "struct and wrapper have different size!" );
14973
14974 using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
14975
14976 struct MemoryRequirements2
14977 {
14978 operator const VkMemoryRequirements2&() const
14979 {
14980 return *reinterpret_cast<const VkMemoryRequirements2*>(this);
14981 }
14982
14983 bool operator==( MemoryRequirements2 const& rhs ) const
14984 {
14985 return ( sType == rhs.sType )
14986 && ( pNext == rhs.pNext )
14987 && ( memoryRequirements == rhs.memoryRequirements );
14988 }
14989
14990 bool operator!=( MemoryRequirements2 const& rhs ) const
14991 {
14992 return !operator==( rhs );
14993 }
14994
14995 private:
14996 StructureType sType = StructureType::eMemoryRequirements2;
14997
14998 public:
14999 void* pNext = nullptr;
15000 MemoryRequirements memoryRequirements;
15001 };
15002 static_assert( sizeof( MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "struct and wrapper have different size!" );
15003
15004 using MemoryRequirements2KHR = MemoryRequirements2;
15005
15006 struct MemoryDedicatedRequirements
15007 {
15008 operator const VkMemoryDedicatedRequirements&() const
15009 {
15010 return *reinterpret_cast<const VkMemoryDedicatedRequirements*>(this);
15011 }
15012
15013 bool operator==( MemoryDedicatedRequirements const& rhs ) const
15014 {
15015 return ( sType == rhs.sType )
15016 && ( pNext == rhs.pNext )
15017 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
15018 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
15019 }
15020
15021 bool operator!=( MemoryDedicatedRequirements const& rhs ) const
15022 {
15023 return !operator==( rhs );
15024 }
15025
15026 private:
15027 StructureType sType = StructureType::eMemoryDedicatedRequirements;
15028
15029 public:
15030 void* pNext = nullptr;
15031 Bool32 prefersDedicatedAllocation;
15032 Bool32 requiresDedicatedAllocation;
15033 };
15034 static_assert( sizeof( MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), "struct and wrapper have different size!" );
15035
15036 using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
15037
15038 struct MemoryDedicatedAllocateInfo
15039 {
15040 MemoryDedicatedAllocateInfo( Image image_ = Image(),
15041 Buffer buffer_ = Buffer() )
15042 : image( image_ )
15043 , buffer( buffer_ )
15044 {
15045 }
15046
15047 MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs )
15048 {
15049 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
15050 }
15051
15052 MemoryDedicatedAllocateInfo& operator=( VkMemoryDedicatedAllocateInfo const & rhs )
15053 {
15054 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
15055 return *this;
15056 }
15057 MemoryDedicatedAllocateInfo& setPNext( const void* pNext_ )
15058 {
15059 pNext = pNext_;
15060 return *this;
15061 }
15062
15063 MemoryDedicatedAllocateInfo& setImage( Image image_ )
15064 {
15065 image = image_;
15066 return *this;
15067 }
15068
15069 MemoryDedicatedAllocateInfo& setBuffer( Buffer buffer_ )
15070 {
15071 buffer = buffer_;
15072 return *this;
15073 }
15074
15075 operator const VkMemoryDedicatedAllocateInfo&() const
15076 {
15077 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>(this);
15078 }
15079
15080 bool operator==( MemoryDedicatedAllocateInfo const& rhs ) const
15081 {
15082 return ( sType == rhs.sType )
15083 && ( pNext == rhs.pNext )
15084 && ( image == rhs.image )
15085 && ( buffer == rhs.buffer );
15086 }
15087
15088 bool operator!=( MemoryDedicatedAllocateInfo const& rhs ) const
15089 {
15090 return !operator==( rhs );
15091 }
15092
15093 private:
15094 StructureType sType = StructureType::eMemoryDedicatedAllocateInfo;
15095
15096 public:
15097 const void* pNext = nullptr;
15098 Image image;
15099 Buffer buffer;
15100 };
15101 static_assert( sizeof( MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), "struct and wrapper have different size!" );
15102
15103 using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
15104
15105 struct SamplerYcbcrConversionInfo
15106 {
15107 SamplerYcbcrConversionInfo( SamplerYcbcrConversion conversion_ = SamplerYcbcrConversion() )
15108 : conversion( conversion_ )
15109 {
15110 }
15111
15112 SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs )
15113 {
15114 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
15115 }
15116
15117 SamplerYcbcrConversionInfo& operator=( VkSamplerYcbcrConversionInfo const & rhs )
15118 {
15119 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
15120 return *this;
15121 }
15122 SamplerYcbcrConversionInfo& setPNext( const void* pNext_ )
15123 {
15124 pNext = pNext_;
15125 return *this;
15126 }
15127
15128 SamplerYcbcrConversionInfo& setConversion( SamplerYcbcrConversion conversion_ )
15129 {
15130 conversion = conversion_;
15131 return *this;
15132 }
15133
15134 operator const VkSamplerYcbcrConversionInfo&() const
15135 {
15136 return *reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(this);
15137 }
15138
15139 bool operator==( SamplerYcbcrConversionInfo const& rhs ) const
15140 {
15141 return ( sType == rhs.sType )
15142 && ( pNext == rhs.pNext )
15143 && ( conversion == rhs.conversion );
15144 }
15145
15146 bool operator!=( SamplerYcbcrConversionInfo const& rhs ) const
15147 {
15148 return !operator==( rhs );
15149 }
15150
15151 private:
15152 StructureType sType = StructureType::eSamplerYcbcrConversionInfo;
15153
15154 public:
15155 const void* pNext = nullptr;
15156 SamplerYcbcrConversion conversion;
15157 };
15158 static_assert( sizeof( SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), "struct and wrapper have different size!" );
15159
15160 using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
15161
15162 struct PhysicalDeviceSamplerYcbcrConversionFeatures
15163 {
15164 PhysicalDeviceSamplerYcbcrConversionFeatures( Bool32 samplerYcbcrConversion_ = 0 )
15165 : samplerYcbcrConversion( samplerYcbcrConversion_ )
15166 {
15167 }
15168
15169 PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
15170 {
15171 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
15172 }
15173
15174 PhysicalDeviceSamplerYcbcrConversionFeatures& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
15175 {
15176 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
15177 return *this;
15178 }
15179 PhysicalDeviceSamplerYcbcrConversionFeatures& setPNext( void* pNext_ )
15180 {
15181 pNext = pNext_;
15182 return *this;
15183 }
15184
15185 PhysicalDeviceSamplerYcbcrConversionFeatures& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
15186 {
15187 samplerYcbcrConversion = samplerYcbcrConversion_;
15188 return *this;
15189 }
15190
15191 operator const VkPhysicalDeviceSamplerYcbcrConversionFeatures&() const
15192 {
15193 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(this);
15194 }
15195
15196 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const
15197 {
15198 return ( sType == rhs.sType )
15199 && ( pNext == rhs.pNext )
15200 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
15201 }
15202
15203 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const
15204 {
15205 return !operator==( rhs );
15206 }
15207
15208 private:
15209 StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
15210
15211 public:
15212 void* pNext = nullptr;
15213 Bool32 samplerYcbcrConversion;
15214 };
15215 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), "struct and wrapper have different size!" );
15216
15217 using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
15218
15219 struct SamplerYcbcrConversionImageFormatProperties
15220 {
15221 operator const VkSamplerYcbcrConversionImageFormatProperties&() const
15222 {
15223 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>(this);
15224 }
15225
15226 bool operator==( SamplerYcbcrConversionImageFormatProperties const& rhs ) const
15227 {
15228 return ( sType == rhs.sType )
15229 && ( pNext == rhs.pNext )
15230 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
15231 }
15232
15233 bool operator!=( SamplerYcbcrConversionImageFormatProperties const& rhs ) const
15234 {
15235 return !operator==( rhs );
15236 }
15237
15238 private:
15239 StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
15240
15241 public:
15242 void* pNext = nullptr;
15243 uint32_t combinedImageSamplerDescriptorCount;
15244 };
15245 static_assert( sizeof( SamplerYcbcrConversionImageFormatProperties ) == sizeof( VkSamplerYcbcrConversionImageFormatProperties ), "struct and wrapper have different size!" );
15246
15247 using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
15248
15249 struct TextureLODGatherFormatPropertiesAMD
15250 {
15251 operator const VkTextureLODGatherFormatPropertiesAMD&() const
15252 {
15253 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
15254 }
15255
15256 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
15257 {
15258 return ( sType == rhs.sType )
15259 && ( pNext == rhs.pNext )
15260 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
15261 }
15262
15263 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
15264 {
15265 return !operator==( rhs );
15266 }
15267
15268 private:
15269 StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
15270
15271 public:
15272 void* pNext = nullptr;
15273 Bool32 supportsTextureGatherLODBiasAMD;
15274 };
15275 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
15276
15277 struct ProtectedSubmitInfo
15278 {
15279 ProtectedSubmitInfo( Bool32 protectedSubmit_ = 0 )
15280 : protectedSubmit( protectedSubmit_ )
15281 {
15282 }
15283
15284 ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs )
15285 {
15286 memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
15287 }
15288
15289 ProtectedSubmitInfo& operator=( VkProtectedSubmitInfo const & rhs )
15290 {
15291 memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
15292 return *this;
15293 }
15294 ProtectedSubmitInfo& setPNext( const void* pNext_ )
15295 {
15296 pNext = pNext_;
15297 return *this;
15298 }
15299
15300 ProtectedSubmitInfo& setProtectedSubmit( Bool32 protectedSubmit_ )
15301 {
15302 protectedSubmit = protectedSubmit_;
15303 return *this;
15304 }
15305
15306 operator const VkProtectedSubmitInfo&() const
15307 {
15308 return *reinterpret_cast<const VkProtectedSubmitInfo*>(this);
15309 }
15310
15311 bool operator==( ProtectedSubmitInfo const& rhs ) const
15312 {
15313 return ( sType == rhs.sType )
15314 && ( pNext == rhs.pNext )
15315 && ( protectedSubmit == rhs.protectedSubmit );
15316 }
15317
15318 bool operator!=( ProtectedSubmitInfo const& rhs ) const
15319 {
15320 return !operator==( rhs );
15321 }
15322
15323 private:
15324 StructureType sType = StructureType::eProtectedSubmitInfo;
15325
15326 public:
15327 const void* pNext = nullptr;
15328 Bool32 protectedSubmit;
15329 };
15330 static_assert( sizeof( ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "struct and wrapper have different size!" );
15331
15332 struct PhysicalDeviceProtectedMemoryFeatures
15333 {
15334 PhysicalDeviceProtectedMemoryFeatures( Bool32 protectedMemory_ = 0 )
15335 : protectedMemory( protectedMemory_ )
15336 {
15337 }
15338
15339 PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
15340 {
15341 memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
15342 }
15343
15344 PhysicalDeviceProtectedMemoryFeatures& operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
15345 {
15346 memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
15347 return *this;
15348 }
15349 PhysicalDeviceProtectedMemoryFeatures& setPNext( void* pNext_ )
15350 {
15351 pNext = pNext_;
15352 return *this;
15353 }
15354
15355 PhysicalDeviceProtectedMemoryFeatures& setProtectedMemory( Bool32 protectedMemory_ )
15356 {
15357 protectedMemory = protectedMemory_;
15358 return *this;
15359 }
15360
15361 operator const VkPhysicalDeviceProtectedMemoryFeatures&() const
15362 {
15363 return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(this);
15364 }
15365
15366 bool operator==( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const
15367 {
15368 return ( sType == rhs.sType )
15369 && ( pNext == rhs.pNext )
15370 && ( protectedMemory == rhs.protectedMemory );
15371 }
15372
15373 bool operator!=( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const
15374 {
15375 return !operator==( rhs );
15376 }
15377
15378 private:
15379 StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
15380
15381 public:
15382 void* pNext = nullptr;
15383 Bool32 protectedMemory;
15384 };
15385 static_assert( sizeof( PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), "struct and wrapper have different size!" );
15386
15387 struct PhysicalDeviceProtectedMemoryProperties
15388 {
15389 PhysicalDeviceProtectedMemoryProperties( Bool32 protectedNoFault_ = 0 )
15390 : protectedNoFault( protectedNoFault_ )
15391 {
15392 }
15393
15394 PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs )
15395 {
15396 memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryProperties ) );
15397 }
15398
15399 PhysicalDeviceProtectedMemoryProperties& operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs )
15400 {
15401 memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryProperties ) );
15402 return *this;
15403 }
15404 PhysicalDeviceProtectedMemoryProperties& setPNext( void* pNext_ )
15405 {
15406 pNext = pNext_;
15407 return *this;
15408 }
15409
15410 PhysicalDeviceProtectedMemoryProperties& setProtectedNoFault( Bool32 protectedNoFault_ )
15411 {
15412 protectedNoFault = protectedNoFault_;
15413 return *this;
15414 }
15415
15416 operator const VkPhysicalDeviceProtectedMemoryProperties&() const
15417 {
15418 return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>(this);
15419 }
15420
15421 bool operator==( PhysicalDeviceProtectedMemoryProperties const& rhs ) const
15422 {
15423 return ( sType == rhs.sType )
15424 && ( pNext == rhs.pNext )
15425 && ( protectedNoFault == rhs.protectedNoFault );
15426 }
15427
15428 bool operator!=( PhysicalDeviceProtectedMemoryProperties const& rhs ) const
15429 {
15430 return !operator==( rhs );
15431 }
15432
15433 private:
15434 StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
15435
15436 public:
15437 void* pNext = nullptr;
15438 Bool32 protectedNoFault;
15439 };
15440 static_assert( sizeof( PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), "struct and wrapper have different size!" );
15441
15442 struct PipelineCoverageToColorStateCreateInfoNV
15443 {
15444 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(),
15445 Bool32 coverageToColorEnable_ = 0,
15446 uint32_t coverageToColorLocation_ = 0 )
15447 : flags( flags_ )
15448 , coverageToColorEnable( coverageToColorEnable_ )
15449 , coverageToColorLocation( coverageToColorLocation_ )
15450 {
15451 }
15452
15453 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
15454 {
15455 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
15456 }
15457
15458 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
15459 {
15460 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
15461 return *this;
15462 }
15463 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
15464 {
15465 pNext = pNext_;
15466 return *this;
15467 }
15468
15469 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
15470 {
15471 flags = flags_;
15472 return *this;
15473 }
15474
15475 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
15476 {
15477 coverageToColorEnable = coverageToColorEnable_;
15478 return *this;
15479 }
15480
15481 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
15482 {
15483 coverageToColorLocation = coverageToColorLocation_;
15484 return *this;
15485 }
15486
15487 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
15488 {
15489 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
15490 }
15491
15492 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
15493 {
15494 return ( sType == rhs.sType )
15495 && ( pNext == rhs.pNext )
15496 && ( flags == rhs.flags )
15497 && ( coverageToColorEnable == rhs.coverageToColorEnable )
15498 && ( coverageToColorLocation == rhs.coverageToColorLocation );
15499 }
15500
15501 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
15502 {
15503 return !operator==( rhs );
15504 }
15505
15506 private:
15507 StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
15508
15509 public:
15510 const void* pNext = nullptr;
15511 PipelineCoverageToColorStateCreateFlagsNV flags;
15512 Bool32 coverageToColorEnable;
15513 uint32_t coverageToColorLocation;
15514 };
15515 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
15516
15517 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
15518 {
15519 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
15520 {
15521 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
15522 }
15523
15524 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
15525 {
15526 return ( sType == rhs.sType )
15527 && ( pNext == rhs.pNext )
15528 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
15529 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
15530 }
15531
15532 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
15533 {
15534 return !operator==( rhs );
15535 }
15536
15537 private:
15538 StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
15539
15540 public:
15541 void* pNext = nullptr;
15542 Bool32 filterMinmaxSingleComponentFormats;
15543 Bool32 filterMinmaxImageComponentMapping;
15544 };
15545 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
15546
15547 struct MultisamplePropertiesEXT
15548 {
15549 operator const VkMultisamplePropertiesEXT&() const
15550 {
15551 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
15552 }
15553
15554 bool operator==( MultisamplePropertiesEXT const& rhs ) const
15555 {
15556 return ( sType == rhs.sType )
15557 && ( pNext == rhs.pNext )
15558 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
15559 }
15560
15561 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
15562 {
15563 return !operator==( rhs );
15564 }
15565
15566 private:
15567 StructureType sType = StructureType::eMultisamplePropertiesEXT;
15568
15569 public:
15570 void* pNext = nullptr;
15571 Extent2D maxSampleLocationGridSize;
15572 };
15573 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
15574
15575 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
15576 {
15577 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
15578 : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
15579 {
15580 }
15581
15582 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
15583 {
15584 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
15585 }
15586
15587 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
15588 {
15589 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
15590 return *this;
15591 }
15592 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
15593 {
15594 pNext = pNext_;
15595 return *this;
15596 }
15597
15598 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
15599 {
15600 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
15601 return *this;
15602 }
15603
15604 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
15605 {
15606 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
15607 }
15608
15609 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
15610 {
15611 return ( sType == rhs.sType )
15612 && ( pNext == rhs.pNext )
15613 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
15614 }
15615
15616 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
15617 {
15618 return !operator==( rhs );
15619 }
15620
15621 private:
15622 StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
15623
15624 public:
15625 void* pNext = nullptr;
15626 Bool32 advancedBlendCoherentOperations;
15627 };
15628 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
15629
15630 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
15631 {
15632 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
15633 {
15634 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
15635 }
15636
15637 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
15638 {
15639 return ( sType == rhs.sType )
15640 && ( pNext == rhs.pNext )
15641 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
15642 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
15643 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
15644 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
15645 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
15646 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
15647 }
15648
15649 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
15650 {
15651 return !operator==( rhs );
15652 }
15653
15654 private:
15655 StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
15656
15657 public:
15658 void* pNext = nullptr;
15659 uint32_t advancedBlendMaxColorAttachments;
15660 Bool32 advancedBlendIndependentBlend;
15661 Bool32 advancedBlendNonPremultipliedSrcColor;
15662 Bool32 advancedBlendNonPremultipliedDstColor;
15663 Bool32 advancedBlendCorrelatedOverlap;
15664 Bool32 advancedBlendAllOperations;
15665 };
15666 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
15667
15668 struct ImageFormatListCreateInfoKHR
15669 {
15670 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0,
15671 const Format* pViewFormats_ = nullptr )
15672 : viewFormatCount( viewFormatCount_ )
15673 , pViewFormats( pViewFormats_ )
15674 {
15675 }
15676
15677 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
15678 {
15679 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
15680 }
15681
15682 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
15683 {
15684 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
15685 return *this;
15686 }
15687 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
15688 {
15689 pNext = pNext_;
15690 return *this;
15691 }
15692
15693 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
15694 {
15695 viewFormatCount = viewFormatCount_;
15696 return *this;
15697 }
15698
15699 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
15700 {
15701 pViewFormats = pViewFormats_;
15702 return *this;
15703 }
15704
15705 operator const VkImageFormatListCreateInfoKHR&() const
15706 {
15707 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
15708 }
15709
15710 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
15711 {
15712 return ( sType == rhs.sType )
15713 && ( pNext == rhs.pNext )
15714 && ( viewFormatCount == rhs.viewFormatCount )
15715 && ( pViewFormats == rhs.pViewFormats );
15716 }
15717
15718 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
15719 {
15720 return !operator==( rhs );
15721 }
15722
15723 private:
15724 StructureType sType = StructureType::eImageFormatListCreateInfoKHR;
15725
15726 public:
15727 const void* pNext = nullptr;
15728 uint32_t viewFormatCount;
15729 const Format* pViewFormats;
15730 };
15731 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
15732
15733 struct ValidationCacheCreateInfoEXT
15734 {
15735 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(),
15736 size_t initialDataSize_ = 0,
15737 const void* pInitialData_ = nullptr )
15738 : flags( flags_ )
15739 , initialDataSize( initialDataSize_ )
15740 , pInitialData( pInitialData_ )
15741 {
15742 }
15743
15744 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
15745 {
15746 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
15747 }
15748
15749 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
15750 {
15751 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
15752 return *this;
15753 }
15754 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
15755 {
15756 pNext = pNext_;
15757 return *this;
15758 }
15759
15760 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
15761 {
15762 flags = flags_;
15763 return *this;
15764 }
15765
15766 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
15767 {
15768 initialDataSize = initialDataSize_;
15769 return *this;
15770 }
15771
15772 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
15773 {
15774 pInitialData = pInitialData_;
15775 return *this;
15776 }
15777
15778 operator const VkValidationCacheCreateInfoEXT&() const
15779 {
15780 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
15781 }
15782
15783 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
15784 {
15785 return ( sType == rhs.sType )
15786 && ( pNext == rhs.pNext )
15787 && ( flags == rhs.flags )
15788 && ( initialDataSize == rhs.initialDataSize )
15789 && ( pInitialData == rhs.pInitialData );
15790 }
15791
15792 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
15793 {
15794 return !operator==( rhs );
15795 }
15796
15797 private:
15798 StructureType sType = StructureType::eValidationCacheCreateInfoEXT;
15799
15800 public:
15801 const void* pNext = nullptr;
15802 ValidationCacheCreateFlagsEXT flags;
15803 size_t initialDataSize;
15804 const void* pInitialData;
15805 };
15806 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
15807
15808 struct ShaderModuleValidationCacheCreateInfoEXT
15809 {
15810 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
15811 : validationCache( validationCache_ )
15812 {
15813 }
15814
15815 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
15816 {
15817 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
15818 }
15819
15820 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
15821 {
15822 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
15823 return *this;
15824 }
15825 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
15826 {
15827 pNext = pNext_;
15828 return *this;
15829 }
15830
15831 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
15832 {
15833 validationCache = validationCache_;
15834 return *this;
15835 }
15836
15837 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
15838 {
15839 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
15840 }
15841
15842 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
15843 {
15844 return ( sType == rhs.sType )
15845 && ( pNext == rhs.pNext )
15846 && ( validationCache == rhs.validationCache );
15847 }
15848
15849 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
15850 {
15851 return !operator==( rhs );
15852 }
15853
15854 private:
15855 StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
15856
15857 public:
15858 const void* pNext = nullptr;
15859 ValidationCacheEXT validationCache;
15860 };
15861 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
15862
15863 struct PhysicalDeviceMaintenance3Properties
15864 {
15865 operator const VkPhysicalDeviceMaintenance3Properties&() const
15866 {
15867 return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>(this);
15868 }
15869
15870 bool operator==( PhysicalDeviceMaintenance3Properties const& rhs ) const
15871 {
15872 return ( sType == rhs.sType )
15873 && ( pNext == rhs.pNext )
15874 && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors )
15875 && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
15876 }
15877
15878 bool operator!=( PhysicalDeviceMaintenance3Properties const& rhs ) const
15879 {
15880 return !operator==( rhs );
15881 }
15882
15883 private:
15884 StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties;
15885
15886 public:
15887 void* pNext = nullptr;
15888 uint32_t maxPerSetDescriptors;
15889 DeviceSize maxMemoryAllocationSize;
15890 };
15891 static_assert( sizeof( PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), "struct and wrapper have different size!" );
15892
15893 using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
15894
15895 struct DescriptorSetLayoutSupport
15896 {
15897 operator const VkDescriptorSetLayoutSupport&() const
15898 {
15899 return *reinterpret_cast<const VkDescriptorSetLayoutSupport*>(this);
15900 }
15901
15902 bool operator==( DescriptorSetLayoutSupport const& rhs ) const
15903 {
15904 return ( sType == rhs.sType )
15905 && ( pNext == rhs.pNext )
15906 && ( supported == rhs.supported );
15907 }
15908
15909 bool operator!=( DescriptorSetLayoutSupport const& rhs ) const
15910 {
15911 return !operator==( rhs );
15912 }
15913
15914 private:
15915 StructureType sType = StructureType::eDescriptorSetLayoutSupport;
15916
15917 public:
15918 void* pNext = nullptr;
15919 Bool32 supported;
15920 };
15921 static_assert( sizeof( DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), "struct and wrapper have different size!" );
15922
15923 using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
15924
15925 struct PhysicalDeviceShaderDrawParameterFeatures
15926 {
15927 PhysicalDeviceShaderDrawParameterFeatures( Bool32 shaderDrawParameters_ = 0 )
15928 : shaderDrawParameters( shaderDrawParameters_ )
15929 {
15930 }
15931
15932 PhysicalDeviceShaderDrawParameterFeatures( VkPhysicalDeviceShaderDrawParameterFeatures const & rhs )
15933 {
15934 memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParameterFeatures ) );
15935 }
15936
15937 PhysicalDeviceShaderDrawParameterFeatures& operator=( VkPhysicalDeviceShaderDrawParameterFeatures const & rhs )
15938 {
15939 memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParameterFeatures ) );
15940 return *this;
15941 }
15942 PhysicalDeviceShaderDrawParameterFeatures& setPNext( void* pNext_ )
15943 {
15944 pNext = pNext_;
15945 return *this;
15946 }
15947
15948 PhysicalDeviceShaderDrawParameterFeatures& setShaderDrawParameters( Bool32 shaderDrawParameters_ )
15949 {
15950 shaderDrawParameters = shaderDrawParameters_;
15951 return *this;
15952 }
15953
15954 operator const VkPhysicalDeviceShaderDrawParameterFeatures&() const
15955 {
15956 return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParameterFeatures*>(this);
15957 }
15958
15959 bool operator==( PhysicalDeviceShaderDrawParameterFeatures const& rhs ) const
15960 {
15961 return ( sType == rhs.sType )
15962 && ( pNext == rhs.pNext )
15963 && ( shaderDrawParameters == rhs.shaderDrawParameters );
15964 }
15965
15966 bool operator!=( PhysicalDeviceShaderDrawParameterFeatures const& rhs ) const
15967 {
15968 return !operator==( rhs );
15969 }
15970
15971 private:
15972 StructureType sType = StructureType::ePhysicalDeviceShaderDrawParameterFeatures;
15973
15974 public:
15975 void* pNext = nullptr;
15976 Bool32 shaderDrawParameters;
15977 };
15978 static_assert( sizeof( PhysicalDeviceShaderDrawParameterFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParameterFeatures ), "struct and wrapper have different size!" );
15979
15980 struct DebugUtilsLabelEXT
15981 {
15982 DebugUtilsLabelEXT( const char* pLabelName_ = nullptr,
15983 std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
15984 : pLabelName( pLabelName_ )
15985 {
15986 memcpy( &color, color_.data(), 4 * sizeof( float ) );
15987 }
15988
15989 DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs )
15990 {
15991 memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
15992 }
15993
15994 DebugUtilsLabelEXT& operator=( VkDebugUtilsLabelEXT const & rhs )
15995 {
15996 memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
15997 return *this;
15998 }
15999 DebugUtilsLabelEXT& setPNext( const void* pNext_ )
16000 {
16001 pNext = pNext_;
16002 return *this;
16003 }
16004
16005 DebugUtilsLabelEXT& setPLabelName( const char* pLabelName_ )
16006 {
16007 pLabelName = pLabelName_;
16008 return *this;
16009 }
16010
16011 DebugUtilsLabelEXT& setColor( std::array<float,4> color_ )
16012 {
16013 memcpy( &color, color_.data(), 4 * sizeof( float ) );
16014 return *this;
16015 }
16016
16017 operator const VkDebugUtilsLabelEXT&() const
16018 {
16019 return *reinterpret_cast<const VkDebugUtilsLabelEXT*>(this);
16020 }
16021
16022 bool operator==( DebugUtilsLabelEXT const& rhs ) const
16023 {
16024 return ( sType == rhs.sType )
16025 && ( pNext == rhs.pNext )
16026 && ( pLabelName == rhs.pLabelName )
16027 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
16028 }
16029
16030 bool operator!=( DebugUtilsLabelEXT const& rhs ) const
16031 {
16032 return !operator==( rhs );
16033 }
16034
16035 private:
16036 StructureType sType = StructureType::eDebugUtilsLabelEXT;
16037
16038 public:
16039 const void* pNext = nullptr;
16040 const char* pLabelName;
16041 float color[4];
16042 };
16043 static_assert( sizeof( DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "struct and wrapper have different size!" );
16044
16045 struct MemoryHostPointerPropertiesEXT
16046 {
16047 MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = 0 )
16048 : memoryTypeBits( memoryTypeBits_ )
16049 {
16050 }
16051
16052 MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs )
16053 {
16054 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
16055 }
16056
16057 MemoryHostPointerPropertiesEXT& operator=( VkMemoryHostPointerPropertiesEXT const & rhs )
16058 {
16059 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
16060 return *this;
16061 }
16062 MemoryHostPointerPropertiesEXT& setPNext( void* pNext_ )
16063 {
16064 pNext = pNext_;
16065 return *this;
16066 }
16067
16068 MemoryHostPointerPropertiesEXT& setMemoryTypeBits( uint32_t memoryTypeBits_ )
16069 {
16070 memoryTypeBits = memoryTypeBits_;
16071 return *this;
16072 }
16073
16074 operator const VkMemoryHostPointerPropertiesEXT&() const
16075 {
16076 return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT*>(this);
16077 }
16078
16079 bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const
16080 {
16081 return ( sType == rhs.sType )
16082 && ( pNext == rhs.pNext )
16083 && ( memoryTypeBits == rhs.memoryTypeBits );
16084 }
16085
16086 bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const
16087 {
16088 return !operator==( rhs );
16089 }
16090
16091 private:
16092 StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
16093
16094 public:
16095 void* pNext = nullptr;
16096 uint32_t memoryTypeBits;
16097 };
16098 static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" );
16099
16100 struct PhysicalDeviceExternalMemoryHostPropertiesEXT
16101 {
16102 PhysicalDeviceExternalMemoryHostPropertiesEXT( DeviceSize minImportedHostPointerAlignment_ = 0 )
16103 : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
16104 {
16105 }
16106
16107 PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
16108 {
16109 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
16110 }
16111
16112 PhysicalDeviceExternalMemoryHostPropertiesEXT& operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
16113 {
16114 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
16115 return *this;
16116 }
16117 PhysicalDeviceExternalMemoryHostPropertiesEXT& setPNext( void* pNext_ )
16118 {
16119 pNext = pNext_;
16120 return *this;
16121 }
16122
16123 PhysicalDeviceExternalMemoryHostPropertiesEXT& setMinImportedHostPointerAlignment( DeviceSize minImportedHostPointerAlignment_ )
16124 {
16125 minImportedHostPointerAlignment = minImportedHostPointerAlignment_;
16126 return *this;
16127 }
16128
16129 operator const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&() const
16130 {
16131 return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(this);
16132 }
16133
16134 bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
16135 {
16136 return ( sType == rhs.sType )
16137 && ( pNext == rhs.pNext )
16138 && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
16139 }
16140
16141 bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
16142 {
16143 return !operator==( rhs );
16144 }
16145
16146 private:
16147 StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
16148
16149 public:
16150 void* pNext = nullptr;
16151 DeviceSize minImportedHostPointerAlignment;
16152 };
16153 static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" );
16154
16155 struct PhysicalDeviceConservativeRasterizationPropertiesEXT
16156 {
16157 PhysicalDeviceConservativeRasterizationPropertiesEXT( float primitiveOverestimationSize_ = 0,
16158 float maxExtraPrimitiveOverestimationSize_ = 0,
16159 float extraPrimitiveOverestimationSizeGranularity_ = 0,
16160 Bool32 primitiveUnderestimation_ = 0,
16161 Bool32 conservativePointAndLineRasterization_ = 0,
16162 Bool32 degenerateTrianglesRasterized_ = 0,
16163 Bool32 degenerateLinesRasterized_ = 0,
16164 Bool32 fullyCoveredFragmentShaderInputVariable_ = 0,
16165 Bool32 conservativeRasterizationPostDepthCoverage_ = 0 )
16166 : primitiveOverestimationSize( primitiveOverestimationSize_ )
16167 , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ )
16168 , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ )
16169 , primitiveUnderestimation( primitiveUnderestimation_ )
16170 , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ )
16171 , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ )
16172 , degenerateLinesRasterized( degenerateLinesRasterized_ )
16173 , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ )
16174 , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ )
16175 {
16176 }
16177
16178 PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
16179 {
16180 memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
16181 }
16182
16183 PhysicalDeviceConservativeRasterizationPropertiesEXT& operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
16184 {
16185 memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
16186 return *this;
16187 }
16188 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPNext( void* pNext_ )
16189 {
16190 pNext = pNext_;
16191 return *this;
16192 }
16193
16194 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveOverestimationSize( float primitiveOverestimationSize_ )
16195 {
16196 primitiveOverestimationSize = primitiveOverestimationSize_;
16197 return *this;
16198 }
16199
16200 PhysicalDeviceConservativeRasterizationPropertiesEXT& setMaxExtraPrimitiveOverestimationSize( float maxExtraPrimitiveOverestimationSize_ )
16201 {
16202 maxExtraPrimitiveOverestimationSize = maxExtraPrimitiveOverestimationSize_;
16203 return *this;
16204 }
16205
16206 PhysicalDeviceConservativeRasterizationPropertiesEXT& setExtraPrimitiveOverestimationSizeGranularity( float extraPrimitiveOverestimationSizeGranularity_ )
16207 {
16208 extraPrimitiveOverestimationSizeGranularity = extraPrimitiveOverestimationSizeGranularity_;
16209 return *this;
16210 }
16211
16212 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveUnderestimation( Bool32 primitiveUnderestimation_ )
16213 {
16214 primitiveUnderestimation = primitiveUnderestimation_;
16215 return *this;
16216 }
16217
16218 PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativePointAndLineRasterization( Bool32 conservativePointAndLineRasterization_ )
16219 {
16220 conservativePointAndLineRasterization = conservativePointAndLineRasterization_;
16221 return *this;
16222 }
16223
16224 PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateTrianglesRasterized( Bool32 degenerateTrianglesRasterized_ )
16225 {
16226 degenerateTrianglesRasterized = degenerateTrianglesRasterized_;
16227 return *this;
16228 }
16229
16230 PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateLinesRasterized( Bool32 degenerateLinesRasterized_ )
16231 {
16232 degenerateLinesRasterized = degenerateLinesRasterized_;
16233 return *this;
16234 }
16235
16236 PhysicalDeviceConservativeRasterizationPropertiesEXT& setFullyCoveredFragmentShaderInputVariable( Bool32 fullyCoveredFragmentShaderInputVariable_ )
16237 {
16238 fullyCoveredFragmentShaderInputVariable = fullyCoveredFragmentShaderInputVariable_;
16239 return *this;
16240 }
16241
16242 PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativeRasterizationPostDepthCoverage( Bool32 conservativeRasterizationPostDepthCoverage_ )
16243 {
16244 conservativeRasterizationPostDepthCoverage = conservativeRasterizationPostDepthCoverage_;
16245 return *this;
16246 }
16247
16248 operator const VkPhysicalDeviceConservativeRasterizationPropertiesEXT&() const
16249 {
16250 return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(this);
16251 }
16252
16253 bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
16254 {
16255 return ( sType == rhs.sType )
16256 && ( pNext == rhs.pNext )
16257 && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize )
16258 && ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize )
16259 && ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity )
16260 && ( primitiveUnderestimation == rhs.primitiveUnderestimation )
16261 && ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization )
16262 && ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized )
16263 && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized )
16264 && ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable )
16265 && ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
16266 }
16267
16268 bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
16269 {
16270 return !operator==( rhs );
16271 }
16272
16273 private:
16274 StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
16275
16276 public:
16277 void* pNext = nullptr;
16278 float primitiveOverestimationSize;
16279 float maxExtraPrimitiveOverestimationSize;
16280 float extraPrimitiveOverestimationSizeGranularity;
16281 Bool32 primitiveUnderestimation;
16282 Bool32 conservativePointAndLineRasterization;
16283 Bool32 degenerateTrianglesRasterized;
16284 Bool32 degenerateLinesRasterized;
16285 Bool32 fullyCoveredFragmentShaderInputVariable;
16286 Bool32 conservativeRasterizationPostDepthCoverage;
16287 };
16288 static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "struct and wrapper have different size!" );
16289
16290 struct PhysicalDeviceShaderCorePropertiesAMD
16291 {
16292 operator const VkPhysicalDeviceShaderCorePropertiesAMD&() const
16293 {
16294 return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD*>(this);
16295 }
16296
16297 bool operator==( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const
16298 {
16299 return ( sType == rhs.sType )
16300 && ( pNext == rhs.pNext )
16301 && ( shaderEngineCount == rhs.shaderEngineCount )
16302 && ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount )
16303 && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray )
16304 && ( simdPerComputeUnit == rhs.simdPerComputeUnit )
16305 && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd )
16306 && ( wavefrontSize == rhs.wavefrontSize )
16307 && ( sgprsPerSimd == rhs.sgprsPerSimd )
16308 && ( minSgprAllocation == rhs.minSgprAllocation )
16309 && ( maxSgprAllocation == rhs.maxSgprAllocation )
16310 && ( sgprAllocationGranularity == rhs.sgprAllocationGranularity )
16311 && ( vgprsPerSimd == rhs.vgprsPerSimd )
16312 && ( minVgprAllocation == rhs.minVgprAllocation )
16313 && ( maxVgprAllocation == rhs.maxVgprAllocation )
16314 && ( vgprAllocationGranularity == rhs.vgprAllocationGranularity );
16315 }
16316
16317 bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const
16318 {
16319 return !operator==( rhs );
16320 }
16321
16322 private:
16323 StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
16324
16325 public:
16326 void* pNext = nullptr;
16327 uint32_t shaderEngineCount;
16328 uint32_t shaderArraysPerEngineCount;
16329 uint32_t computeUnitsPerShaderArray;
16330 uint32_t simdPerComputeUnit;
16331 uint32_t wavefrontsPerSimd;
16332 uint32_t wavefrontSize;
16333 uint32_t sgprsPerSimd;
16334 uint32_t minSgprAllocation;
16335 uint32_t maxSgprAllocation;
16336 uint32_t sgprAllocationGranularity;
16337 uint32_t vgprsPerSimd;
16338 uint32_t minVgprAllocation;
16339 uint32_t maxVgprAllocation;
16340 uint32_t vgprAllocationGranularity;
16341 };
16342 static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "struct and wrapper have different size!" );
16343
16344 struct PhysicalDeviceDescriptorIndexingFeaturesEXT
16345 {
16346 PhysicalDeviceDescriptorIndexingFeaturesEXT( Bool32 shaderInputAttachmentArrayDynamicIndexing_ = 0,
16347 Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = 0,
16348 Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = 0,
16349 Bool32 shaderUniformBufferArrayNonUniformIndexing_ = 0,
16350 Bool32 shaderSampledImageArrayNonUniformIndexing_ = 0,
16351 Bool32 shaderStorageBufferArrayNonUniformIndexing_ = 0,
16352 Bool32 shaderStorageImageArrayNonUniformIndexing_ = 0,
16353 Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = 0,
16354 Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = 0,
16355 Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = 0,
16356 Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = 0,
16357 Bool32 descriptorBindingSampledImageUpdateAfterBind_ = 0,
16358 Bool32 descriptorBindingStorageImageUpdateAfterBind_ = 0,
16359 Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = 0,
16360 Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = 0,
16361 Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = 0,
16362 Bool32 descriptorBindingUpdateUnusedWhilePending_ = 0,
16363 Bool32 descriptorBindingPartiallyBound_ = 0,
16364 Bool32 descriptorBindingVariableDescriptorCount_ = 0,
16365 Bool32 runtimeDescriptorArray_ = 0 )
16366 : shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ )
16367 , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ )
16368 , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ )
16369 , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ )
16370 , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ )
16371 , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ )
16372 , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ )
16373 , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ )
16374 , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ )
16375 , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ )
16376 , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ )
16377 , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ )
16378 , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ )
16379 , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ )
16380 , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ )
16381 , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ )
16382 , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ )
16383 , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ )
16384 , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ )
16385 , runtimeDescriptorArray( runtimeDescriptorArray_ )
16386 {
16387 }
16388
16389 PhysicalDeviceDescriptorIndexingFeaturesEXT( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
16390 {
16391 memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
16392 }
16393
16394 PhysicalDeviceDescriptorIndexingFeaturesEXT& operator=( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
16395 {
16396 memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
16397 return *this;
16398 }
16399 PhysicalDeviceDescriptorIndexingFeaturesEXT& setPNext( void* pNext_ )
16400 {
16401 pNext = pNext_;
16402 return *this;
16403 }
16404
16405 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ )
16406 {
16407 shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
16408 return *this;
16409 }
16410
16411 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ )
16412 {
16413 shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
16414 return *this;
16415 }
16416
16417 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ )
16418 {
16419 shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
16420 return *this;
16421 }
16422
16423 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ )
16424 {
16425 shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
16426 return *this;
16427 }
16428
16429 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ )
16430 {
16431 shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
16432 return *this;
16433 }
16434
16435 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ )
16436 {
16437 shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
16438 return *this;
16439 }
16440
16441 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ )
16442 {
16443 shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
16444 return *this;
16445 }
16446
16447 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ )
16448 {
16449 shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
16450 return *this;
16451 }
16452
16453 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ )
16454 {
16455 shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
16456 return *this;
16457 }
16458
16459 PhysicalDeviceDescriptorIndexingFeaturesEXT& setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ )
16460 {
16461 shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
16462 return *this;
16463 }
16464
16465 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ )
16466 {
16467 descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
16468 return *this;
16469 }
16470
16471 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ )
16472 {
16473 descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
16474 return *this;
16475 }
16476
16477 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ )
16478 {
16479 descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
16480 return *this;
16481 }
16482
16483 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ )
16484 {
16485 descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
16486 return *this;
16487 }
16488
16489 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ )
16490 {
16491 descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
16492 return *this;
16493 }
16494
16495 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ )
16496 {
16497 descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
16498 return *this;
16499 }
16500
16501 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ )
16502 {
16503 descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
16504 return *this;
16505 }
16506
16507 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ )
16508 {
16509 descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
16510 return *this;
16511 }
16512
16513 PhysicalDeviceDescriptorIndexingFeaturesEXT& setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ )
16514 {
16515 descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
16516 return *this;
16517 }
16518
16519 PhysicalDeviceDescriptorIndexingFeaturesEXT& setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ )
16520 {
16521 runtimeDescriptorArray = runtimeDescriptorArray_;
16522 return *this;
16523 }
16524
16525 operator const VkPhysicalDeviceDescriptorIndexingFeaturesEXT&() const
16526 {
16527 return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeaturesEXT*>(this);
16528 }
16529
16530 bool operator==( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const
16531 {
16532 return ( sType == rhs.sType )
16533 && ( pNext == rhs.pNext )
16534 && ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing )
16535 && ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing )
16536 && ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing )
16537 && ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing )
16538 && ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing )
16539 && ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing )
16540 && ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing )
16541 && ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing )
16542 && ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing )
16543 && ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing )
16544 && ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind )
16545 && ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind )
16546 && ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind )
16547 && ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind )
16548 && ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind )
16549 && ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind )
16550 && ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending )
16551 && ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound )
16552 && ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount )
16553 && ( runtimeDescriptorArray == rhs.runtimeDescriptorArray );
16554 }
16555
16556 bool operator!=( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const
16557 {
16558 return !operator==( rhs );
16559 }
16560
16561 private:
16562 StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT;
16563
16564 public:
16565 void* pNext = nullptr;
16566 Bool32 shaderInputAttachmentArrayDynamicIndexing;
16567 Bool32 shaderUniformTexelBufferArrayDynamicIndexing;
16568 Bool32 shaderStorageTexelBufferArrayDynamicIndexing;
16569 Bool32 shaderUniformBufferArrayNonUniformIndexing;
16570 Bool32 shaderSampledImageArrayNonUniformIndexing;
16571 Bool32 shaderStorageBufferArrayNonUniformIndexing;
16572 Bool32 shaderStorageImageArrayNonUniformIndexing;
16573 Bool32 shaderInputAttachmentArrayNonUniformIndexing;
16574 Bool32 shaderUniformTexelBufferArrayNonUniformIndexing;
16575 Bool32 shaderStorageTexelBufferArrayNonUniformIndexing;
16576 Bool32 descriptorBindingUniformBufferUpdateAfterBind;
16577 Bool32 descriptorBindingSampledImageUpdateAfterBind;
16578 Bool32 descriptorBindingStorageImageUpdateAfterBind;
16579 Bool32 descriptorBindingStorageBufferUpdateAfterBind;
16580 Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
16581 Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
16582 Bool32 descriptorBindingUpdateUnusedWhilePending;
16583 Bool32 descriptorBindingPartiallyBound;
16584 Bool32 descriptorBindingVariableDescriptorCount;
16585 Bool32 runtimeDescriptorArray;
16586 };
16587 static_assert( sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeaturesEXT ), "struct and wrapper have different size!" );
16588
16589 struct PhysicalDeviceDescriptorIndexingPropertiesEXT
16590 {
16591 operator const VkPhysicalDeviceDescriptorIndexingPropertiesEXT&() const
16592 {
16593 return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingPropertiesEXT*>(this);
16594 }
16595
16596 bool operator==( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const
16597 {
16598 return ( sType == rhs.sType )
16599 && ( pNext == rhs.pNext )
16600 && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools )
16601 && ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative )
16602 && ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative )
16603 && ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative )
16604 && ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative )
16605 && ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative )
16606 && ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind )
16607 && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod )
16608 && ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers )
16609 && ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers )
16610 && ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers )
16611 && ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages )
16612 && ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages )
16613 && ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments )
16614 && ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources )
16615 && ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers )
16616 && ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers )
16617 && ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic )
16618 && ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers )
16619 && ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic )
16620 && ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages )
16621 && ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages )
16622 && ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments );
16623 }
16624
16625 bool operator!=( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const
16626 {
16627 return !operator==( rhs );
16628 }
16629
16630 private:
16631 StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT;
16632
16633 public:
16634 void* pNext = nullptr;
16635 uint32_t maxUpdateAfterBindDescriptorsInAllPools;
16636 Bool32 shaderUniformBufferArrayNonUniformIndexingNative;
16637 Bool32 shaderSampledImageArrayNonUniformIndexingNative;
16638 Bool32 shaderStorageBufferArrayNonUniformIndexingNative;
16639 Bool32 shaderStorageImageArrayNonUniformIndexingNative;
16640 Bool32 shaderInputAttachmentArrayNonUniformIndexingNative;
16641 Bool32 robustBufferAccessUpdateAfterBind;
16642 Bool32 quadDivergentImplicitLod;
16643 uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
16644 uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
16645 uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
16646 uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
16647 uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
16648 uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
16649 uint32_t maxPerStageUpdateAfterBindResources;
16650 uint32_t maxDescriptorSetUpdateAfterBindSamplers;
16651 uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
16652 uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
16653 uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
16654 uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
16655 uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
16656 uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
16657 uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
16658 };
16659 static_assert( sizeof( PhysicalDeviceDescriptorIndexingPropertiesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingPropertiesEXT ), "struct and wrapper have different size!" );
16660
16661 struct DescriptorSetVariableDescriptorCountAllocateInfoEXT
16662 {
16663 DescriptorSetVariableDescriptorCountAllocateInfoEXT( uint32_t descriptorSetCount_ = 0,
16664 const uint32_t* pDescriptorCounts_ = nullptr )
16665 : descriptorSetCount( descriptorSetCount_ )
16666 , pDescriptorCounts( pDescriptorCounts_ )
16667 {
16668 }
16669
16670 DescriptorSetVariableDescriptorCountAllocateInfoEXT( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
16671 {
16672 memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
16673 }
16674
16675 DescriptorSetVariableDescriptorCountAllocateInfoEXT& operator=( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
16676 {
16677 memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
16678 return *this;
16679 }
16680 DescriptorSetVariableDescriptorCountAllocateInfoEXT& setPNext( const void* pNext_ )
16681 {
16682 pNext = pNext_;
16683 return *this;
16684 }
16685
16686 DescriptorSetVariableDescriptorCountAllocateInfoEXT& setDescriptorSetCount( uint32_t descriptorSetCount_ )
16687 {
16688 descriptorSetCount = descriptorSetCount_;
16689 return *this;
16690 }
16691
16692 DescriptorSetVariableDescriptorCountAllocateInfoEXT& setPDescriptorCounts( const uint32_t* pDescriptorCounts_ )
16693 {
16694 pDescriptorCounts = pDescriptorCounts_;
16695 return *this;
16696 }
16697
16698 operator const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT&() const
16699 {
16700 return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*>(this);
16701 }
16702
16703 bool operator==( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const
16704 {
16705 return ( sType == rhs.sType )
16706 && ( pNext == rhs.pNext )
16707 && ( descriptorSetCount == rhs.descriptorSetCount )
16708 && ( pDescriptorCounts == rhs.pDescriptorCounts );
16709 }
16710
16711 bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const
16712 {
16713 return !operator==( rhs );
16714 }
16715
16716 private:
16717 StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT;
16718
16719 public:
16720 const void* pNext = nullptr;
16721 uint32_t descriptorSetCount;
16722 const uint32_t* pDescriptorCounts;
16723 };
16724 static_assert( sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT ), "struct and wrapper have different size!" );
16725
16726 struct DescriptorSetVariableDescriptorCountLayoutSupportEXT
16727 {
16728 operator const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT&() const
16729 {
16730 return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT*>(this);
16731 }
16732
16733 bool operator==( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const
16734 {
16735 return ( sType == rhs.sType )
16736 && ( pNext == rhs.pNext )
16737 && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount );
16738 }
16739
16740 bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const
16741 {
16742 return !operator==( rhs );
16743 }
16744
16745 private:
16746 StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT;
16747
16748 public:
16749 void* pNext = nullptr;
16750 uint32_t maxVariableDescriptorCount;
16751 };
16752 static_assert( sizeof( DescriptorSetVariableDescriptorCountLayoutSupportEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT ), "struct and wrapper have different size!" );
16753
16754 struct SubpassEndInfoKHR
16755 {
16756 SubpassEndInfoKHR( )
16757 {
16758 }
16759
16760 SubpassEndInfoKHR( VkSubpassEndInfoKHR const & rhs )
16761 {
16762 memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
16763 }
16764
16765 SubpassEndInfoKHR& operator=( VkSubpassEndInfoKHR const & rhs )
16766 {
16767 memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
16768 return *this;
16769 }
16770 SubpassEndInfoKHR& setPNext( const void* pNext_ )
16771 {
16772 pNext = pNext_;
16773 return *this;
16774 }
16775
16776 operator const VkSubpassEndInfoKHR&() const
16777 {
16778 return *reinterpret_cast<const VkSubpassEndInfoKHR*>(this);
16779 }
16780
16781 bool operator==( SubpassEndInfoKHR const& rhs ) const
16782 {
16783 return ( sType == rhs.sType )
16784 && ( pNext == rhs.pNext );
16785 }
16786
16787 bool operator!=( SubpassEndInfoKHR const& rhs ) const
16788 {
16789 return !operator==( rhs );
16790 }
16791
16792 private:
16793 StructureType sType = StructureType::eSubpassEndInfoKHR;
16794
16795 public:
16796 const void* pNext = nullptr;
16797 };
16798 static_assert( sizeof( SubpassEndInfoKHR ) == sizeof( VkSubpassEndInfoKHR ), "struct and wrapper have different size!" );
16799
16800 struct PipelineVertexInputDivisorStateCreateInfoEXT
16801 {
16802 PipelineVertexInputDivisorStateCreateInfoEXT( uint32_t vertexBindingDivisorCount_ = 0,
16803 const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ = nullptr )
16804 : vertexBindingDivisorCount( vertexBindingDivisorCount_ )
16805 , pVertexBindingDivisors( pVertexBindingDivisors_ )
16806 {
16807 }
16808
16809 PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
16810 {
16811 memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
16812 }
16813
16814 PipelineVertexInputDivisorStateCreateInfoEXT& operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
16815 {
16816 memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
16817 return *this;
16818 }
16819 PipelineVertexInputDivisorStateCreateInfoEXT& setPNext( const void* pNext_ )
16820 {
16821 pNext = pNext_;
16822 return *this;
16823 }
16824
16825 PipelineVertexInputDivisorStateCreateInfoEXT& setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ )
16826 {
16827 vertexBindingDivisorCount = vertexBindingDivisorCount_;
16828 return *this;
16829 }
16830
16831 PipelineVertexInputDivisorStateCreateInfoEXT& setPVertexBindingDivisors( const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ )
16832 {
16833 pVertexBindingDivisors = pVertexBindingDivisors_;
16834 return *this;
16835 }
16836
16837 operator const VkPipelineVertexInputDivisorStateCreateInfoEXT&() const
16838 {
16839 return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>(this);
16840 }
16841
16842 bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const
16843 {
16844 return ( sType == rhs.sType )
16845 && ( pNext == rhs.pNext )
16846 && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount )
16847 && ( pVertexBindingDivisors == rhs.pVertexBindingDivisors );
16848 }
16849
16850 bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const
16851 {
16852 return !operator==( rhs );
16853 }
16854
16855 private:
16856 StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
16857
16858 public:
16859 const void* pNext = nullptr;
16860 uint32_t vertexBindingDivisorCount;
16861 const VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors;
16862 };
16863 static_assert( sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), "struct and wrapper have different size!" );
16864
16865 struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
16866 {
16867 PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = 0 )
16868 : maxVertexAttribDivisor( maxVertexAttribDivisor_ )
16869 {
16870 }
16871
16872 PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs )
16873 {
16874 memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) );
16875 }
16876
16877 PhysicalDeviceVertexAttributeDivisorPropertiesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs )
16878 {
16879 memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) );
16880 return *this;
16881 }
16882 PhysicalDeviceVertexAttributeDivisorPropertiesEXT& setPNext( void* pNext_ )
16883 {
16884 pNext = pNext_;
16885 return *this;
16886 }
16887
16888 PhysicalDeviceVertexAttributeDivisorPropertiesEXT& setMaxVertexAttribDivisor( uint32_t maxVertexAttribDivisor_ )
16889 {
16890 maxVertexAttribDivisor = maxVertexAttribDivisor_;
16891 return *this;
16892 }
16893
16894 operator const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&() const
16895 {
16896 return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(this);
16897 }
16898
16899 bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const
16900 {
16901 return ( sType == rhs.sType )
16902 && ( pNext == rhs.pNext )
16903 && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor );
16904 }
16905
16906 bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const
16907 {
16908 return !operator==( rhs );
16909 }
16910
16911 private:
16912 StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
16913
16914 public:
16915 void* pNext = nullptr;
16916 uint32_t maxVertexAttribDivisor;
16917 };
16918 static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), "struct and wrapper have different size!" );
16919
16920#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
16921 struct ImportAndroidHardwareBufferInfoANDROID
16922 {
16923 ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer* buffer_ = nullptr )
16924 : buffer( buffer_ )
16925 {
16926 }
16927
16928 ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
16929 {
16930 memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
16931 }
16932
16933 ImportAndroidHardwareBufferInfoANDROID& operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
16934 {
16935 memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
16936 return *this;
16937 }
16938 ImportAndroidHardwareBufferInfoANDROID& setPNext( const void* pNext_ )
16939 {
16940 pNext = pNext_;
16941 return *this;
16942 }
16943
16944 ImportAndroidHardwareBufferInfoANDROID& setBuffer( struct AHardwareBuffer* buffer_ )
16945 {
16946 buffer = buffer_;
16947 return *this;
16948 }
16949
16950 operator const VkImportAndroidHardwareBufferInfoANDROID&() const
16951 {
16952 return *reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID*>(this);
16953 }
16954
16955 bool operator==( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const
16956 {
16957 return ( sType == rhs.sType )
16958 && ( pNext == rhs.pNext )
16959 && ( buffer == rhs.buffer );
16960 }
16961
16962 bool operator!=( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const
16963 {
16964 return !operator==( rhs );
16965 }
16966
16967 private:
16968 StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID;
16969
16970 public:
16971 const void* pNext = nullptr;
16972 struct AHardwareBuffer* buffer;
16973 };
16974 static_assert( sizeof( ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" );
16975#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
16976
16977#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
16978 struct AndroidHardwareBufferUsageANDROID
16979 {
16980 operator const VkAndroidHardwareBufferUsageANDROID&() const
16981 {
16982 return *reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID*>(this);
16983 }
16984
16985 bool operator==( AndroidHardwareBufferUsageANDROID const& rhs ) const
16986 {
16987 return ( sType == rhs.sType )
16988 && ( pNext == rhs.pNext )
16989 && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage );
16990 }
16991
16992 bool operator!=( AndroidHardwareBufferUsageANDROID const& rhs ) const
16993 {
16994 return !operator==( rhs );
16995 }
16996
16997 private:
16998 StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID;
16999
17000 public:
17001 void* pNext = nullptr;
17002 uint64_t androidHardwareBufferUsage;
17003 };
17004 static_assert( sizeof( AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), "struct and wrapper have different size!" );
17005#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
17006
17007#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
17008 struct AndroidHardwareBufferPropertiesANDROID
17009 {
17010 operator const VkAndroidHardwareBufferPropertiesANDROID&() const
17011 {
17012 return *reinterpret_cast<const VkAndroidHardwareBufferPropertiesANDROID*>(this);
17013 }
17014
17015 bool operator==( AndroidHardwareBufferPropertiesANDROID const& rhs ) const
17016 {
17017 return ( sType == rhs.sType )
17018 && ( pNext == rhs.pNext )
17019 && ( allocationSize == rhs.allocationSize )
17020 && ( memoryTypeBits == rhs.memoryTypeBits );
17021 }
17022
17023 bool operator!=( AndroidHardwareBufferPropertiesANDROID const& rhs ) const
17024 {
17025 return !operator==( rhs );
17026 }
17027
17028 private:
17029 StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID;
17030
17031 public:
17032 void* pNext = nullptr;
17033 DeviceSize allocationSize;
17034 uint32_t memoryTypeBits;
17035 };
17036 static_assert( sizeof( AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), "struct and wrapper have different size!" );
17037#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
17038
17039#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
17040 struct MemoryGetAndroidHardwareBufferInfoANDROID
17041 {
17042 MemoryGetAndroidHardwareBufferInfoANDROID( DeviceMemory memory_ = DeviceMemory() )
17043 : memory( memory_ )
17044 {
17045 }
17046
17047 MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
17048 {
17049 memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
17050 }
17051
17052 MemoryGetAndroidHardwareBufferInfoANDROID& operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
17053 {
17054 memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
17055 return *this;
17056 }
17057 MemoryGetAndroidHardwareBufferInfoANDROID& setPNext( const void* pNext_ )
17058 {
17059 pNext = pNext_;
17060 return *this;
17061 }
17062
17063 MemoryGetAndroidHardwareBufferInfoANDROID& setMemory( DeviceMemory memory_ )
17064 {
17065 memory = memory_;
17066 return *this;
17067 }
17068
17069 operator const VkMemoryGetAndroidHardwareBufferInfoANDROID&() const
17070 {
17071 return *reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>(this);
17072 }
17073
17074 bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const
17075 {
17076 return ( sType == rhs.sType )
17077 && ( pNext == rhs.pNext )
17078 && ( memory == rhs.memory );
17079 }
17080
17081 bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const
17082 {
17083 return !operator==( rhs );
17084 }
17085
17086 private:
17087 StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
17088
17089 public:
17090 const void* pNext = nullptr;
17091 DeviceMemory memory;
17092 };
17093 static_assert( sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" );
17094#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
17095
17096 struct CommandBufferInheritanceConditionalRenderingInfoEXT
17097 {
17098 CommandBufferInheritanceConditionalRenderingInfoEXT( Bool32 conditionalRenderingEnable_ = 0 )
17099 : conditionalRenderingEnable( conditionalRenderingEnable_ )
17100 {
17101 }
17102
17103 CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
17104 {
17105 memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
17106 }
17107
17108 CommandBufferInheritanceConditionalRenderingInfoEXT& operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
17109 {
17110 memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
17111 return *this;
17112 }
17113 CommandBufferInheritanceConditionalRenderingInfoEXT& setPNext( const void* pNext_ )
17114 {
17115 pNext = pNext_;
17116 return *this;
17117 }
17118
17119 CommandBufferInheritanceConditionalRenderingInfoEXT& setConditionalRenderingEnable( Bool32 conditionalRenderingEnable_ )
17120 {
17121 conditionalRenderingEnable = conditionalRenderingEnable_;
17122 return *this;
17123 }
17124
17125 operator const VkCommandBufferInheritanceConditionalRenderingInfoEXT&() const
17126 {
17127 return *reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(this);
17128 }
17129
17130 bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const
17131 {
17132 return ( sType == rhs.sType )
17133 && ( pNext == rhs.pNext )
17134 && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable );
17135 }
17136
17137 bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const
17138 {
17139 return !operator==( rhs );
17140 }
17141
17142 private:
17143 StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
17144
17145 public:
17146 const void* pNext = nullptr;
17147 Bool32 conditionalRenderingEnable;
17148 };
17149 static_assert( sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) == sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), "struct and wrapper have different size!" );
17150
17151#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
17152 struct ExternalFormatANDROID
17153 {
17154 ExternalFormatANDROID( uint64_t externalFormat_ = 0 )
17155 : externalFormat( externalFormat_ )
17156 {
17157 }
17158
17159 ExternalFormatANDROID( VkExternalFormatANDROID const & rhs )
17160 {
17161 memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
17162 }
17163
17164 ExternalFormatANDROID& operator=( VkExternalFormatANDROID const & rhs )
17165 {
17166 memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
17167 return *this;
17168 }
17169 ExternalFormatANDROID& setPNext( void* pNext_ )
17170 {
17171 pNext = pNext_;
17172 return *this;
17173 }
17174
17175 ExternalFormatANDROID& setExternalFormat( uint64_t externalFormat_ )
17176 {
17177 externalFormat = externalFormat_;
17178 return *this;
17179 }
17180
17181 operator const VkExternalFormatANDROID&() const
17182 {
17183 return *reinterpret_cast<const VkExternalFormatANDROID*>(this);
17184 }
17185
17186 bool operator==( ExternalFormatANDROID const& rhs ) const
17187 {
17188 return ( sType == rhs.sType )
17189 && ( pNext == rhs.pNext )
17190 && ( externalFormat == rhs.externalFormat );
17191 }
17192
17193 bool operator!=( ExternalFormatANDROID const& rhs ) const
17194 {
17195 return !operator==( rhs );
17196 }
17197
17198 private:
17199 StructureType sType = StructureType::eExternalFormatANDROID;
17200
17201 public:
17202 void* pNext = nullptr;
17203 uint64_t externalFormat;
17204 };
17205 static_assert( sizeof( ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), "struct and wrapper have different size!" );
17206#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
17207
17208 struct PhysicalDevice8BitStorageFeaturesKHR
17209 {
17210 PhysicalDevice8BitStorageFeaturesKHR( Bool32 storageBuffer8BitAccess_ = 0,
17211 Bool32 uniformAndStorageBuffer8BitAccess_ = 0,
17212 Bool32 storagePushConstant8_ = 0 )
17213 : storageBuffer8BitAccess( storageBuffer8BitAccess_ )
17214 , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ )
17215 , storagePushConstant8( storagePushConstant8_ )
17216 {
17217 }
17218
17219 PhysicalDevice8BitStorageFeaturesKHR( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
17220 {
17221 memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
17222 }
17223
17224 PhysicalDevice8BitStorageFeaturesKHR& operator=( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
17225 {
17226 memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
17227 return *this;
17228 }
17229 PhysicalDevice8BitStorageFeaturesKHR& setPNext( void* pNext_ )
17230 {
17231 pNext = pNext_;
17232 return *this;
17233 }
17234
17235 PhysicalDevice8BitStorageFeaturesKHR& setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ )
17236 {
17237 storageBuffer8BitAccess = storageBuffer8BitAccess_;
17238 return *this;
17239 }
17240
17241 PhysicalDevice8BitStorageFeaturesKHR& setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ )
17242 {
17243 uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
17244 return *this;
17245 }
17246
17247 PhysicalDevice8BitStorageFeaturesKHR& setStoragePushConstant8( Bool32 storagePushConstant8_ )
17248 {
17249 storagePushConstant8 = storagePushConstant8_;
17250 return *this;
17251 }
17252
17253 operator const VkPhysicalDevice8BitStorageFeaturesKHR&() const
17254 {
17255 return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeaturesKHR*>(this);
17256 }
17257
17258 bool operator==( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const
17259 {
17260 return ( sType == rhs.sType )
17261 && ( pNext == rhs.pNext )
17262 && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess )
17263 && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess )
17264 && ( storagePushConstant8 == rhs.storagePushConstant8 );
17265 }
17266
17267 bool operator!=( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const
17268 {
17269 return !operator==( rhs );
17270 }
17271
17272 private:
17273 StructureType sType = StructureType::ePhysicalDevice8BitStorageFeaturesKHR;
17274
17275 public:
17276 void* pNext = nullptr;
17277 Bool32 storageBuffer8BitAccess;
17278 Bool32 uniformAndStorageBuffer8BitAccess;
17279 Bool32 storagePushConstant8;
17280 };
17281 static_assert( sizeof( PhysicalDevice8BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice8BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
17282
17283 struct PhysicalDeviceConditionalRenderingFeaturesEXT
17284 {
17285 PhysicalDeviceConditionalRenderingFeaturesEXT( Bool32 conditionalRendering_ = 0,
17286 Bool32 inheritedConditionalRendering_ = 0 )
17287 : conditionalRendering( conditionalRendering_ )
17288 , inheritedConditionalRendering( inheritedConditionalRendering_ )
17289 {
17290 }
17291
17292 PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
17293 {
17294 memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
17295 }
17296
17297 PhysicalDeviceConditionalRenderingFeaturesEXT& operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
17298 {
17299 memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
17300 return *this;
17301 }
17302 PhysicalDeviceConditionalRenderingFeaturesEXT& setPNext( void* pNext_ )
17303 {
17304 pNext = pNext_;
17305 return *this;
17306 }
17307
17308 PhysicalDeviceConditionalRenderingFeaturesEXT& setConditionalRendering( Bool32 conditionalRendering_ )
17309 {
17310 conditionalRendering = conditionalRendering_;
17311 return *this;
17312 }
17313
17314 PhysicalDeviceConditionalRenderingFeaturesEXT& setInheritedConditionalRendering( Bool32 inheritedConditionalRendering_ )
17315 {
17316 inheritedConditionalRendering = inheritedConditionalRendering_;
17317 return *this;
17318 }
17319
17320 operator const VkPhysicalDeviceConditionalRenderingFeaturesEXT&() const
17321 {
17322 return *reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(this);
17323 }
17324
17325 bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const
17326 {
17327 return ( sType == rhs.sType )
17328 && ( pNext == rhs.pNext )
17329 && ( conditionalRendering == rhs.conditionalRendering )
17330 && ( inheritedConditionalRendering == rhs.inheritedConditionalRendering );
17331 }
17332
17333 bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const
17334 {
17335 return !operator==( rhs );
17336 }
17337
17338 private:
17339 StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
17340
17341 public:
17342 void* pNext = nullptr;
17343 Bool32 conditionalRendering;
17344 Bool32 inheritedConditionalRendering;
17345 };
17346 static_assert( sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) == sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), "struct and wrapper have different size!" );
17347
17348 enum class SubpassContents
17349 {
17350 eInline = VK_SUBPASS_CONTENTS_INLINE,
17351 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
17352 };
17353
17354 struct SubpassBeginInfoKHR
17355 {
17356 SubpassBeginInfoKHR( SubpassContents contents_ = SubpassContents::eInline )
17357 : contents( contents_ )
17358 {
17359 }
17360
17361 SubpassBeginInfoKHR( VkSubpassBeginInfoKHR const & rhs )
17362 {
17363 memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
17364 }
17365
17366 SubpassBeginInfoKHR& operator=( VkSubpassBeginInfoKHR const & rhs )
17367 {
17368 memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
17369 return *this;
17370 }
17371 SubpassBeginInfoKHR& setPNext( const void* pNext_ )
17372 {
17373 pNext = pNext_;
17374 return *this;
17375 }
17376
17377 SubpassBeginInfoKHR& setContents( SubpassContents contents_ )
17378 {
17379 contents = contents_;
17380 return *this;
17381 }
17382
17383 operator const VkSubpassBeginInfoKHR&() const
17384 {
17385 return *reinterpret_cast<const VkSubpassBeginInfoKHR*>(this);
17386 }
17387
17388 bool operator==( SubpassBeginInfoKHR const& rhs ) const
17389 {
17390 return ( sType == rhs.sType )
17391 && ( pNext == rhs.pNext )
17392 && ( contents == rhs.contents );
17393 }
17394
17395 bool operator!=( SubpassBeginInfoKHR const& rhs ) const
17396 {
17397 return !operator==( rhs );
17398 }
17399
17400 private:
17401 StructureType sType = StructureType::eSubpassBeginInfoKHR;
17402
17403 public:
17404 const void* pNext = nullptr;
17405 SubpassContents contents;
17406 };
17407 static_assert( sizeof( SubpassBeginInfoKHR ) == sizeof( VkSubpassBeginInfoKHR ), "struct and wrapper have different size!" );
17408
17409 struct PresentInfoKHR
17410 {
17411 PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0,
17412 const Semaphore* pWaitSemaphores_ = nullptr,
17413 uint32_t swapchainCount_ = 0,
17414 const SwapchainKHR* pSwapchains_ = nullptr,
17415 const uint32_t* pImageIndices_ = nullptr,
17416 Result* pResults_ = nullptr )
17417 : waitSemaphoreCount( waitSemaphoreCount_ )
17418 , pWaitSemaphores( pWaitSemaphores_ )
17419 , swapchainCount( swapchainCount_ )
17420 , pSwapchains( pSwapchains_ )
17421 , pImageIndices( pImageIndices_ )
17422 , pResults( pResults_ )
17423 {
17424 }
17425
17426 PresentInfoKHR( VkPresentInfoKHR const & rhs )
17427 {
17428 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
17429 }
17430
17431 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
17432 {
17433 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
17434 return *this;
17435 }
17436 PresentInfoKHR& setPNext( const void* pNext_ )
17437 {
17438 pNext = pNext_;
17439 return *this;
17440 }
17441
17442 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17443 {
17444 waitSemaphoreCount = waitSemaphoreCount_;
17445 return *this;
17446 }
17447
17448 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
17449 {
17450 pWaitSemaphores = pWaitSemaphores_;
17451 return *this;
17452 }
17453
17454 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
17455 {
17456 swapchainCount = swapchainCount_;
17457 return *this;
17458 }
17459
17460 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
17461 {
17462 pSwapchains = pSwapchains_;
17463 return *this;
17464 }
17465
17466 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
17467 {
17468 pImageIndices = pImageIndices_;
17469 return *this;
17470 }
17471
17472 PresentInfoKHR& setPResults( Result* pResults_ )
17473 {
17474 pResults = pResults_;
17475 return *this;
17476 }
17477
17478 operator const VkPresentInfoKHR&() const
17479 {
17480 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
17481 }
17482
17483 bool operator==( PresentInfoKHR const& rhs ) const
17484 {
17485 return ( sType == rhs.sType )
17486 && ( pNext == rhs.pNext )
17487 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
17488 && ( pWaitSemaphores == rhs.pWaitSemaphores )
17489 && ( swapchainCount == rhs.swapchainCount )
17490 && ( pSwapchains == rhs.pSwapchains )
17491 && ( pImageIndices == rhs.pImageIndices )
17492 && ( pResults == rhs.pResults );
17493 }
17494
17495 bool operator!=( PresentInfoKHR const& rhs ) const
17496 {
17497 return !operator==( rhs );
17498 }
17499
17500 private:
17501 StructureType sType = StructureType::ePresentInfoKHR;
17502
17503 public:
17504 const void* pNext = nullptr;
17505 uint32_t waitSemaphoreCount;
17506 const Semaphore* pWaitSemaphores;
17507 uint32_t swapchainCount;
17508 const SwapchainKHR* pSwapchains;
17509 const uint32_t* pImageIndices;
17510 Result* pResults;
17511 };
17512 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
17513
17514 enum class DynamicState
17515 {
17516 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
17517 eScissor = VK_DYNAMIC_STATE_SCISSOR,
17518 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
17519 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
17520 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
17521 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
17522 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
17523 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
17524 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
17525 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
17526 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
17527 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
17528 };
17529
17530 struct PipelineDynamicStateCreateInfo
17531 {
17532 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(),
17533 uint32_t dynamicStateCount_ = 0,
17534 const DynamicState* pDynamicStates_ = nullptr )
17535 : flags( flags_ )
17536 , dynamicStateCount( dynamicStateCount_ )
17537 , pDynamicStates( pDynamicStates_ )
17538 {
17539 }
17540
17541 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
17542 {
17543 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
17544 }
17545
17546 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
17547 {
17548 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
17549 return *this;
17550 }
17551 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
17552 {
17553 pNext = pNext_;
17554 return *this;
17555 }
17556
17557 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
17558 {
17559 flags = flags_;
17560 return *this;
17561 }
17562
17563 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
17564 {
17565 dynamicStateCount = dynamicStateCount_;
17566 return *this;
17567 }
17568
17569 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
17570 {
17571 pDynamicStates = pDynamicStates_;
17572 return *this;
17573 }
17574
17575 operator const VkPipelineDynamicStateCreateInfo&() const
17576 {
17577 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
17578 }
17579
17580 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
17581 {
17582 return ( sType == rhs.sType )
17583 && ( pNext == rhs.pNext )
17584 && ( flags == rhs.flags )
17585 && ( dynamicStateCount == rhs.dynamicStateCount )
17586 && ( pDynamicStates == rhs.pDynamicStates );
17587 }
17588
17589 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
17590 {
17591 return !operator==( rhs );
17592 }
17593
17594 private:
17595 StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
17596
17597 public:
17598 const void* pNext = nullptr;
17599 PipelineDynamicStateCreateFlags flags;
17600 uint32_t dynamicStateCount;
17601 const DynamicState* pDynamicStates;
17602 };
17603 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
17604
17605 enum class DescriptorUpdateTemplateType
17606 {
17607 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
17608 eDescriptorSetKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
17609 ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
17610 };
17611
17612 struct DescriptorUpdateTemplateCreateInfo
17613 {
17614 DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateFlags flags_ = DescriptorUpdateTemplateCreateFlags(),
17615 uint32_t descriptorUpdateEntryCount_ = 0,
17616 const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ = nullptr,
17617 DescriptorUpdateTemplateType templateType_ = DescriptorUpdateTemplateType::eDescriptorSet,
17618 DescriptorSetLayout descriptorSetLayout_ = DescriptorSetLayout(),
17619 PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
17620 PipelineLayout pipelineLayout_ = PipelineLayout(),
17621 uint32_t set_ = 0 )
17622 : flags( flags_ )
17623 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
17624 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
17625 , templateType( templateType_ )
17626 , descriptorSetLayout( descriptorSetLayout_ )
17627 , pipelineBindPoint( pipelineBindPoint_ )
17628 , pipelineLayout( pipelineLayout_ )
17629 , set( set_ )
17630 {
17631 }
17632
17633 DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs )
17634 {
17635 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
17636 }
17637
17638 DescriptorUpdateTemplateCreateInfo& operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs )
17639 {
17640 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
17641 return *this;
17642 }
17643 DescriptorUpdateTemplateCreateInfo& setPNext( void* pNext_ )
17644 {
17645 pNext = pNext_;
17646 return *this;
17647 }
17648
17649 DescriptorUpdateTemplateCreateInfo& setFlags( DescriptorUpdateTemplateCreateFlags flags_ )
17650 {
17651 flags = flags_;
17652 return *this;
17653 }
17654
17655 DescriptorUpdateTemplateCreateInfo& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
17656 {
17657 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
17658 return *this;
17659 }
17660
17661 DescriptorUpdateTemplateCreateInfo& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ )
17662 {
17663 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
17664 return *this;
17665 }
17666
17667 DescriptorUpdateTemplateCreateInfo& setTemplateType( DescriptorUpdateTemplateType templateType_ )
17668 {
17669 templateType = templateType_;
17670 return *this;
17671 }
17672
17673 DescriptorUpdateTemplateCreateInfo& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
17674 {
17675 descriptorSetLayout = descriptorSetLayout_;
17676 return *this;
17677 }
17678
17679 DescriptorUpdateTemplateCreateInfo& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
17680 {
17681 pipelineBindPoint = pipelineBindPoint_;
17682 return *this;
17683 }
17684
17685 DescriptorUpdateTemplateCreateInfo& setPipelineLayout( PipelineLayout pipelineLayout_ )
17686 {
17687 pipelineLayout = pipelineLayout_;
17688 return *this;
17689 }
17690
17691 DescriptorUpdateTemplateCreateInfo& setSet( uint32_t set_ )
17692 {
17693 set = set_;
17694 return *this;
17695 }
17696
17697 operator const VkDescriptorUpdateTemplateCreateInfo&() const
17698 {
17699 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>(this);
17700 }
17701
17702 bool operator==( DescriptorUpdateTemplateCreateInfo const& rhs ) const
17703 {
17704 return ( sType == rhs.sType )
17705 && ( pNext == rhs.pNext )
17706 && ( flags == rhs.flags )
17707 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
17708 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
17709 && ( templateType == rhs.templateType )
17710 && ( descriptorSetLayout == rhs.descriptorSetLayout )
17711 && ( pipelineBindPoint == rhs.pipelineBindPoint )
17712 && ( pipelineLayout == rhs.pipelineLayout )
17713 && ( set == rhs.set );
17714 }
17715
17716 bool operator!=( DescriptorUpdateTemplateCreateInfo const& rhs ) const
17717 {
17718 return !operator==( rhs );
17719 }
17720
17721 private:
17722 StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo;
17723
17724 public:
17725 void* pNext = nullptr;
17726 DescriptorUpdateTemplateCreateFlags flags;
17727 uint32_t descriptorUpdateEntryCount;
17728 const DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
17729 DescriptorUpdateTemplateType templateType;
17730 DescriptorSetLayout descriptorSetLayout;
17731 PipelineBindPoint pipelineBindPoint;
17732 PipelineLayout pipelineLayout;
17733 uint32_t set;
17734 };
17735 static_assert( sizeof( DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), "struct and wrapper have different size!" );
17736
17737 using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
17738
17739 enum class ObjectType
17740 {
17741 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
17742 eInstance = VK_OBJECT_TYPE_INSTANCE,
17743 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
17744 eDevice = VK_OBJECT_TYPE_DEVICE,
17745 eQueue = VK_OBJECT_TYPE_QUEUE,
17746 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
17747 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
17748 eFence = VK_OBJECT_TYPE_FENCE,
17749 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
17750 eBuffer = VK_OBJECT_TYPE_BUFFER,
17751 eImage = VK_OBJECT_TYPE_IMAGE,
17752 eEvent = VK_OBJECT_TYPE_EVENT,
17753 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
17754 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
17755 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
17756 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
17757 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
17758 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
17759 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
17760 ePipeline = VK_OBJECT_TYPE_PIPELINE,
17761 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
17762 eSampler = VK_OBJECT_TYPE_SAMPLER,
17763 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
17764 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
17765 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
17766 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
17767 eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
17768 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
17769 eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
17770 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
17771 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
17772 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
17773 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
17774 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
17775 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
17776 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
17777 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
17778 eDebugUtilsMessengerEXT = VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,
17779 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
17780 };
17781
17782 struct DebugUtilsObjectNameInfoEXT
17783 {
17784 DebugUtilsObjectNameInfoEXT( ObjectType objectType_ = ObjectType::eUnknown,
17785 uint64_t objectHandle_ = 0,
17786 const char* pObjectName_ = nullptr )
17787 : objectType( objectType_ )
17788 , objectHandle( objectHandle_ )
17789 , pObjectName( pObjectName_ )
17790 {
17791 }
17792
17793 DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs )
17794 {
17795 memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
17796 }
17797
17798 DebugUtilsObjectNameInfoEXT& operator=( VkDebugUtilsObjectNameInfoEXT const & rhs )
17799 {
17800 memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
17801 return *this;
17802 }
17803 DebugUtilsObjectNameInfoEXT& setPNext( const void* pNext_ )
17804 {
17805 pNext = pNext_;
17806 return *this;
17807 }
17808
17809 DebugUtilsObjectNameInfoEXT& setObjectType( ObjectType objectType_ )
17810 {
17811 objectType = objectType_;
17812 return *this;
17813 }
17814
17815 DebugUtilsObjectNameInfoEXT& setObjectHandle( uint64_t objectHandle_ )
17816 {
17817 objectHandle = objectHandle_;
17818 return *this;
17819 }
17820
17821 DebugUtilsObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
17822 {
17823 pObjectName = pObjectName_;
17824 return *this;
17825 }
17826
17827 operator const VkDebugUtilsObjectNameInfoEXT&() const
17828 {
17829 return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>(this);
17830 }
17831
17832 bool operator==( DebugUtilsObjectNameInfoEXT const& rhs ) const
17833 {
17834 return ( sType == rhs.sType )
17835 && ( pNext == rhs.pNext )
17836 && ( objectType == rhs.objectType )
17837 && ( objectHandle == rhs.objectHandle )
17838 && ( pObjectName == rhs.pObjectName );
17839 }
17840
17841 bool operator!=( DebugUtilsObjectNameInfoEXT const& rhs ) const
17842 {
17843 return !operator==( rhs );
17844 }
17845
17846 private:
17847 StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT;
17848
17849 public:
17850 const void* pNext = nullptr;
17851 ObjectType objectType;
17852 uint64_t objectHandle;
17853 const char* pObjectName;
17854 };
17855 static_assert( sizeof( DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), "struct and wrapper have different size!" );
17856
17857 struct DebugUtilsObjectTagInfoEXT
17858 {
17859 DebugUtilsObjectTagInfoEXT( ObjectType objectType_ = ObjectType::eUnknown,
17860 uint64_t objectHandle_ = 0,
17861 uint64_t tagName_ = 0,
17862 size_t tagSize_ = 0,
17863 const void* pTag_ = nullptr )
17864 : objectType( objectType_ )
17865 , objectHandle( objectHandle_ )
17866 , tagName( tagName_ )
17867 , tagSize( tagSize_ )
17868 , pTag( pTag_ )
17869 {
17870 }
17871
17872 DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs )
17873 {
17874 memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
17875 }
17876
17877 DebugUtilsObjectTagInfoEXT& operator=( VkDebugUtilsObjectTagInfoEXT const & rhs )
17878 {
17879 memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
17880 return *this;
17881 }
17882 DebugUtilsObjectTagInfoEXT& setPNext( const void* pNext_ )
17883 {
17884 pNext = pNext_;
17885 return *this;
17886 }
17887
17888 DebugUtilsObjectTagInfoEXT& setObjectType( ObjectType objectType_ )
17889 {
17890 objectType = objectType_;
17891 return *this;
17892 }
17893
17894 DebugUtilsObjectTagInfoEXT& setObjectHandle( uint64_t objectHandle_ )
17895 {
17896 objectHandle = objectHandle_;
17897 return *this;
17898 }
17899
17900 DebugUtilsObjectTagInfoEXT& setTagName( uint64_t tagName_ )
17901 {
17902 tagName = tagName_;
17903 return *this;
17904 }
17905
17906 DebugUtilsObjectTagInfoEXT& setTagSize( size_t tagSize_ )
17907 {
17908 tagSize = tagSize_;
17909 return *this;
17910 }
17911
17912 DebugUtilsObjectTagInfoEXT& setPTag( const void* pTag_ )
17913 {
17914 pTag = pTag_;
17915 return *this;
17916 }
17917
17918 operator const VkDebugUtilsObjectTagInfoEXT&() const
17919 {
17920 return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>(this);
17921 }
17922
17923 bool operator==( DebugUtilsObjectTagInfoEXT const& rhs ) const
17924 {
17925 return ( sType == rhs.sType )
17926 && ( pNext == rhs.pNext )
17927 && ( objectType == rhs.objectType )
17928 && ( objectHandle == rhs.objectHandle )
17929 && ( tagName == rhs.tagName )
17930 && ( tagSize == rhs.tagSize )
17931 && ( pTag == rhs.pTag );
17932 }
17933
17934 bool operator!=( DebugUtilsObjectTagInfoEXT const& rhs ) const
17935 {
17936 return !operator==( rhs );
17937 }
17938
17939 private:
17940 StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT;
17941
17942 public:
17943 const void* pNext = nullptr;
17944 ObjectType objectType;
17945 uint64_t objectHandle;
17946 uint64_t tagName;
17947 size_t tagSize;
17948 const void* pTag;
17949 };
17950 static_assert( sizeof( DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), "struct and wrapper have different size!" );
17951
17952 struct DebugUtilsMessengerCallbackDataEXT
17953 {
17954 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataFlagsEXT flags_ = DebugUtilsMessengerCallbackDataFlagsEXT(),
17955 const char* pMessageIdName_ = nullptr,
17956 int32_t messageIdNumber_ = 0,
17957 const char* pMessage_ = nullptr,
17958 uint32_t queueLabelCount_ = 0,
17959 DebugUtilsLabelEXT* pQueueLabels_ = nullptr,
17960 uint32_t cmdBufLabelCount_ = 0,
17961 DebugUtilsLabelEXT* pCmdBufLabels_ = nullptr,
17962 uint32_t objectCount_ = 0,
17963 DebugUtilsObjectNameInfoEXT* pObjects_ = nullptr )
17964 : flags( flags_ )
17965 , pMessageIdName( pMessageIdName_ )
17966 , messageIdNumber( messageIdNumber_ )
17967 , pMessage( pMessage_ )
17968 , queueLabelCount( queueLabelCount_ )
17969 , pQueueLabels( pQueueLabels_ )
17970 , cmdBufLabelCount( cmdBufLabelCount_ )
17971 , pCmdBufLabels( pCmdBufLabels_ )
17972 , objectCount( objectCount_ )
17973 , pObjects( pObjects_ )
17974 {
17975 }
17976
17977 DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
17978 {
17979 memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
17980 }
17981
17982 DebugUtilsMessengerCallbackDataEXT& operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
17983 {
17984 memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
17985 return *this;
17986 }
17987 DebugUtilsMessengerCallbackDataEXT& setPNext( const void* pNext_ )
17988 {
17989 pNext = pNext_;
17990 return *this;
17991 }
17992
17993 DebugUtilsMessengerCallbackDataEXT& setFlags( DebugUtilsMessengerCallbackDataFlagsEXT flags_ )
17994 {
17995 flags = flags_;
17996 return *this;
17997 }
17998
17999 DebugUtilsMessengerCallbackDataEXT& setPMessageIdName( const char* pMessageIdName_ )
18000 {
18001 pMessageIdName = pMessageIdName_;
18002 return *this;
18003 }
18004
18005 DebugUtilsMessengerCallbackDataEXT& setMessageIdNumber( int32_t messageIdNumber_ )
18006 {
18007 messageIdNumber = messageIdNumber_;
18008 return *this;
18009 }
18010
18011 DebugUtilsMessengerCallbackDataEXT& setPMessage( const char* pMessage_ )
18012 {
18013 pMessage = pMessage_;
18014 return *this;
18015 }
18016
18017 DebugUtilsMessengerCallbackDataEXT& setQueueLabelCount( uint32_t queueLabelCount_ )
18018 {
18019 queueLabelCount = queueLabelCount_;
18020 return *this;
18021 }
18022
18023 DebugUtilsMessengerCallbackDataEXT& setPQueueLabels( DebugUtilsLabelEXT* pQueueLabels_ )
18024 {
18025 pQueueLabels = pQueueLabels_;
18026 return *this;
18027 }
18028
18029 DebugUtilsMessengerCallbackDataEXT& setCmdBufLabelCount( uint32_t cmdBufLabelCount_ )
18030 {
18031 cmdBufLabelCount = cmdBufLabelCount_;
18032 return *this;
18033 }
18034
18035 DebugUtilsMessengerCallbackDataEXT& setPCmdBufLabels( DebugUtilsLabelEXT* pCmdBufLabels_ )
18036 {
18037 pCmdBufLabels = pCmdBufLabels_;
18038 return *this;
18039 }
18040
18041 DebugUtilsMessengerCallbackDataEXT& setObjectCount( uint32_t objectCount_ )
18042 {
18043 objectCount = objectCount_;
18044 return *this;
18045 }
18046
18047 DebugUtilsMessengerCallbackDataEXT& setPObjects( DebugUtilsObjectNameInfoEXT* pObjects_ )
18048 {
18049 pObjects = pObjects_;
18050 return *this;
18051 }
18052
18053 operator const VkDebugUtilsMessengerCallbackDataEXT&() const
18054 {
18055 return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>(this);
18056 }
18057
18058 bool operator==( DebugUtilsMessengerCallbackDataEXT const& rhs ) const
18059 {
18060 return ( sType == rhs.sType )
18061 && ( pNext == rhs.pNext )
18062 && ( flags == rhs.flags )
18063 && ( pMessageIdName == rhs.pMessageIdName )
18064 && ( messageIdNumber == rhs.messageIdNumber )
18065 && ( pMessage == rhs.pMessage )
18066 && ( queueLabelCount == rhs.queueLabelCount )
18067 && ( pQueueLabels == rhs.pQueueLabels )
18068 && ( cmdBufLabelCount == rhs.cmdBufLabelCount )
18069 && ( pCmdBufLabels == rhs.pCmdBufLabels )
18070 && ( objectCount == rhs.objectCount )
18071 && ( pObjects == rhs.pObjects );
18072 }
18073
18074 bool operator!=( DebugUtilsMessengerCallbackDataEXT const& rhs ) const
18075 {
18076 return !operator==( rhs );
18077 }
18078
18079 private:
18080 StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
18081
18082 public:
18083 const void* pNext = nullptr;
18084 DebugUtilsMessengerCallbackDataFlagsEXT flags;
18085 const char* pMessageIdName;
18086 int32_t messageIdNumber;
18087 const char* pMessage;
18088 uint32_t queueLabelCount;
18089 DebugUtilsLabelEXT* pQueueLabels;
18090 uint32_t cmdBufLabelCount;
18091 DebugUtilsLabelEXT* pCmdBufLabels;
18092 uint32_t objectCount;
18093 DebugUtilsObjectNameInfoEXT* pObjects;
18094 };
18095 static_assert( sizeof( DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), "struct and wrapper have different size!" );
18096
18097 enum class QueueFlagBits
18098 {
18099 eGraphics = VK_QUEUE_GRAPHICS_BIT,
18100 eCompute = VK_QUEUE_COMPUTE_BIT,
18101 eTransfer = VK_QUEUE_TRANSFER_BIT,
18102 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT,
18103 eProtected = VK_QUEUE_PROTECTED_BIT
18104 };
18105
18106 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
18107
18108 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
18109 {
18110 return QueueFlags( bit0 ) | bit1;
18111 }
18112
18113 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
18114 {
18115 return ~( QueueFlags( bits ) );
18116 }
18117
18118 template <> struct FlagTraits<QueueFlagBits>
18119 {
18120 enum
18121 {
18122 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding) | VkFlags(QueueFlagBits::eProtected)
18123 };
18124 };
18125
18126 struct QueueFamilyProperties
18127 {
18128 operator const VkQueueFamilyProperties&() const
18129 {
18130 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
18131 }
18132
18133 bool operator==( QueueFamilyProperties const& rhs ) const
18134 {
18135 return ( queueFlags == rhs.queueFlags )
18136 && ( queueCount == rhs.queueCount )
18137 && ( timestampValidBits == rhs.timestampValidBits )
18138 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
18139 }
18140
18141 bool operator!=( QueueFamilyProperties const& rhs ) const
18142 {
18143 return !operator==( rhs );
18144 }
18145
18146 QueueFlags queueFlags;
18147 uint32_t queueCount;
18148 uint32_t timestampValidBits;
18149 Extent3D minImageTransferGranularity;
18150 };
18151 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
18152
18153 struct QueueFamilyProperties2
18154 {
18155 operator const VkQueueFamilyProperties2&() const
18156 {
18157 return *reinterpret_cast<const VkQueueFamilyProperties2*>(this);
18158 }
18159
18160 bool operator==( QueueFamilyProperties2 const& rhs ) const
18161 {
18162 return ( sType == rhs.sType )
18163 && ( pNext == rhs.pNext )
18164 && ( queueFamilyProperties == rhs.queueFamilyProperties );
18165 }
18166
18167 bool operator!=( QueueFamilyProperties2 const& rhs ) const
18168 {
18169 return !operator==( rhs );
18170 }
18171
18172 private:
18173 StructureType sType = StructureType::eQueueFamilyProperties2;
18174
18175 public:
18176 void* pNext = nullptr;
18177 QueueFamilyProperties queueFamilyProperties;
18178 };
18179 static_assert( sizeof( QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), "struct and wrapper have different size!" );
18180
18181 using QueueFamilyProperties2KHR = QueueFamilyProperties2;
18182
18183 enum class DeviceQueueCreateFlagBits
18184 {
18185 eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
18186 };
18187
18188 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
18189
18190 VULKAN_HPP_INLINE DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 )
18191 {
18192 return DeviceQueueCreateFlags( bit0 ) | bit1;
18193 }
18194
18195 VULKAN_HPP_INLINE DeviceQueueCreateFlags operator~( DeviceQueueCreateFlagBits bits )
18196 {
18197 return ~( DeviceQueueCreateFlags( bits ) );
18198 }
18199
18200 template <> struct FlagTraits<DeviceQueueCreateFlagBits>
18201 {
18202 enum
18203 {
18204 allFlags = VkFlags(DeviceQueueCreateFlagBits::eProtected)
18205 };
18206 };
18207
18208 struct DeviceQueueCreateInfo
18209 {
18210 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(),
18211 uint32_t queueFamilyIndex_ = 0,
18212 uint32_t queueCount_ = 0,
18213 const float* pQueuePriorities_ = nullptr )
18214 : flags( flags_ )
18215 , queueFamilyIndex( queueFamilyIndex_ )
18216 , queueCount( queueCount_ )
18217 , pQueuePriorities( pQueuePriorities_ )
18218 {
18219 }
18220
18221 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
18222 {
18223 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
18224 }
18225
18226 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
18227 {
18228 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
18229 return *this;
18230 }
18231 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
18232 {
18233 pNext = pNext_;
18234 return *this;
18235 }
18236
18237 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
18238 {
18239 flags = flags_;
18240 return *this;
18241 }
18242
18243 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18244 {
18245 queueFamilyIndex = queueFamilyIndex_;
18246 return *this;
18247 }
18248
18249 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
18250 {
18251 queueCount = queueCount_;
18252 return *this;
18253 }
18254
18255 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
18256 {
18257 pQueuePriorities = pQueuePriorities_;
18258 return *this;
18259 }
18260
18261 operator const VkDeviceQueueCreateInfo&() const
18262 {
18263 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
18264 }
18265
18266 bool operator==( DeviceQueueCreateInfo const& rhs ) const
18267 {
18268 return ( sType == rhs.sType )
18269 && ( pNext == rhs.pNext )
18270 && ( flags == rhs.flags )
18271 && ( queueFamilyIndex == rhs.queueFamilyIndex )
18272 && ( queueCount == rhs.queueCount )
18273 && ( pQueuePriorities == rhs.pQueuePriorities );
18274 }
18275
18276 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
18277 {
18278 return !operator==( rhs );
18279 }
18280
18281 private:
18282 StructureType sType = StructureType::eDeviceQueueCreateInfo;
18283
18284 public:
18285 const void* pNext = nullptr;
18286 DeviceQueueCreateFlags flags;
18287 uint32_t queueFamilyIndex;
18288 uint32_t queueCount;
18289 const float* pQueuePriorities;
18290 };
18291 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
18292
18293 struct DeviceCreateInfo
18294 {
18295 DeviceCreateInfo( DeviceCreateFlags flags_ = DeviceCreateFlags(),
18296 uint32_t queueCreateInfoCount_ = 0,
18297 const DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr,
18298 uint32_t enabledLayerCount_ = 0,
18299 const char* const* ppEnabledLayerNames_ = nullptr,
18300 uint32_t enabledExtensionCount_ = 0,
18301 const char* const* ppEnabledExtensionNames_ = nullptr,
18302 const PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr )
18303 : flags( flags_ )
18304 , queueCreateInfoCount( queueCreateInfoCount_ )
18305 , pQueueCreateInfos( pQueueCreateInfos_ )
18306 , enabledLayerCount( enabledLayerCount_ )
18307 , ppEnabledLayerNames( ppEnabledLayerNames_ )
18308 , enabledExtensionCount( enabledExtensionCount_ )
18309 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
18310 , pEnabledFeatures( pEnabledFeatures_ )
18311 {
18312 }
18313
18314 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
18315 {
18316 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
18317 }
18318
18319 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
18320 {
18321 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
18322 return *this;
18323 }
18324 DeviceCreateInfo& setPNext( const void* pNext_ )
18325 {
18326 pNext = pNext_;
18327 return *this;
18328 }
18329
18330 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
18331 {
18332 flags = flags_;
18333 return *this;
18334 }
18335
18336 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
18337 {
18338 queueCreateInfoCount = queueCreateInfoCount_;
18339 return *this;
18340 }
18341
18342 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
18343 {
18344 pQueueCreateInfos = pQueueCreateInfos_;
18345 return *this;
18346 }
18347
18348 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
18349 {
18350 enabledLayerCount = enabledLayerCount_;
18351 return *this;
18352 }
18353
18354 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
18355 {
18356 ppEnabledLayerNames = ppEnabledLayerNames_;
18357 return *this;
18358 }
18359
18360 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
18361 {
18362 enabledExtensionCount = enabledExtensionCount_;
18363 return *this;
18364 }
18365
18366 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
18367 {
18368 ppEnabledExtensionNames = ppEnabledExtensionNames_;
18369 return *this;
18370 }
18371
18372 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
18373 {
18374 pEnabledFeatures = pEnabledFeatures_;
18375 return *this;
18376 }
18377
18378 operator const VkDeviceCreateInfo&() const
18379 {
18380 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
18381 }
18382
18383 bool operator==( DeviceCreateInfo const& rhs ) const
18384 {
18385 return ( sType == rhs.sType )
18386 && ( pNext == rhs.pNext )
18387 && ( flags == rhs.flags )
18388 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
18389 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
18390 && ( enabledLayerCount == rhs.enabledLayerCount )
18391 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
18392 && ( enabledExtensionCount == rhs.enabledExtensionCount )
18393 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
18394 && ( pEnabledFeatures == rhs.pEnabledFeatures );
18395 }
18396
18397 bool operator!=( DeviceCreateInfo const& rhs ) const
18398 {
18399 return !operator==( rhs );
18400 }
18401
18402 private:
18403 StructureType sType = StructureType::eDeviceCreateInfo;
18404
18405 public:
18406 const void* pNext = nullptr;
18407 DeviceCreateFlags flags;
18408 uint32_t queueCreateInfoCount;
18409 const DeviceQueueCreateInfo* pQueueCreateInfos;
18410 uint32_t enabledLayerCount;
18411 const char* const* ppEnabledLayerNames;
18412 uint32_t enabledExtensionCount;
18413 const char* const* ppEnabledExtensionNames;
18414 const PhysicalDeviceFeatures* pEnabledFeatures;
18415 };
18416 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
18417
18418 struct DeviceQueueInfo2
18419 {
18420 DeviceQueueInfo2( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(),
18421 uint32_t queueFamilyIndex_ = 0,
18422 uint32_t queueIndex_ = 0 )
18423 : flags( flags_ )
18424 , queueFamilyIndex( queueFamilyIndex_ )
18425 , queueIndex( queueIndex_ )
18426 {
18427 }
18428
18429 DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs )
18430 {
18431 memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
18432 }
18433
18434 DeviceQueueInfo2& operator=( VkDeviceQueueInfo2 const & rhs )
18435 {
18436 memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
18437 return *this;
18438 }
18439 DeviceQueueInfo2& setPNext( const void* pNext_ )
18440 {
18441 pNext = pNext_;
18442 return *this;
18443 }
18444
18445 DeviceQueueInfo2& setFlags( DeviceQueueCreateFlags flags_ )
18446 {
18447 flags = flags_;
18448 return *this;
18449 }
18450
18451 DeviceQueueInfo2& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18452 {
18453 queueFamilyIndex = queueFamilyIndex_;
18454 return *this;
18455 }
18456
18457 DeviceQueueInfo2& setQueueIndex( uint32_t queueIndex_ )
18458 {
18459 queueIndex = queueIndex_;
18460 return *this;
18461 }
18462
18463 operator const VkDeviceQueueInfo2&() const
18464 {
18465 return *reinterpret_cast<const VkDeviceQueueInfo2*>(this);
18466 }
18467
18468 bool operator==( DeviceQueueInfo2 const& rhs ) const
18469 {
18470 return ( sType == rhs.sType )
18471 && ( pNext == rhs.pNext )
18472 && ( flags == rhs.flags )
18473 && ( queueFamilyIndex == rhs.queueFamilyIndex )
18474 && ( queueIndex == rhs.queueIndex );
18475 }
18476
18477 bool operator!=( DeviceQueueInfo2 const& rhs ) const
18478 {
18479 return !operator==( rhs );
18480 }
18481
18482 private:
18483 StructureType sType = StructureType::eDeviceQueueInfo2;
18484
18485 public:
18486 const void* pNext = nullptr;
18487 DeviceQueueCreateFlags flags;
18488 uint32_t queueFamilyIndex;
18489 uint32_t queueIndex;
18490 };
18491 static_assert( sizeof( DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "struct and wrapper have different size!" );
18492
18493 enum class MemoryPropertyFlagBits
18494 {
18495 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
18496 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
18497 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
18498 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
18499 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,
18500 eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT
18501 };
18502
18503 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
18504
18505 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
18506 {
18507 return MemoryPropertyFlags( bit0 ) | bit1;
18508 }
18509
18510 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
18511 {
18512 return ~( MemoryPropertyFlags( bits ) );
18513 }
18514
18515 template <> struct FlagTraits<MemoryPropertyFlagBits>
18516 {
18517 enum
18518 {
18519 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | VkFlags(MemoryPropertyFlagBits::eProtected)
18520 };
18521 };
18522
18523 struct MemoryType
18524 {
18525 operator const VkMemoryType&() const
18526 {
18527 return *reinterpret_cast<const VkMemoryType*>(this);
18528 }
18529
18530 bool operator==( MemoryType const& rhs ) const
18531 {
18532 return ( propertyFlags == rhs.propertyFlags )
18533 && ( heapIndex == rhs.heapIndex );
18534 }
18535
18536 bool operator!=( MemoryType const& rhs ) const
18537 {
18538 return !operator==( rhs );
18539 }
18540
18541 MemoryPropertyFlags propertyFlags;
18542 uint32_t heapIndex;
18543 };
18544 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
18545
18546 enum class MemoryHeapFlagBits
18547 {
18548 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
18549 eMultiInstance = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
18550 eMultiInstanceKHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
18551 };
18552
18553 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
18554
18555 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
18556 {
18557 return MemoryHeapFlags( bit0 ) | bit1;
18558 }
18559
18560 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
18561 {
18562 return ~( MemoryHeapFlags( bits ) );
18563 }
18564
18565 template <> struct FlagTraits<MemoryHeapFlagBits>
18566 {
18567 enum
18568 {
18569 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstance)
18570 };
18571 };
18572
18573 struct MemoryHeap
18574 {
18575 operator const VkMemoryHeap&() const
18576 {
18577 return *reinterpret_cast<const VkMemoryHeap*>(this);
18578 }
18579
18580 bool operator==( MemoryHeap const& rhs ) const
18581 {
18582 return ( size == rhs.size )
18583 && ( flags == rhs.flags );
18584 }
18585
18586 bool operator!=( MemoryHeap const& rhs ) const
18587 {
18588 return !operator==( rhs );
18589 }
18590
18591 DeviceSize size;
18592 MemoryHeapFlags flags;
18593 };
18594 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
18595
18596 struct PhysicalDeviceMemoryProperties
18597 {
18598 operator const VkPhysicalDeviceMemoryProperties&() const
18599 {
18600 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
18601 }
18602
18603 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
18604 {
18605 return ( memoryTypeCount == rhs.memoryTypeCount )
18606 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
18607 && ( memoryHeapCount == rhs.memoryHeapCount )
18608 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
18609 }
18610
18611 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
18612 {
18613 return !operator==( rhs );
18614 }
18615
18616 uint32_t memoryTypeCount;
18617 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
18618 uint32_t memoryHeapCount;
18619 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
18620 };
18621 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
18622
18623 struct PhysicalDeviceMemoryProperties2
18624 {
18625 operator const VkPhysicalDeviceMemoryProperties2&() const
18626 {
18627 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2*>(this);
18628 }
18629
18630 bool operator==( PhysicalDeviceMemoryProperties2 const& rhs ) const
18631 {
18632 return ( sType == rhs.sType )
18633 && ( pNext == rhs.pNext )
18634 && ( memoryProperties == rhs.memoryProperties );
18635 }
18636
18637 bool operator!=( PhysicalDeviceMemoryProperties2 const& rhs ) const
18638 {
18639 return !operator==( rhs );
18640 }
18641
18642 private:
18643 StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2;
18644
18645 public:
18646 void* pNext = nullptr;
18647 PhysicalDeviceMemoryProperties memoryProperties;
18648 };
18649 static_assert( sizeof( PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), "struct and wrapper have different size!" );
18650
18651 using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
18652
18653 enum class AccessFlagBits
18654 {
18655 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
18656 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
18657 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
18658 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
18659 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
18660 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
18661 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
18662 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
18663 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
18664 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
18665 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
18666 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
18667 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
18668 eHostRead = VK_ACCESS_HOST_READ_BIT,
18669 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
18670 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
18671 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
18672 eConditionalRenderingReadEXT = VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,
18673 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
18674 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
18675 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
18676 };
18677
18678 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
18679
18680 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
18681 {
18682 return AccessFlags( bit0 ) | bit1;
18683 }
18684
18685 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
18686 {
18687 return ~( AccessFlags( bits ) );
18688 }
18689
18690 template <> struct FlagTraits<AccessFlagBits>
18691 {
18692 enum
18693 {
18694 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::eConditionalRenderingReadEXT) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT)
18695 };
18696 };
18697
18698 struct MemoryBarrier
18699 {
18700 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
18701 AccessFlags dstAccessMask_ = AccessFlags() )
18702 : srcAccessMask( srcAccessMask_ )
18703 , dstAccessMask( dstAccessMask_ )
18704 {
18705 }
18706
18707 MemoryBarrier( VkMemoryBarrier const & rhs )
18708 {
18709 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
18710 }
18711
18712 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
18713 {
18714 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
18715 return *this;
18716 }
18717 MemoryBarrier& setPNext( const void* pNext_ )
18718 {
18719 pNext = pNext_;
18720 return *this;
18721 }
18722
18723 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
18724 {
18725 srcAccessMask = srcAccessMask_;
18726 return *this;
18727 }
18728
18729 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
18730 {
18731 dstAccessMask = dstAccessMask_;
18732 return *this;
18733 }
18734
18735 operator const VkMemoryBarrier&() const
18736 {
18737 return *reinterpret_cast<const VkMemoryBarrier*>(this);
18738 }
18739
18740 bool operator==( MemoryBarrier const& rhs ) const
18741 {
18742 return ( sType == rhs.sType )
18743 && ( pNext == rhs.pNext )
18744 && ( srcAccessMask == rhs.srcAccessMask )
18745 && ( dstAccessMask == rhs.dstAccessMask );
18746 }
18747
18748 bool operator!=( MemoryBarrier const& rhs ) const
18749 {
18750 return !operator==( rhs );
18751 }
18752
18753 private:
18754 StructureType sType = StructureType::eMemoryBarrier;
18755
18756 public:
18757 const void* pNext = nullptr;
18758 AccessFlags srcAccessMask;
18759 AccessFlags dstAccessMask;
18760 };
18761 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
18762
18763 struct BufferMemoryBarrier
18764 {
18765 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
18766 AccessFlags dstAccessMask_ = AccessFlags(),
18767 uint32_t srcQueueFamilyIndex_ = 0,
18768 uint32_t dstQueueFamilyIndex_ = 0,
18769 Buffer buffer_ = Buffer(),
18770 DeviceSize offset_ = 0,
18771 DeviceSize size_ = 0 )
18772 : srcAccessMask( srcAccessMask_ )
18773 , dstAccessMask( dstAccessMask_ )
18774 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
18775 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
18776 , buffer( buffer_ )
18777 , offset( offset_ )
18778 , size( size_ )
18779 {
18780 }
18781
18782 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
18783 {
18784 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
18785 }
18786
18787 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
18788 {
18789 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
18790 return *this;
18791 }
18792 BufferMemoryBarrier& setPNext( const void* pNext_ )
18793 {
18794 pNext = pNext_;
18795 return *this;
18796 }
18797
18798 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
18799 {
18800 srcAccessMask = srcAccessMask_;
18801 return *this;
18802 }
18803
18804 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
18805 {
18806 dstAccessMask = dstAccessMask_;
18807 return *this;
18808 }
18809
18810 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
18811 {
18812 srcQueueFamilyIndex = srcQueueFamilyIndex_;
18813 return *this;
18814 }
18815
18816 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
18817 {
18818 dstQueueFamilyIndex = dstQueueFamilyIndex_;
18819 return *this;
18820 }
18821
18822 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
18823 {
18824 buffer = buffer_;
18825 return *this;
18826 }
18827
18828 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
18829 {
18830 offset = offset_;
18831 return *this;
18832 }
18833
18834 BufferMemoryBarrier& setSize( DeviceSize size_ )
18835 {
18836 size = size_;
18837 return *this;
18838 }
18839
18840 operator const VkBufferMemoryBarrier&() const
18841 {
18842 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
18843 }
18844
18845 bool operator==( BufferMemoryBarrier const& rhs ) const
18846 {
18847 return ( sType == rhs.sType )
18848 && ( pNext == rhs.pNext )
18849 && ( srcAccessMask == rhs.srcAccessMask )
18850 && ( dstAccessMask == rhs.dstAccessMask )
18851 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
18852 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
18853 && ( buffer == rhs.buffer )
18854 && ( offset == rhs.offset )
18855 && ( size == rhs.size );
18856 }
18857
18858 bool operator!=( BufferMemoryBarrier const& rhs ) const
18859 {
18860 return !operator==( rhs );
18861 }
18862
18863 private:
18864 StructureType sType = StructureType::eBufferMemoryBarrier;
18865
18866 public:
18867 const void* pNext = nullptr;
18868 AccessFlags srcAccessMask;
18869 AccessFlags dstAccessMask;
18870 uint32_t srcQueueFamilyIndex;
18871 uint32_t dstQueueFamilyIndex;
18872 Buffer buffer;
18873 DeviceSize offset;
18874 DeviceSize size;
18875 };
18876 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
18877
18878 enum class BufferUsageFlagBits
18879 {
18880 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
18881 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
18882 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
18883 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
18884 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
18885 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
18886 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
18887 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
18888 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,
18889 eConditionalRenderingEXT = VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
18890 };
18891
18892 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
18893
18894 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
18895 {
18896 return BufferUsageFlags( bit0 ) | bit1;
18897 }
18898
18899 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
18900 {
18901 return ~( BufferUsageFlags( bits ) );
18902 }
18903
18904 template <> struct FlagTraits<BufferUsageFlagBits>
18905 {
18906 enum
18907 {
18908 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) | VkFlags(BufferUsageFlagBits::eConditionalRenderingEXT)
18909 };
18910 };
18911
18912 enum class BufferCreateFlagBits
18913 {
18914 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
18915 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
18916 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,
18917 eProtected = VK_BUFFER_CREATE_PROTECTED_BIT
18918 };
18919
18920 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
18921
18922 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
18923 {
18924 return BufferCreateFlags( bit0 ) | bit1;
18925 }
18926
18927 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
18928 {
18929 return ~( BufferCreateFlags( bits ) );
18930 }
18931
18932 template <> struct FlagTraits<BufferCreateFlagBits>
18933 {
18934 enum
18935 {
18936 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased) | VkFlags(BufferCreateFlagBits::eProtected)
18937 };
18938 };
18939
18940 struct BufferCreateInfo
18941 {
18942 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(),
18943 DeviceSize size_ = 0,
18944 BufferUsageFlags usage_ = BufferUsageFlags(),
18945 SharingMode sharingMode_ = SharingMode::eExclusive,
18946 uint32_t queueFamilyIndexCount_ = 0,
18947 const uint32_t* pQueueFamilyIndices_ = nullptr )
18948 : flags( flags_ )
18949 , size( size_ )
18950 , usage( usage_ )
18951 , sharingMode( sharingMode_ )
18952 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18953 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18954 {
18955 }
18956
18957 BufferCreateInfo( VkBufferCreateInfo const & rhs )
18958 {
18959 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
18960 }
18961
18962 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
18963 {
18964 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
18965 return *this;
18966 }
18967 BufferCreateInfo& setPNext( const void* pNext_ )
18968 {
18969 pNext = pNext_;
18970 return *this;
18971 }
18972
18973 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
18974 {
18975 flags = flags_;
18976 return *this;
18977 }
18978
18979 BufferCreateInfo& setSize( DeviceSize size_ )
18980 {
18981 size = size_;
18982 return *this;
18983 }
18984
18985 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
18986 {
18987 usage = usage_;
18988 return *this;
18989 }
18990
18991 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
18992 {
18993 sharingMode = sharingMode_;
18994 return *this;
18995 }
18996
18997 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18998 {
18999 queueFamilyIndexCount = queueFamilyIndexCount_;
19000 return *this;
19001 }
19002
19003 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
19004 {
19005 pQueueFamilyIndices = pQueueFamilyIndices_;
19006 return *this;
19007 }
19008
19009 operator const VkBufferCreateInfo&() const
19010 {
19011 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
19012 }
19013
19014 bool operator==( BufferCreateInfo const& rhs ) const
19015 {
19016 return ( sType == rhs.sType )
19017 && ( pNext == rhs.pNext )
19018 && ( flags == rhs.flags )
19019 && ( size == rhs.size )
19020 && ( usage == rhs.usage )
19021 && ( sharingMode == rhs.sharingMode )
19022 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
19023 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
19024 }
19025
19026 bool operator!=( BufferCreateInfo const& rhs ) const
19027 {
19028 return !operator==( rhs );
19029 }
19030
19031 private:
19032 StructureType sType = StructureType::eBufferCreateInfo;
19033
19034 public:
19035 const void* pNext = nullptr;
19036 BufferCreateFlags flags;
19037 DeviceSize size;
19038 BufferUsageFlags usage;
19039 SharingMode sharingMode;
19040 uint32_t queueFamilyIndexCount;
19041 const uint32_t* pQueueFamilyIndices;
19042 };
19043 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
19044
19045 enum class ShaderStageFlagBits
19046 {
19047 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
19048 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
19049 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
19050 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
19051 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
19052 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
19053 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
19054 eAll = VK_SHADER_STAGE_ALL
19055 };
19056
19057 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
19058
19059 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
19060 {
19061 return ShaderStageFlags( bit0 ) | bit1;
19062 }
19063
19064 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
19065 {
19066 return ~( ShaderStageFlags( bits ) );
19067 }
19068
19069 template <> struct FlagTraits<ShaderStageFlagBits>
19070 {
19071 enum
19072 {
19073 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)
19074 };
19075 };
19076
19077 struct DescriptorSetLayoutBinding
19078 {
19079 DescriptorSetLayoutBinding( uint32_t binding_ = 0,
19080 DescriptorType descriptorType_ = DescriptorType::eSampler,
19081 uint32_t descriptorCount_ = 0,
19082 ShaderStageFlags stageFlags_ = ShaderStageFlags(),
19083 const Sampler* pImmutableSamplers_ = nullptr )
19084 : binding( binding_ )
19085 , descriptorType( descriptorType_ )
19086 , descriptorCount( descriptorCount_ )
19087 , stageFlags( stageFlags_ )
19088 , pImmutableSamplers( pImmutableSamplers_ )
19089 {
19090 }
19091
19092 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
19093 {
19094 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
19095 }
19096
19097 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
19098 {
19099 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
19100 return *this;
19101 }
19102 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
19103 {
19104 binding = binding_;
19105 return *this;
19106 }
19107
19108 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
19109 {
19110 descriptorType = descriptorType_;
19111 return *this;
19112 }
19113
19114 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
19115 {
19116 descriptorCount = descriptorCount_;
19117 return *this;
19118 }
19119
19120 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
19121 {
19122 stageFlags = stageFlags_;
19123 return *this;
19124 }
19125
19126 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
19127 {
19128 pImmutableSamplers = pImmutableSamplers_;
19129 return *this;
19130 }
19131
19132 operator const VkDescriptorSetLayoutBinding&() const
19133 {
19134 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
19135 }
19136
19137 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
19138 {
19139 return ( binding == rhs.binding )
19140 && ( descriptorType == rhs.descriptorType )
19141 && ( descriptorCount == rhs.descriptorCount )
19142 && ( stageFlags == rhs.stageFlags )
19143 && ( pImmutableSamplers == rhs.pImmutableSamplers );
19144 }
19145
19146 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
19147 {
19148 return !operator==( rhs );
19149 }
19150
19151 uint32_t binding;
19152 DescriptorType descriptorType;
19153 uint32_t descriptorCount;
19154 ShaderStageFlags stageFlags;
19155 const Sampler* pImmutableSamplers;
19156 };
19157 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
19158
19159 struct PipelineShaderStageCreateInfo
19160 {
19161 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(),
19162 ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex,
19163 ShaderModule module_ = ShaderModule(),
19164 const char* pName_ = nullptr,
19165 const SpecializationInfo* pSpecializationInfo_ = nullptr )
19166 : flags( flags_ )
19167 , stage( stage_ )
19168 , module( module_ )
19169 , pName( pName_ )
19170 , pSpecializationInfo( pSpecializationInfo_ )
19171 {
19172 }
19173
19174 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
19175 {
19176 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
19177 }
19178
19179 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
19180 {
19181 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
19182 return *this;
19183 }
19184 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
19185 {
19186 pNext = pNext_;
19187 return *this;
19188 }
19189
19190 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
19191 {
19192 flags = flags_;
19193 return *this;
19194 }
19195
19196 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
19197 {
19198 stage = stage_;
19199 return *this;
19200 }
19201
19202 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
19203 {
19204 module = module_;
19205 return *this;
19206 }
19207
19208 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
19209 {
19210 pName = pName_;
19211 return *this;
19212 }
19213
19214 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
19215 {
19216 pSpecializationInfo = pSpecializationInfo_;
19217 return *this;
19218 }
19219
19220 operator const VkPipelineShaderStageCreateInfo&() const
19221 {
19222 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
19223 }
19224
19225 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
19226 {
19227 return ( sType == rhs.sType )
19228 && ( pNext == rhs.pNext )
19229 && ( flags == rhs.flags )
19230 && ( stage == rhs.stage )
19231 && ( module == rhs.module )
19232 && ( pName == rhs.pName )
19233 && ( pSpecializationInfo == rhs.pSpecializationInfo );
19234 }
19235
19236 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
19237 {
19238 return !operator==( rhs );
19239 }
19240
19241 private:
19242 StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
19243
19244 public:
19245 const void* pNext = nullptr;
19246 PipelineShaderStageCreateFlags flags;
19247 ShaderStageFlagBits stage;
19248 ShaderModule module;
19249 const char* pName;
19250 const SpecializationInfo* pSpecializationInfo;
19251 };
19252 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
19253
19254 struct PushConstantRange
19255 {
19256 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(),
19257 uint32_t offset_ = 0,
19258 uint32_t size_ = 0 )
19259 : stageFlags( stageFlags_ )
19260 , offset( offset_ )
19261 , size( size_ )
19262 {
19263 }
19264
19265 PushConstantRange( VkPushConstantRange const & rhs )
19266 {
19267 memcpy( this, &rhs, sizeof( PushConstantRange ) );
19268 }
19269
19270 PushConstantRange& operator=( VkPushConstantRange const & rhs )
19271 {
19272 memcpy( this, &rhs, sizeof( PushConstantRange ) );
19273 return *this;
19274 }
19275 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
19276 {
19277 stageFlags = stageFlags_;
19278 return *this;
19279 }
19280
19281 PushConstantRange& setOffset( uint32_t offset_ )
19282 {
19283 offset = offset_;
19284 return *this;
19285 }
19286
19287 PushConstantRange& setSize( uint32_t size_ )
19288 {
19289 size = size_;
19290 return *this;
19291 }
19292
19293 operator const VkPushConstantRange&() const
19294 {
19295 return *reinterpret_cast<const VkPushConstantRange*>(this);
19296 }
19297
19298 bool operator==( PushConstantRange const& rhs ) const
19299 {
19300 return ( stageFlags == rhs.stageFlags )
19301 && ( offset == rhs.offset )
19302 && ( size == rhs.size );
19303 }
19304
19305 bool operator!=( PushConstantRange const& rhs ) const
19306 {
19307 return !operator==( rhs );
19308 }
19309
19310 ShaderStageFlags stageFlags;
19311 uint32_t offset;
19312 uint32_t size;
19313 };
19314 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
19315
19316 struct PipelineLayoutCreateInfo
19317 {
19318 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(),
19319 uint32_t setLayoutCount_ = 0,
19320 const DescriptorSetLayout* pSetLayouts_ = nullptr,
19321 uint32_t pushConstantRangeCount_ = 0,
19322 const PushConstantRange* pPushConstantRanges_ = nullptr )
19323 : flags( flags_ )
19324 , setLayoutCount( setLayoutCount_ )
19325 , pSetLayouts( pSetLayouts_ )
19326 , pushConstantRangeCount( pushConstantRangeCount_ )
19327 , pPushConstantRanges( pPushConstantRanges_ )
19328 {
19329 }
19330
19331 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
19332 {
19333 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
19334 }
19335
19336 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
19337 {
19338 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
19339 return *this;
19340 }
19341 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
19342 {
19343 pNext = pNext_;
19344 return *this;
19345 }
19346
19347 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
19348 {
19349 flags = flags_;
19350 return *this;
19351 }
19352
19353 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
19354 {
19355 setLayoutCount = setLayoutCount_;
19356 return *this;
19357 }
19358
19359 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
19360 {
19361 pSetLayouts = pSetLayouts_;
19362 return *this;
19363 }
19364
19365 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
19366 {
19367 pushConstantRangeCount = pushConstantRangeCount_;
19368 return *this;
19369 }
19370
19371 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
19372 {
19373 pPushConstantRanges = pPushConstantRanges_;
19374 return *this;
19375 }
19376
19377 operator const VkPipelineLayoutCreateInfo&() const
19378 {
19379 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
19380 }
19381
19382 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
19383 {
19384 return ( sType == rhs.sType )
19385 && ( pNext == rhs.pNext )
19386 && ( flags == rhs.flags )
19387 && ( setLayoutCount == rhs.setLayoutCount )
19388 && ( pSetLayouts == rhs.pSetLayouts )
19389 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
19390 && ( pPushConstantRanges == rhs.pPushConstantRanges );
19391 }
19392
19393 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
19394 {
19395 return !operator==( rhs );
19396 }
19397
19398 private:
19399 StructureType sType = StructureType::ePipelineLayoutCreateInfo;
19400
19401 public:
19402 const void* pNext = nullptr;
19403 PipelineLayoutCreateFlags flags;
19404 uint32_t setLayoutCount;
19405 const DescriptorSetLayout* pSetLayouts;
19406 uint32_t pushConstantRangeCount;
19407 const PushConstantRange* pPushConstantRanges;
19408 };
19409 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
19410
19411 struct ShaderStatisticsInfoAMD
19412 {
19413 operator const VkShaderStatisticsInfoAMD&() const
19414 {
19415 return *reinterpret_cast<const VkShaderStatisticsInfoAMD*>(this);
19416 }
19417
19418 bool operator==( ShaderStatisticsInfoAMD const& rhs ) const
19419 {
19420 return ( shaderStageMask == rhs.shaderStageMask )
19421 && ( resourceUsage == rhs.resourceUsage )
19422 && ( numPhysicalVgprs == rhs.numPhysicalVgprs )
19423 && ( numPhysicalSgprs == rhs.numPhysicalSgprs )
19424 && ( numAvailableVgprs == rhs.numAvailableVgprs )
19425 && ( numAvailableSgprs == rhs.numAvailableSgprs )
19426 && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 );
19427 }
19428
19429 bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const
19430 {
19431 return !operator==( rhs );
19432 }
19433
19434 ShaderStageFlags shaderStageMask;
19435 ShaderResourceUsageAMD resourceUsage;
19436 uint32_t numPhysicalVgprs;
19437 uint32_t numPhysicalSgprs;
19438 uint32_t numAvailableVgprs;
19439 uint32_t numAvailableSgprs;
19440 uint32_t computeWorkGroupSize[3];
19441 };
19442 static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" );
19443
19444 enum class ImageUsageFlagBits
19445 {
19446 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
19447 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
19448 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
19449 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
19450 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
19451 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
19452 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
19453 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
19454 };
19455
19456 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
19457
19458 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
19459 {
19460 return ImageUsageFlags( bit0 ) | bit1;
19461 }
19462
19463 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
19464 {
19465 return ~( ImageUsageFlags( bits ) );
19466 }
19467
19468 template <> struct FlagTraits<ImageUsageFlagBits>
19469 {
19470 enum
19471 {
19472 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)
19473 };
19474 };
19475
19476 struct SharedPresentSurfaceCapabilitiesKHR
19477 {
19478 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
19479 {
19480 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
19481 }
19482
19483 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
19484 {
19485 return ( sType == rhs.sType )
19486 && ( pNext == rhs.pNext )
19487 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
19488 }
19489
19490 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
19491 {
19492 return !operator==( rhs );
19493 }
19494
19495 private:
19496 StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
19497
19498 public:
19499 void* pNext = nullptr;
19500 ImageUsageFlags sharedPresentSupportedUsageFlags;
19501 };
19502 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
19503
19504 struct ImageViewUsageCreateInfo
19505 {
19506 ImageViewUsageCreateInfo( ImageUsageFlags usage_ = ImageUsageFlags() )
19507 : usage( usage_ )
19508 {
19509 }
19510
19511 ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs )
19512 {
19513 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
19514 }
19515
19516 ImageViewUsageCreateInfo& operator=( VkImageViewUsageCreateInfo const & rhs )
19517 {
19518 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
19519 return *this;
19520 }
19521 ImageViewUsageCreateInfo& setPNext( const void* pNext_ )
19522 {
19523 pNext = pNext_;
19524 return *this;
19525 }
19526
19527 ImageViewUsageCreateInfo& setUsage( ImageUsageFlags usage_ )
19528 {
19529 usage = usage_;
19530 return *this;
19531 }
19532
19533 operator const VkImageViewUsageCreateInfo&() const
19534 {
19535 return *reinterpret_cast<const VkImageViewUsageCreateInfo*>(this);
19536 }
19537
19538 bool operator==( ImageViewUsageCreateInfo const& rhs ) const
19539 {
19540 return ( sType == rhs.sType )
19541 && ( pNext == rhs.pNext )
19542 && ( usage == rhs.usage );
19543 }
19544
19545 bool operator!=( ImageViewUsageCreateInfo const& rhs ) const
19546 {
19547 return !operator==( rhs );
19548 }
19549
19550 private:
19551 StructureType sType = StructureType::eImageViewUsageCreateInfo;
19552
19553 public:
19554 const void* pNext = nullptr;
19555 ImageUsageFlags usage;
19556 };
19557 static_assert( sizeof( ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), "struct and wrapper have different size!" );
19558
19559 using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
19560
19561 enum class ImageCreateFlagBits
19562 {
19563 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
19564 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
19565 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
19566 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
19567 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
19568 eAlias = VK_IMAGE_CREATE_ALIAS_BIT,
19569 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT,
19570 eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
19571 eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
19572 e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
19573 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
19574 eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
19575 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
19576 eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
19577 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
19578 eProtected = VK_IMAGE_CREATE_PROTECTED_BIT,
19579 eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT,
19580 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT,
19581 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
19582 };
19583
19584 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
19585
19586 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
19587 {
19588 return ImageCreateFlags( bit0 ) | bit1;
19589 }
19590
19591 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
19592 {
19593 return ~( ImageCreateFlags( bits ) );
19594 }
19595
19596 template <> struct FlagTraits<ImageCreateFlagBits>
19597 {
19598 enum
19599 {
19600 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eAlias) | VkFlags(ImageCreateFlagBits::eSplitInstanceBindRegions) | VkFlags(ImageCreateFlagBits::e2DArrayCompatible) | VkFlags(ImageCreateFlagBits::eBlockTexelViewCompatible) | VkFlags(ImageCreateFlagBits::eExtendedUsage) | VkFlags(ImageCreateFlagBits::eProtected) | VkFlags(ImageCreateFlagBits::eDisjoint) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT)
19601 };
19602 };
19603
19604 struct PhysicalDeviceImageFormatInfo2
19605 {
19606 PhysicalDeviceImageFormatInfo2( Format format_ = Format::eUndefined,
19607 ImageType type_ = ImageType::e1D,
19608 ImageTiling tiling_ = ImageTiling::eOptimal,
19609 ImageUsageFlags usage_ = ImageUsageFlags(),
19610 ImageCreateFlags flags_ = ImageCreateFlags() )
19611 : format( format_ )
19612 , type( type_ )
19613 , tiling( tiling_ )
19614 , usage( usage_ )
19615 , flags( flags_ )
19616 {
19617 }
19618
19619 PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs )
19620 {
19621 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
19622 }
19623
19624 PhysicalDeviceImageFormatInfo2& operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs )
19625 {
19626 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
19627 return *this;
19628 }
19629 PhysicalDeviceImageFormatInfo2& setPNext( const void* pNext_ )
19630 {
19631 pNext = pNext_;
19632 return *this;
19633 }
19634
19635 PhysicalDeviceImageFormatInfo2& setFormat( Format format_ )
19636 {
19637 format = format_;
19638 return *this;
19639 }
19640
19641 PhysicalDeviceImageFormatInfo2& setType( ImageType type_ )
19642 {
19643 type = type_;
19644 return *this;
19645 }
19646
19647 PhysicalDeviceImageFormatInfo2& setTiling( ImageTiling tiling_ )
19648 {
19649 tiling = tiling_;
19650 return *this;
19651 }
19652
19653 PhysicalDeviceImageFormatInfo2& setUsage( ImageUsageFlags usage_ )
19654 {
19655 usage = usage_;
19656 return *this;
19657 }
19658
19659 PhysicalDeviceImageFormatInfo2& setFlags( ImageCreateFlags flags_ )
19660 {
19661 flags = flags_;
19662 return *this;
19663 }
19664
19665 operator const VkPhysicalDeviceImageFormatInfo2&() const
19666 {
19667 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>(this);
19668 }
19669
19670 bool operator==( PhysicalDeviceImageFormatInfo2 const& rhs ) const
19671 {
19672 return ( sType == rhs.sType )
19673 && ( pNext == rhs.pNext )
19674 && ( format == rhs.format )
19675 && ( type == rhs.type )
19676 && ( tiling == rhs.tiling )
19677 && ( usage == rhs.usage )
19678 && ( flags == rhs.flags );
19679 }
19680
19681 bool operator!=( PhysicalDeviceImageFormatInfo2 const& rhs ) const
19682 {
19683 return !operator==( rhs );
19684 }
19685
19686 private:
19687 StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2;
19688
19689 public:
19690 const void* pNext = nullptr;
19691 Format format;
19692 ImageType type;
19693 ImageTiling tiling;
19694 ImageUsageFlags usage;
19695 ImageCreateFlags flags;
19696 };
19697 static_assert( sizeof( PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), "struct and wrapper have different size!" );
19698
19699 using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
19700
19701 enum class PipelineCreateFlagBits
19702 {
19703 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
19704 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
19705 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
19706 eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
19707 eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
19708 eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE,
19709 eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE
19710 };
19711
19712 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
19713
19714 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
19715 {
19716 return PipelineCreateFlags( bit0 ) | bit1;
19717 }
19718
19719 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
19720 {
19721 return ~( PipelineCreateFlags( bits ) );
19722 }
19723
19724 template <> struct FlagTraits<PipelineCreateFlagBits>
19725 {
19726 enum
19727 {
19728 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndex) | VkFlags(PipelineCreateFlagBits::eDispatchBase)
19729 };
19730 };
19731
19732 struct ComputePipelineCreateInfo
19733 {
19734 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(),
19735 PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(),
19736 PipelineLayout layout_ = PipelineLayout(),
19737 Pipeline basePipelineHandle_ = Pipeline(),
19738 int32_t basePipelineIndex_ = 0 )
19739 : flags( flags_ )
19740 , stage( stage_ )
19741 , layout( layout_ )
19742 , basePipelineHandle( basePipelineHandle_ )
19743 , basePipelineIndex( basePipelineIndex_ )
19744 {
19745 }
19746
19747 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
19748 {
19749 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
19750 }
19751
19752 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
19753 {
19754 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
19755 return *this;
19756 }
19757 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
19758 {
19759 pNext = pNext_;
19760 return *this;
19761 }
19762
19763 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
19764 {
19765 flags = flags_;
19766 return *this;
19767 }
19768
19769 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
19770 {
19771 stage = stage_;
19772 return *this;
19773 }
19774
19775 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
19776 {
19777 layout = layout_;
19778 return *this;
19779 }
19780
19781 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
19782 {
19783 basePipelineHandle = basePipelineHandle_;
19784 return *this;
19785 }
19786
19787 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
19788 {
19789 basePipelineIndex = basePipelineIndex_;
19790 return *this;
19791 }
19792
19793 operator const VkComputePipelineCreateInfo&() const
19794 {
19795 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
19796 }
19797
19798 bool operator==( ComputePipelineCreateInfo const& rhs ) const
19799 {
19800 return ( sType == rhs.sType )
19801 && ( pNext == rhs.pNext )
19802 && ( flags == rhs.flags )
19803 && ( stage == rhs.stage )
19804 && ( layout == rhs.layout )
19805 && ( basePipelineHandle == rhs.basePipelineHandle )
19806 && ( basePipelineIndex == rhs.basePipelineIndex );
19807 }
19808
19809 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
19810 {
19811 return !operator==( rhs );
19812 }
19813
19814 private:
19815 StructureType sType = StructureType::eComputePipelineCreateInfo;
19816
19817 public:
19818 const void* pNext = nullptr;
19819 PipelineCreateFlags flags;
19820 PipelineShaderStageCreateInfo stage;
19821 PipelineLayout layout;
19822 Pipeline basePipelineHandle;
19823 int32_t basePipelineIndex;
19824 };
19825 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
19826
19827 enum class ColorComponentFlagBits
19828 {
19829 eR = VK_COLOR_COMPONENT_R_BIT,
19830 eG = VK_COLOR_COMPONENT_G_BIT,
19831 eB = VK_COLOR_COMPONENT_B_BIT,
19832 eA = VK_COLOR_COMPONENT_A_BIT
19833 };
19834
19835 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
19836
19837 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
19838 {
19839 return ColorComponentFlags( bit0 ) | bit1;
19840 }
19841
19842 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
19843 {
19844 return ~( ColorComponentFlags( bits ) );
19845 }
19846
19847 template <> struct FlagTraits<ColorComponentFlagBits>
19848 {
19849 enum
19850 {
19851 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
19852 };
19853 };
19854
19855 struct PipelineColorBlendAttachmentState
19856 {
19857 PipelineColorBlendAttachmentState( Bool32 blendEnable_ = 0,
19858 BlendFactor srcColorBlendFactor_ = BlendFactor::eZero,
19859 BlendFactor dstColorBlendFactor_ = BlendFactor::eZero,
19860 BlendOp colorBlendOp_ = BlendOp::eAdd,
19861 BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero,
19862 BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero,
19863 BlendOp alphaBlendOp_ = BlendOp::eAdd,
19864 ColorComponentFlags colorWriteMask_ = ColorComponentFlags() )
19865 : blendEnable( blendEnable_ )
19866 , srcColorBlendFactor( srcColorBlendFactor_ )
19867 , dstColorBlendFactor( dstColorBlendFactor_ )
19868 , colorBlendOp( colorBlendOp_ )
19869 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
19870 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
19871 , alphaBlendOp( alphaBlendOp_ )
19872 , colorWriteMask( colorWriteMask_ )
19873 {
19874 }
19875
19876 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
19877 {
19878 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
19879 }
19880
19881 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
19882 {
19883 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
19884 return *this;
19885 }
19886 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
19887 {
19888 blendEnable = blendEnable_;
19889 return *this;
19890 }
19891
19892 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
19893 {
19894 srcColorBlendFactor = srcColorBlendFactor_;
19895 return *this;
19896 }
19897
19898 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
19899 {
19900 dstColorBlendFactor = dstColorBlendFactor_;
19901 return *this;
19902 }
19903
19904 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
19905 {
19906 colorBlendOp = colorBlendOp_;
19907 return *this;
19908 }
19909
19910 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
19911 {
19912 srcAlphaBlendFactor = srcAlphaBlendFactor_;
19913 return *this;
19914 }
19915
19916 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
19917 {
19918 dstAlphaBlendFactor = dstAlphaBlendFactor_;
19919 return *this;
19920 }
19921
19922 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
19923 {
19924 alphaBlendOp = alphaBlendOp_;
19925 return *this;
19926 }
19927
19928 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
19929 {
19930 colorWriteMask = colorWriteMask_;
19931 return *this;
19932 }
19933
19934 operator const VkPipelineColorBlendAttachmentState&() const
19935 {
19936 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
19937 }
19938
19939 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
19940 {
19941 return ( blendEnable == rhs.blendEnable )
19942 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
19943 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
19944 && ( colorBlendOp == rhs.colorBlendOp )
19945 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
19946 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
19947 && ( alphaBlendOp == rhs.alphaBlendOp )
19948 && ( colorWriteMask == rhs.colorWriteMask );
19949 }
19950
19951 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
19952 {
19953 return !operator==( rhs );
19954 }
19955
19956 Bool32 blendEnable;
19957 BlendFactor srcColorBlendFactor;
19958 BlendFactor dstColorBlendFactor;
19959 BlendOp colorBlendOp;
19960 BlendFactor srcAlphaBlendFactor;
19961 BlendFactor dstAlphaBlendFactor;
19962 BlendOp alphaBlendOp;
19963 ColorComponentFlags colorWriteMask;
19964 };
19965 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
19966
19967 struct PipelineColorBlendStateCreateInfo
19968 {
19969 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_ = PipelineColorBlendStateCreateFlags(),
19970 Bool32 logicOpEnable_ = 0,
19971 LogicOp logicOp_ = LogicOp::eClear,
19972 uint32_t attachmentCount_ = 0,
19973 const PipelineColorBlendAttachmentState* pAttachments_ = nullptr,
19974 std::array<float,4> const& blendConstants_ = { { 0, 0, 0, 0 } } )
19975 : flags( flags_ )
19976 , logicOpEnable( logicOpEnable_ )
19977 , logicOp( logicOp_ )
19978 , attachmentCount( attachmentCount_ )
19979 , pAttachments( pAttachments_ )
19980 {
19981 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
19982 }
19983
19984 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
19985 {
19986 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
19987 }
19988
19989 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
19990 {
19991 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
19992 return *this;
19993 }
19994 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
19995 {
19996 pNext = pNext_;
19997 return *this;
19998 }
19999
20000 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
20001 {
20002 flags = flags_;
20003 return *this;
20004 }
20005
20006 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
20007 {
20008 logicOpEnable = logicOpEnable_;
20009 return *this;
20010 }
20011
20012 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
20013 {
20014 logicOp = logicOp_;
20015 return *this;
20016 }
20017
20018 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
20019 {
20020 attachmentCount = attachmentCount_;
20021 return *this;
20022 }
20023
20024 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
20025 {
20026 pAttachments = pAttachments_;
20027 return *this;
20028 }
20029
20030 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
20031 {
20032 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
20033 return *this;
20034 }
20035
20036 operator const VkPipelineColorBlendStateCreateInfo&() const
20037 {
20038 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
20039 }
20040
20041 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
20042 {
20043 return ( sType == rhs.sType )
20044 && ( pNext == rhs.pNext )
20045 && ( flags == rhs.flags )
20046 && ( logicOpEnable == rhs.logicOpEnable )
20047 && ( logicOp == rhs.logicOp )
20048 && ( attachmentCount == rhs.attachmentCount )
20049 && ( pAttachments == rhs.pAttachments )
20050 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
20051 }
20052
20053 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
20054 {
20055 return !operator==( rhs );
20056 }
20057
20058 private:
20059 StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
20060
20061 public:
20062 const void* pNext = nullptr;
20063 PipelineColorBlendStateCreateFlags flags;
20064 Bool32 logicOpEnable;
20065 LogicOp logicOp;
20066 uint32_t attachmentCount;
20067 const PipelineColorBlendAttachmentState* pAttachments;
20068 float blendConstants[4];
20069 };
20070 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
20071
20072 enum class FenceCreateFlagBits
20073 {
20074 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
20075 };
20076
20077 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
20078
20079 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
20080 {
20081 return FenceCreateFlags( bit0 ) | bit1;
20082 }
20083
20084 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
20085 {
20086 return ~( FenceCreateFlags( bits ) );
20087 }
20088
20089 template <> struct FlagTraits<FenceCreateFlagBits>
20090 {
20091 enum
20092 {
20093 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
20094 };
20095 };
20096
20097 struct FenceCreateInfo
20098 {
20099 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
20100 : flags( flags_ )
20101 {
20102 }
20103
20104 FenceCreateInfo( VkFenceCreateInfo const & rhs )
20105 {
20106 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
20107 }
20108
20109 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
20110 {
20111 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
20112 return *this;
20113 }
20114 FenceCreateInfo& setPNext( const void* pNext_ )
20115 {
20116 pNext = pNext_;
20117 return *this;
20118 }
20119
20120 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
20121 {
20122 flags = flags_;
20123 return *this;
20124 }
20125
20126 operator const VkFenceCreateInfo&() const
20127 {
20128 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
20129 }
20130
20131 bool operator==( FenceCreateInfo const& rhs ) const
20132 {
20133 return ( sType == rhs.sType )
20134 && ( pNext == rhs.pNext )
20135 && ( flags == rhs.flags );
20136 }
20137
20138 bool operator!=( FenceCreateInfo const& rhs ) const
20139 {
20140 return !operator==( rhs );
20141 }
20142
20143 private:
20144 StructureType sType = StructureType::eFenceCreateInfo;
20145
20146 public:
20147 const void* pNext = nullptr;
20148 FenceCreateFlags flags;
20149 };
20150 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
20151
20152 enum class FormatFeatureFlagBits
20153 {
20154 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
20155 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
20156 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
20157 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
20158 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
20159 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
20160 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
20161 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
20162 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
20163 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
20164 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
20165 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
20166 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
20167 eTransferSrc = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
20168 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
20169 eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
20170 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
20171 eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
20172 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
20173 eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
20174 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
20175 eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
20176 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
20177 eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
20178 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
20179 eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
20180 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
20181 eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT,
20182 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
20183 eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
20184 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
20185 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
20186 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
20187 };
20188
20189 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
20190
20191 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
20192 {
20193 return FormatFeatureFlags( bit0 ) | bit1;
20194 }
20195
20196 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
20197 {
20198 return ~( FormatFeatureFlags( bits ) );
20199 }
20200
20201 template <> struct FlagTraits<FormatFeatureFlagBits>
20202 {
20203 enum
20204 {
20205 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::eTransferSrc) | VkFlags(FormatFeatureFlagBits::eTransferDst) | VkFlags(FormatFeatureFlagBits::eMidpointChromaSamples) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable) | VkFlags(FormatFeatureFlagBits::eDisjoint) | VkFlags(FormatFeatureFlagBits::eCositedChromaSamples) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT)
20206 };
20207 };
20208
20209 struct FormatProperties
20210 {
20211 operator const VkFormatProperties&() const
20212 {
20213 return *reinterpret_cast<const VkFormatProperties*>(this);
20214 }
20215
20216 bool operator==( FormatProperties const& rhs ) const
20217 {
20218 return ( linearTilingFeatures == rhs.linearTilingFeatures )
20219 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
20220 && ( bufferFeatures == rhs.bufferFeatures );
20221 }
20222
20223 bool operator!=( FormatProperties const& rhs ) const
20224 {
20225 return !operator==( rhs );
20226 }
20227
20228 FormatFeatureFlags linearTilingFeatures;
20229 FormatFeatureFlags optimalTilingFeatures;
20230 FormatFeatureFlags bufferFeatures;
20231 };
20232 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
20233
20234 struct FormatProperties2
20235 {
20236 operator const VkFormatProperties2&() const
20237 {
20238 return *reinterpret_cast<const VkFormatProperties2*>(this);
20239 }
20240
20241 bool operator==( FormatProperties2 const& rhs ) const
20242 {
20243 return ( sType == rhs.sType )
20244 && ( pNext == rhs.pNext )
20245 && ( formatProperties == rhs.formatProperties );
20246 }
20247
20248 bool operator!=( FormatProperties2 const& rhs ) const
20249 {
20250 return !operator==( rhs );
20251 }
20252
20253 private:
20254 StructureType sType = StructureType::eFormatProperties2;
20255
20256 public:
20257 void* pNext = nullptr;
20258 FormatProperties formatProperties;
20259 };
20260 static_assert( sizeof( FormatProperties2 ) == sizeof( VkFormatProperties2 ), "struct and wrapper have different size!" );
20261
20262 using FormatProperties2KHR = FormatProperties2;
20263
20264 enum class QueryControlFlagBits
20265 {
20266 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
20267 };
20268
20269 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
20270
20271 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
20272 {
20273 return QueryControlFlags( bit0 ) | bit1;
20274 }
20275
20276 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
20277 {
20278 return ~( QueryControlFlags( bits ) );
20279 }
20280
20281 template <> struct FlagTraits<QueryControlFlagBits>
20282 {
20283 enum
20284 {
20285 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
20286 };
20287 };
20288
20289 enum class QueryResultFlagBits
20290 {
20291 e64 = VK_QUERY_RESULT_64_BIT,
20292 eWait = VK_QUERY_RESULT_WAIT_BIT,
20293 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
20294 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
20295 };
20296
20297 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
20298
20299 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
20300 {
20301 return QueryResultFlags( bit0 ) | bit1;
20302 }
20303
20304 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
20305 {
20306 return ~( QueryResultFlags( bits ) );
20307 }
20308
20309 template <> struct FlagTraits<QueryResultFlagBits>
20310 {
20311 enum
20312 {
20313 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
20314 };
20315 };
20316
20317 enum class CommandBufferUsageFlagBits
20318 {
20319 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
20320 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
20321 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
20322 };
20323
20324 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
20325
20326 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
20327 {
20328 return CommandBufferUsageFlags( bit0 ) | bit1;
20329 }
20330
20331 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
20332 {
20333 return ~( CommandBufferUsageFlags( bits ) );
20334 }
20335
20336 template <> struct FlagTraits<CommandBufferUsageFlagBits>
20337 {
20338 enum
20339 {
20340 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
20341 };
20342 };
20343
20344 enum class QueryPipelineStatisticFlagBits
20345 {
20346 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
20347 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
20348 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
20349 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
20350 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
20351 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
20352 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
20353 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
20354 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
20355 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
20356 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
20357 };
20358
20359 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
20360
20361 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
20362 {
20363 return QueryPipelineStatisticFlags( bit0 ) | bit1;
20364 }
20365
20366 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
20367 {
20368 return ~( QueryPipelineStatisticFlags( bits ) );
20369 }
20370
20371 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
20372 {
20373 enum
20374 {
20375 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)
20376 };
20377 };
20378
20379 struct CommandBufferInheritanceInfo
20380 {
20381 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(),
20382 uint32_t subpass_ = 0,
20383 Framebuffer framebuffer_ = Framebuffer(),
20384 Bool32 occlusionQueryEnable_ = 0,
20385 QueryControlFlags queryFlags_ = QueryControlFlags(),
20386 QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
20387 : renderPass( renderPass_ )
20388 , subpass( subpass_ )
20389 , framebuffer( framebuffer_ )
20390 , occlusionQueryEnable( occlusionQueryEnable_ )
20391 , queryFlags( queryFlags_ )
20392 , pipelineStatistics( pipelineStatistics_ )
20393 {
20394 }
20395
20396 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
20397 {
20398 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
20399 }
20400
20401 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
20402 {
20403 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
20404 return *this;
20405 }
20406 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
20407 {
20408 pNext = pNext_;
20409 return *this;
20410 }
20411
20412 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
20413 {
20414 renderPass = renderPass_;
20415 return *this;
20416 }
20417
20418 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
20419 {
20420 subpass = subpass_;
20421 return *this;
20422 }
20423
20424 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
20425 {
20426 framebuffer = framebuffer_;
20427 return *this;
20428 }
20429
20430 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
20431 {
20432 occlusionQueryEnable = occlusionQueryEnable_;
20433 return *this;
20434 }
20435
20436 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
20437 {
20438 queryFlags = queryFlags_;
20439 return *this;
20440 }
20441
20442 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
20443 {
20444 pipelineStatistics = pipelineStatistics_;
20445 return *this;
20446 }
20447
20448 operator const VkCommandBufferInheritanceInfo&() const
20449 {
20450 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
20451 }
20452
20453 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
20454 {
20455 return ( sType == rhs.sType )
20456 && ( pNext == rhs.pNext )
20457 && ( renderPass == rhs.renderPass )
20458 && ( subpass == rhs.subpass )
20459 && ( framebuffer == rhs.framebuffer )
20460 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
20461 && ( queryFlags == rhs.queryFlags )
20462 && ( pipelineStatistics == rhs.pipelineStatistics );
20463 }
20464
20465 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
20466 {
20467 return !operator==( rhs );
20468 }
20469
20470 private:
20471 StructureType sType = StructureType::eCommandBufferInheritanceInfo;
20472
20473 public:
20474 const void* pNext = nullptr;
20475 RenderPass renderPass;
20476 uint32_t subpass;
20477 Framebuffer framebuffer;
20478 Bool32 occlusionQueryEnable;
20479 QueryControlFlags queryFlags;
20480 QueryPipelineStatisticFlags pipelineStatistics;
20481 };
20482 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
20483
20484 struct CommandBufferBeginInfo
20485 {
20486 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(),
20487 const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
20488 : flags( flags_ )
20489 , pInheritanceInfo( pInheritanceInfo_ )
20490 {
20491 }
20492
20493 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
20494 {
20495 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
20496 }
20497
20498 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
20499 {
20500 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
20501 return *this;
20502 }
20503 CommandBufferBeginInfo& setPNext( const void* pNext_ )
20504 {
20505 pNext = pNext_;
20506 return *this;
20507 }
20508
20509 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
20510 {
20511 flags = flags_;
20512 return *this;
20513 }
20514
20515 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
20516 {
20517 pInheritanceInfo = pInheritanceInfo_;
20518 return *this;
20519 }
20520
20521 operator const VkCommandBufferBeginInfo&() const
20522 {
20523 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
20524 }
20525
20526 bool operator==( CommandBufferBeginInfo const& rhs ) const
20527 {
20528 return ( sType == rhs.sType )
20529 && ( pNext == rhs.pNext )
20530 && ( flags == rhs.flags )
20531 && ( pInheritanceInfo == rhs.pInheritanceInfo );
20532 }
20533
20534 bool operator!=( CommandBufferBeginInfo const& rhs ) const
20535 {
20536 return !operator==( rhs );
20537 }
20538
20539 private:
20540 StructureType sType = StructureType::eCommandBufferBeginInfo;
20541
20542 public:
20543 const void* pNext = nullptr;
20544 CommandBufferUsageFlags flags;
20545 const CommandBufferInheritanceInfo* pInheritanceInfo;
20546 };
20547 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
20548
20549 struct QueryPoolCreateInfo
20550 {
20551 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(),
20552 QueryType queryType_ = QueryType::eOcclusion,
20553 uint32_t queryCount_ = 0,
20554 QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
20555 : flags( flags_ )
20556 , queryType( queryType_ )
20557 , queryCount( queryCount_ )
20558 , pipelineStatistics( pipelineStatistics_ )
20559 {
20560 }
20561
20562 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
20563 {
20564 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
20565 }
20566
20567 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
20568 {
20569 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
20570 return *this;
20571 }
20572 QueryPoolCreateInfo& setPNext( const void* pNext_ )
20573 {
20574 pNext = pNext_;
20575 return *this;
20576 }
20577
20578 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
20579 {
20580 flags = flags_;
20581 return *this;
20582 }
20583
20584 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
20585 {
20586 queryType = queryType_;
20587 return *this;
20588 }
20589
20590 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
20591 {
20592 queryCount = queryCount_;
20593 return *this;
20594 }
20595
20596 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
20597 {
20598 pipelineStatistics = pipelineStatistics_;
20599 return *this;
20600 }
20601
20602 operator const VkQueryPoolCreateInfo&() const
20603 {
20604 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
20605 }
20606
20607 bool operator==( QueryPoolCreateInfo const& rhs ) const
20608 {
20609 return ( sType == rhs.sType )
20610 && ( pNext == rhs.pNext )
20611 && ( flags == rhs.flags )
20612 && ( queryType == rhs.queryType )
20613 && ( queryCount == rhs.queryCount )
20614 && ( pipelineStatistics == rhs.pipelineStatistics );
20615 }
20616
20617 bool operator!=( QueryPoolCreateInfo const& rhs ) const
20618 {
20619 return !operator==( rhs );
20620 }
20621
20622 private:
20623 StructureType sType = StructureType::eQueryPoolCreateInfo;
20624
20625 public:
20626 const void* pNext = nullptr;
20627 QueryPoolCreateFlags flags;
20628 QueryType queryType;
20629 uint32_t queryCount;
20630 QueryPipelineStatisticFlags pipelineStatistics;
20631 };
20632 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
20633
20634 enum class ImageAspectFlagBits
20635 {
20636 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
20637 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
20638 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
20639 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
20640 ePlane0 = VK_IMAGE_ASPECT_PLANE_0_BIT,
20641 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
20642 ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT,
20643 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
20644 ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT,
20645 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT
20646 };
20647
20648 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
20649
20650 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
20651 {
20652 return ImageAspectFlags( bit0 ) | bit1;
20653 }
20654
20655 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
20656 {
20657 return ~( ImageAspectFlags( bits ) );
20658 }
20659
20660 template <> struct FlagTraits<ImageAspectFlagBits>
20661 {
20662 enum
20663 {
20664 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata) | VkFlags(ImageAspectFlagBits::ePlane0) | VkFlags(ImageAspectFlagBits::ePlane1) | VkFlags(ImageAspectFlagBits::ePlane2)
20665 };
20666 };
20667
20668 struct ImageSubresource
20669 {
20670 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
20671 uint32_t mipLevel_ = 0,
20672 uint32_t arrayLayer_ = 0 )
20673 : aspectMask( aspectMask_ )
20674 , mipLevel( mipLevel_ )
20675 , arrayLayer( arrayLayer_ )
20676 {
20677 }
20678
20679 ImageSubresource( VkImageSubresource const & rhs )
20680 {
20681 memcpy( this, &rhs, sizeof( ImageSubresource ) );
20682 }
20683
20684 ImageSubresource& operator=( VkImageSubresource const & rhs )
20685 {
20686 memcpy( this, &rhs, sizeof( ImageSubresource ) );
20687 return *this;
20688 }
20689 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
20690 {
20691 aspectMask = aspectMask_;
20692 return *this;
20693 }
20694
20695 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
20696 {
20697 mipLevel = mipLevel_;
20698 return *this;
20699 }
20700
20701 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
20702 {
20703 arrayLayer = arrayLayer_;
20704 return *this;
20705 }
20706
20707 operator const VkImageSubresource&() const
20708 {
20709 return *reinterpret_cast<const VkImageSubresource*>(this);
20710 }
20711
20712 bool operator==( ImageSubresource const& rhs ) const
20713 {
20714 return ( aspectMask == rhs.aspectMask )
20715 && ( mipLevel == rhs.mipLevel )
20716 && ( arrayLayer == rhs.arrayLayer );
20717 }
20718
20719 bool operator!=( ImageSubresource const& rhs ) const
20720 {
20721 return !operator==( rhs );
20722 }
20723
20724 ImageAspectFlags aspectMask;
20725 uint32_t mipLevel;
20726 uint32_t arrayLayer;
20727 };
20728 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
20729
20730 struct ImageSubresourceLayers
20731 {
20732 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
20733 uint32_t mipLevel_ = 0,
20734 uint32_t baseArrayLayer_ = 0,
20735 uint32_t layerCount_ = 0 )
20736 : aspectMask( aspectMask_ )
20737 , mipLevel( mipLevel_ )
20738 , baseArrayLayer( baseArrayLayer_ )
20739 , layerCount( layerCount_ )
20740 {
20741 }
20742
20743 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
20744 {
20745 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
20746 }
20747
20748 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
20749 {
20750 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
20751 return *this;
20752 }
20753 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
20754 {
20755 aspectMask = aspectMask_;
20756 return *this;
20757 }
20758
20759 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
20760 {
20761 mipLevel = mipLevel_;
20762 return *this;
20763 }
20764
20765 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
20766 {
20767 baseArrayLayer = baseArrayLayer_;
20768 return *this;
20769 }
20770
20771 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
20772 {
20773 layerCount = layerCount_;
20774 return *this;
20775 }
20776
20777 operator const VkImageSubresourceLayers&() const
20778 {
20779 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
20780 }
20781
20782 bool operator==( ImageSubresourceLayers const& rhs ) const
20783 {
20784 return ( aspectMask == rhs.aspectMask )
20785 && ( mipLevel == rhs.mipLevel )
20786 && ( baseArrayLayer == rhs.baseArrayLayer )
20787 && ( layerCount == rhs.layerCount );
20788 }
20789
20790 bool operator!=( ImageSubresourceLayers const& rhs ) const
20791 {
20792 return !operator==( rhs );
20793 }
20794
20795 ImageAspectFlags aspectMask;
20796 uint32_t mipLevel;
20797 uint32_t baseArrayLayer;
20798 uint32_t layerCount;
20799 };
20800 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
20801
20802 struct ImageSubresourceRange
20803 {
20804 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
20805 uint32_t baseMipLevel_ = 0,
20806 uint32_t levelCount_ = 0,
20807 uint32_t baseArrayLayer_ = 0,
20808 uint32_t layerCount_ = 0 )
20809 : aspectMask( aspectMask_ )
20810 , baseMipLevel( baseMipLevel_ )
20811 , levelCount( levelCount_ )
20812 , baseArrayLayer( baseArrayLayer_ )
20813 , layerCount( layerCount_ )
20814 {
20815 }
20816
20817 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
20818 {
20819 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
20820 }
20821
20822 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
20823 {
20824 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
20825 return *this;
20826 }
20827 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
20828 {
20829 aspectMask = aspectMask_;
20830 return *this;
20831 }
20832
20833 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
20834 {
20835 baseMipLevel = baseMipLevel_;
20836 return *this;
20837 }
20838
20839 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
20840 {
20841 levelCount = levelCount_;
20842 return *this;
20843 }
20844
20845 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
20846 {
20847 baseArrayLayer = baseArrayLayer_;
20848 return *this;
20849 }
20850
20851 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
20852 {
20853 layerCount = layerCount_;
20854 return *this;
20855 }
20856
20857 operator const VkImageSubresourceRange&() const
20858 {
20859 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
20860 }
20861
20862 bool operator==( ImageSubresourceRange const& rhs ) const
20863 {
20864 return ( aspectMask == rhs.aspectMask )
20865 && ( baseMipLevel == rhs.baseMipLevel )
20866 && ( levelCount == rhs.levelCount )
20867 && ( baseArrayLayer == rhs.baseArrayLayer )
20868 && ( layerCount == rhs.layerCount );
20869 }
20870
20871 bool operator!=( ImageSubresourceRange const& rhs ) const
20872 {
20873 return !operator==( rhs );
20874 }
20875
20876 ImageAspectFlags aspectMask;
20877 uint32_t baseMipLevel;
20878 uint32_t levelCount;
20879 uint32_t baseArrayLayer;
20880 uint32_t layerCount;
20881 };
20882 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
20883
20884 struct ImageMemoryBarrier
20885 {
20886 ImageMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(),
20887 AccessFlags dstAccessMask_ = AccessFlags(),
20888 ImageLayout oldLayout_ = ImageLayout::eUndefined,
20889 ImageLayout newLayout_ = ImageLayout::eUndefined,
20890 uint32_t srcQueueFamilyIndex_ = 0,
20891 uint32_t dstQueueFamilyIndex_ = 0,
20892 Image image_ = Image(),
20893 ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
20894 : srcAccessMask( srcAccessMask_ )
20895 , dstAccessMask( dstAccessMask_ )
20896 , oldLayout( oldLayout_ )
20897 , newLayout( newLayout_ )
20898 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
20899 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
20900 , image( image_ )
20901 , subresourceRange( subresourceRange_ )
20902 {
20903 }
20904
20905 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
20906 {
20907 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
20908 }
20909
20910 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
20911 {
20912 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
20913 return *this;
20914 }
20915 ImageMemoryBarrier& setPNext( const void* pNext_ )
20916 {
20917 pNext = pNext_;
20918 return *this;
20919 }
20920
20921 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
20922 {
20923 srcAccessMask = srcAccessMask_;
20924 return *this;
20925 }
20926
20927 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
20928 {
20929 dstAccessMask = dstAccessMask_;
20930 return *this;
20931 }
20932
20933 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
20934 {
20935 oldLayout = oldLayout_;
20936 return *this;
20937 }
20938
20939 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
20940 {
20941 newLayout = newLayout_;
20942 return *this;
20943 }
20944
20945 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
20946 {
20947 srcQueueFamilyIndex = srcQueueFamilyIndex_;
20948 return *this;
20949 }
20950
20951 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
20952 {
20953 dstQueueFamilyIndex = dstQueueFamilyIndex_;
20954 return *this;
20955 }
20956
20957 ImageMemoryBarrier& setImage( Image image_ )
20958 {
20959 image = image_;
20960 return *this;
20961 }
20962
20963 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
20964 {
20965 subresourceRange = subresourceRange_;
20966 return *this;
20967 }
20968
20969 operator const VkImageMemoryBarrier&() const
20970 {
20971 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
20972 }
20973
20974 bool operator==( ImageMemoryBarrier const& rhs ) const
20975 {
20976 return ( sType == rhs.sType )
20977 && ( pNext == rhs.pNext )
20978 && ( srcAccessMask == rhs.srcAccessMask )
20979 && ( dstAccessMask == rhs.dstAccessMask )
20980 && ( oldLayout == rhs.oldLayout )
20981 && ( newLayout == rhs.newLayout )
20982 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
20983 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
20984 && ( image == rhs.image )
20985 && ( subresourceRange == rhs.subresourceRange );
20986 }
20987
20988 bool operator!=( ImageMemoryBarrier const& rhs ) const
20989 {
20990 return !operator==( rhs );
20991 }
20992
20993 private:
20994 StructureType sType = StructureType::eImageMemoryBarrier;
20995
20996 public:
20997 const void* pNext = nullptr;
20998 AccessFlags srcAccessMask;
20999 AccessFlags dstAccessMask;
21000 ImageLayout oldLayout;
21001 ImageLayout newLayout;
21002 uint32_t srcQueueFamilyIndex;
21003 uint32_t dstQueueFamilyIndex;
21004 Image image;
21005 ImageSubresourceRange subresourceRange;
21006 };
21007 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
21008
21009 struct ImageViewCreateInfo
21010 {
21011 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(),
21012 Image image_ = Image(),
21013 ImageViewType viewType_ = ImageViewType::e1D,
21014 Format format_ = Format::eUndefined,
21015 ComponentMapping components_ = ComponentMapping(),
21016 ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
21017 : flags( flags_ )
21018 , image( image_ )
21019 , viewType( viewType_ )
21020 , format( format_ )
21021 , components( components_ )
21022 , subresourceRange( subresourceRange_ )
21023 {
21024 }
21025
21026 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
21027 {
21028 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
21029 }
21030
21031 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
21032 {
21033 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
21034 return *this;
21035 }
21036 ImageViewCreateInfo& setPNext( const void* pNext_ )
21037 {
21038 pNext = pNext_;
21039 return *this;
21040 }
21041
21042 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
21043 {
21044 flags = flags_;
21045 return *this;
21046 }
21047
21048 ImageViewCreateInfo& setImage( Image image_ )
21049 {
21050 image = image_;
21051 return *this;
21052 }
21053
21054 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
21055 {
21056 viewType = viewType_;
21057 return *this;
21058 }
21059
21060 ImageViewCreateInfo& setFormat( Format format_ )
21061 {
21062 format = format_;
21063 return *this;
21064 }
21065
21066 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
21067 {
21068 components = components_;
21069 return *this;
21070 }
21071
21072 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
21073 {
21074 subresourceRange = subresourceRange_;
21075 return *this;
21076 }
21077
21078 operator const VkImageViewCreateInfo&() const
21079 {
21080 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
21081 }
21082
21083 bool operator==( ImageViewCreateInfo const& rhs ) const
21084 {
21085 return ( sType == rhs.sType )
21086 && ( pNext == rhs.pNext )
21087 && ( flags == rhs.flags )
21088 && ( image == rhs.image )
21089 && ( viewType == rhs.viewType )
21090 && ( format == rhs.format )
21091 && ( components == rhs.components )
21092 && ( subresourceRange == rhs.subresourceRange );
21093 }
21094
21095 bool operator!=( ImageViewCreateInfo const& rhs ) const
21096 {
21097 return !operator==( rhs );
21098 }
21099
21100 private:
21101 StructureType sType = StructureType::eImageViewCreateInfo;
21102
21103 public:
21104 const void* pNext = nullptr;
21105 ImageViewCreateFlags flags;
21106 Image image;
21107 ImageViewType viewType;
21108 Format format;
21109 ComponentMapping components;
21110 ImageSubresourceRange subresourceRange;
21111 };
21112 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
21113
21114 struct ImageCopy
21115 {
21116 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
21117 Offset3D srcOffset_ = Offset3D(),
21118 ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
21119 Offset3D dstOffset_ = Offset3D(),
21120 Extent3D extent_ = Extent3D() )
21121 : srcSubresource( srcSubresource_ )
21122 , srcOffset( srcOffset_ )
21123 , dstSubresource( dstSubresource_ )
21124 , dstOffset( dstOffset_ )
21125 , extent( extent_ )
21126 {
21127 }
21128
21129 ImageCopy( VkImageCopy const & rhs )
21130 {
21131 memcpy( this, &rhs, sizeof( ImageCopy ) );
21132 }
21133
21134 ImageCopy& operator=( VkImageCopy const & rhs )
21135 {
21136 memcpy( this, &rhs, sizeof( ImageCopy ) );
21137 return *this;
21138 }
21139 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
21140 {
21141 srcSubresource = srcSubresource_;
21142 return *this;
21143 }
21144
21145 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
21146 {
21147 srcOffset = srcOffset_;
21148 return *this;
21149 }
21150
21151 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
21152 {
21153 dstSubresource = dstSubresource_;
21154 return *this;
21155 }
21156
21157 ImageCopy& setDstOffset( Offset3D dstOffset_ )
21158 {
21159 dstOffset = dstOffset_;
21160 return *this;
21161 }
21162
21163 ImageCopy& setExtent( Extent3D extent_ )
21164 {
21165 extent = extent_;
21166 return *this;
21167 }
21168
21169 operator const VkImageCopy&() const
21170 {
21171 return *reinterpret_cast<const VkImageCopy*>(this);
21172 }
21173
21174 bool operator==( ImageCopy const& rhs ) const
21175 {
21176 return ( srcSubresource == rhs.srcSubresource )
21177 && ( srcOffset == rhs.srcOffset )
21178 && ( dstSubresource == rhs.dstSubresource )
21179 && ( dstOffset == rhs.dstOffset )
21180 && ( extent == rhs.extent );
21181 }
21182
21183 bool operator!=( ImageCopy const& rhs ) const
21184 {
21185 return !operator==( rhs );
21186 }
21187
21188 ImageSubresourceLayers srcSubresource;
21189 Offset3D srcOffset;
21190 ImageSubresourceLayers dstSubresource;
21191 Offset3D dstOffset;
21192 Extent3D extent;
21193 };
21194 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
21195
21196 struct ImageBlit
21197 {
21198 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
21199 std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } },
21200 ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
21201 std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
21202 : srcSubresource( srcSubresource_ )
21203 , dstSubresource( dstSubresource_ )
21204 {
21205 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
21206 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
21207 }
21208
21209 ImageBlit( VkImageBlit const & rhs )
21210 {
21211 memcpy( this, &rhs, sizeof( ImageBlit ) );
21212 }
21213
21214 ImageBlit& operator=( VkImageBlit const & rhs )
21215 {
21216 memcpy( this, &rhs, sizeof( ImageBlit ) );
21217 return *this;
21218 }
21219 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
21220 {
21221 srcSubresource = srcSubresource_;
21222 return *this;
21223 }
21224
21225 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
21226 {
21227 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
21228 return *this;
21229 }
21230
21231 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
21232 {
21233 dstSubresource = dstSubresource_;
21234 return *this;
21235 }
21236
21237 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
21238 {
21239 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
21240 return *this;
21241 }
21242
21243 operator const VkImageBlit&() const
21244 {
21245 return *reinterpret_cast<const VkImageBlit*>(this);
21246 }
21247
21248 bool operator==( ImageBlit const& rhs ) const
21249 {
21250 return ( srcSubresource == rhs.srcSubresource )
21251 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
21252 && ( dstSubresource == rhs.dstSubresource )
21253 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
21254 }
21255
21256 bool operator!=( ImageBlit const& rhs ) const
21257 {
21258 return !operator==( rhs );
21259 }
21260
21261 ImageSubresourceLayers srcSubresource;
21262 Offset3D srcOffsets[2];
21263 ImageSubresourceLayers dstSubresource;
21264 Offset3D dstOffsets[2];
21265 };
21266 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
21267
21268 struct BufferImageCopy
21269 {
21270 BufferImageCopy( DeviceSize bufferOffset_ = 0,
21271 uint32_t bufferRowLength_ = 0,
21272 uint32_t bufferImageHeight_ = 0,
21273 ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(),
21274 Offset3D imageOffset_ = Offset3D(),
21275 Extent3D imageExtent_ = Extent3D() )
21276 : bufferOffset( bufferOffset_ )
21277 , bufferRowLength( bufferRowLength_ )
21278 , bufferImageHeight( bufferImageHeight_ )
21279 , imageSubresource( imageSubresource_ )
21280 , imageOffset( imageOffset_ )
21281 , imageExtent( imageExtent_ )
21282 {
21283 }
21284
21285 BufferImageCopy( VkBufferImageCopy const & rhs )
21286 {
21287 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
21288 }
21289
21290 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
21291 {
21292 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
21293 return *this;
21294 }
21295 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
21296 {
21297 bufferOffset = bufferOffset_;
21298 return *this;
21299 }
21300
21301 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
21302 {
21303 bufferRowLength = bufferRowLength_;
21304 return *this;
21305 }
21306
21307 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
21308 {
21309 bufferImageHeight = bufferImageHeight_;
21310 return *this;
21311 }
21312
21313 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
21314 {
21315 imageSubresource = imageSubresource_;
21316 return *this;
21317 }
21318
21319 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
21320 {
21321 imageOffset = imageOffset_;
21322 return *this;
21323 }
21324
21325 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
21326 {
21327 imageExtent = imageExtent_;
21328 return *this;
21329 }
21330
21331 operator const VkBufferImageCopy&() const
21332 {
21333 return *reinterpret_cast<const VkBufferImageCopy*>(this);
21334 }
21335
21336 bool operator==( BufferImageCopy const& rhs ) const
21337 {
21338 return ( bufferOffset == rhs.bufferOffset )
21339 && ( bufferRowLength == rhs.bufferRowLength )
21340 && ( bufferImageHeight == rhs.bufferImageHeight )
21341 && ( imageSubresource == rhs.imageSubresource )
21342 && ( imageOffset == rhs.imageOffset )
21343 && ( imageExtent == rhs.imageExtent );
21344 }
21345
21346 bool operator!=( BufferImageCopy const& rhs ) const
21347 {
21348 return !operator==( rhs );
21349 }
21350
21351 DeviceSize bufferOffset;
21352 uint32_t bufferRowLength;
21353 uint32_t bufferImageHeight;
21354 ImageSubresourceLayers imageSubresource;
21355 Offset3D imageOffset;
21356 Extent3D imageExtent;
21357 };
21358 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
21359
21360 struct ImageResolve
21361 {
21362 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(),
21363 Offset3D srcOffset_ = Offset3D(),
21364 ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(),
21365 Offset3D dstOffset_ = Offset3D(),
21366 Extent3D extent_ = Extent3D() )
21367 : srcSubresource( srcSubresource_ )
21368 , srcOffset( srcOffset_ )
21369 , dstSubresource( dstSubresource_ )
21370 , dstOffset( dstOffset_ )
21371 , extent( extent_ )
21372 {
21373 }
21374
21375 ImageResolve( VkImageResolve const & rhs )
21376 {
21377 memcpy( this, &rhs, sizeof( ImageResolve ) );
21378 }
21379
21380 ImageResolve& operator=( VkImageResolve const & rhs )
21381 {
21382 memcpy( this, &rhs, sizeof( ImageResolve ) );
21383 return *this;
21384 }
21385 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
21386 {
21387 srcSubresource = srcSubresource_;
21388 return *this;
21389 }
21390
21391 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
21392 {
21393 srcOffset = srcOffset_;
21394 return *this;
21395 }
21396
21397 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
21398 {
21399 dstSubresource = dstSubresource_;
21400 return *this;
21401 }
21402
21403 ImageResolve& setDstOffset( Offset3D dstOffset_ )
21404 {
21405 dstOffset = dstOffset_;
21406 return *this;
21407 }
21408
21409 ImageResolve& setExtent( Extent3D extent_ )
21410 {
21411 extent = extent_;
21412 return *this;
21413 }
21414
21415 operator const VkImageResolve&() const
21416 {
21417 return *reinterpret_cast<const VkImageResolve*>(this);
21418 }
21419
21420 bool operator==( ImageResolve const& rhs ) const
21421 {
21422 return ( srcSubresource == rhs.srcSubresource )
21423 && ( srcOffset == rhs.srcOffset )
21424 && ( dstSubresource == rhs.dstSubresource )
21425 && ( dstOffset == rhs.dstOffset )
21426 && ( extent == rhs.extent );
21427 }
21428
21429 bool operator!=( ImageResolve const& rhs ) const
21430 {
21431 return !operator==( rhs );
21432 }
21433
21434 ImageSubresourceLayers srcSubresource;
21435 Offset3D srcOffset;
21436 ImageSubresourceLayers dstSubresource;
21437 Offset3D dstOffset;
21438 Extent3D extent;
21439 };
21440 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
21441
21442 struct ClearAttachment
21443 {
21444 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(),
21445 uint32_t colorAttachment_ = 0,
21446 ClearValue clearValue_ = ClearValue() )
21447 : aspectMask( aspectMask_ )
21448 , colorAttachment( colorAttachment_ )
21449 , clearValue( clearValue_ )
21450 {
21451 }
21452
21453 ClearAttachment( VkClearAttachment const & rhs )
21454 {
21455 memcpy( this, &rhs, sizeof( ClearAttachment ) );
21456 }
21457
21458 ClearAttachment& operator=( VkClearAttachment const & rhs )
21459 {
21460 memcpy( this, &rhs, sizeof( ClearAttachment ) );
21461 return *this;
21462 }
21463 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
21464 {
21465 aspectMask = aspectMask_;
21466 return *this;
21467 }
21468
21469 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
21470 {
21471 colorAttachment = colorAttachment_;
21472 return *this;
21473 }
21474
21475 ClearAttachment& setClearValue( ClearValue clearValue_ )
21476 {
21477 clearValue = clearValue_;
21478 return *this;
21479 }
21480
21481 operator const VkClearAttachment&() const
21482 {
21483 return *reinterpret_cast<const VkClearAttachment*>(this);
21484 }
21485
21486 ImageAspectFlags aspectMask;
21487 uint32_t colorAttachment;
21488 ClearValue clearValue;
21489 };
21490 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
21491
21492 struct InputAttachmentAspectReference
21493 {
21494 InputAttachmentAspectReference( uint32_t subpass_ = 0,
21495 uint32_t inputAttachmentIndex_ = 0,
21496 ImageAspectFlags aspectMask_ = ImageAspectFlags() )
21497 : subpass( subpass_ )
21498 , inputAttachmentIndex( inputAttachmentIndex_ )
21499 , aspectMask( aspectMask_ )
21500 {
21501 }
21502
21503 InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs )
21504 {
21505 memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
21506 }
21507
21508 InputAttachmentAspectReference& operator=( VkInputAttachmentAspectReference const & rhs )
21509 {
21510 memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
21511 return *this;
21512 }
21513 InputAttachmentAspectReference& setSubpass( uint32_t subpass_ )
21514 {
21515 subpass = subpass_;
21516 return *this;
21517 }
21518
21519 InputAttachmentAspectReference& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
21520 {
21521 inputAttachmentIndex = inputAttachmentIndex_;
21522 return *this;
21523 }
21524
21525 InputAttachmentAspectReference& setAspectMask( ImageAspectFlags aspectMask_ )
21526 {
21527 aspectMask = aspectMask_;
21528 return *this;
21529 }
21530
21531 operator const VkInputAttachmentAspectReference&() const
21532 {
21533 return *reinterpret_cast<const VkInputAttachmentAspectReference*>(this);
21534 }
21535
21536 bool operator==( InputAttachmentAspectReference const& rhs ) const
21537 {
21538 return ( subpass == rhs.subpass )
21539 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
21540 && ( aspectMask == rhs.aspectMask );
21541 }
21542
21543 bool operator!=( InputAttachmentAspectReference const& rhs ) const
21544 {
21545 return !operator==( rhs );
21546 }
21547
21548 uint32_t subpass;
21549 uint32_t inputAttachmentIndex;
21550 ImageAspectFlags aspectMask;
21551 };
21552 static_assert( sizeof( InputAttachmentAspectReference ) == sizeof( VkInputAttachmentAspectReference ), "struct and wrapper have different size!" );
21553
21554 using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
21555
21556 struct RenderPassInputAttachmentAspectCreateInfo
21557 {
21558 RenderPassInputAttachmentAspectCreateInfo( uint32_t aspectReferenceCount_ = 0,
21559 const InputAttachmentAspectReference* pAspectReferences_ = nullptr )
21560 : aspectReferenceCount( aspectReferenceCount_ )
21561 , pAspectReferences( pAspectReferences_ )
21562 {
21563 }
21564
21565 RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
21566 {
21567 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
21568 }
21569
21570 RenderPassInputAttachmentAspectCreateInfo& operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
21571 {
21572 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
21573 return *this;
21574 }
21575 RenderPassInputAttachmentAspectCreateInfo& setPNext( const void* pNext_ )
21576 {
21577 pNext = pNext_;
21578 return *this;
21579 }
21580
21581 RenderPassInputAttachmentAspectCreateInfo& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
21582 {
21583 aspectReferenceCount = aspectReferenceCount_;
21584 return *this;
21585 }
21586
21587 RenderPassInputAttachmentAspectCreateInfo& setPAspectReferences( const InputAttachmentAspectReference* pAspectReferences_ )
21588 {
21589 pAspectReferences = pAspectReferences_;
21590 return *this;
21591 }
21592
21593 operator const VkRenderPassInputAttachmentAspectCreateInfo&() const
21594 {
21595 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(this);
21596 }
21597
21598 bool operator==( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const
21599 {
21600 return ( sType == rhs.sType )
21601 && ( pNext == rhs.pNext )
21602 && ( aspectReferenceCount == rhs.aspectReferenceCount )
21603 && ( pAspectReferences == rhs.pAspectReferences );
21604 }
21605
21606 bool operator!=( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const
21607 {
21608 return !operator==( rhs );
21609 }
21610
21611 private:
21612 StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
21613
21614 public:
21615 const void* pNext = nullptr;
21616 uint32_t aspectReferenceCount;
21617 const InputAttachmentAspectReference* pAspectReferences;
21618 };
21619 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), "struct and wrapper have different size!" );
21620
21621 using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
21622
21623 struct BindImagePlaneMemoryInfo
21624 {
21625 BindImagePlaneMemoryInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
21626 : planeAspect( planeAspect_ )
21627 {
21628 }
21629
21630 BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs )
21631 {
21632 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
21633 }
21634
21635 BindImagePlaneMemoryInfo& operator=( VkBindImagePlaneMemoryInfo const & rhs )
21636 {
21637 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
21638 return *this;
21639 }
21640 BindImagePlaneMemoryInfo& setPNext( const void* pNext_ )
21641 {
21642 pNext = pNext_;
21643 return *this;
21644 }
21645
21646 BindImagePlaneMemoryInfo& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
21647 {
21648 planeAspect = planeAspect_;
21649 return *this;
21650 }
21651
21652 operator const VkBindImagePlaneMemoryInfo&() const
21653 {
21654 return *reinterpret_cast<const VkBindImagePlaneMemoryInfo*>(this);
21655 }
21656
21657 bool operator==( BindImagePlaneMemoryInfo const& rhs ) const
21658 {
21659 return ( sType == rhs.sType )
21660 && ( pNext == rhs.pNext )
21661 && ( planeAspect == rhs.planeAspect );
21662 }
21663
21664 bool operator!=( BindImagePlaneMemoryInfo const& rhs ) const
21665 {
21666 return !operator==( rhs );
21667 }
21668
21669 private:
21670 StructureType sType = StructureType::eBindImagePlaneMemoryInfo;
21671
21672 public:
21673 const void* pNext = nullptr;
21674 ImageAspectFlagBits planeAspect;
21675 };
21676 static_assert( sizeof( BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), "struct and wrapper have different size!" );
21677
21678 using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
21679
21680 struct ImagePlaneMemoryRequirementsInfo
21681 {
21682 ImagePlaneMemoryRequirementsInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
21683 : planeAspect( planeAspect_ )
21684 {
21685 }
21686
21687 ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs )
21688 {
21689 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
21690 }
21691
21692 ImagePlaneMemoryRequirementsInfo& operator=( VkImagePlaneMemoryRequirementsInfo const & rhs )
21693 {
21694 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
21695 return *this;
21696 }
21697 ImagePlaneMemoryRequirementsInfo& setPNext( const void* pNext_ )
21698 {
21699 pNext = pNext_;
21700 return *this;
21701 }
21702
21703 ImagePlaneMemoryRequirementsInfo& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
21704 {
21705 planeAspect = planeAspect_;
21706 return *this;
21707 }
21708
21709 operator const VkImagePlaneMemoryRequirementsInfo&() const
21710 {
21711 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>(this);
21712 }
21713
21714 bool operator==( ImagePlaneMemoryRequirementsInfo const& rhs ) const
21715 {
21716 return ( sType == rhs.sType )
21717 && ( pNext == rhs.pNext )
21718 && ( planeAspect == rhs.planeAspect );
21719 }
21720
21721 bool operator!=( ImagePlaneMemoryRequirementsInfo const& rhs ) const
21722 {
21723 return !operator==( rhs );
21724 }
21725
21726 private:
21727 StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo;
21728
21729 public:
21730 const void* pNext = nullptr;
21731 ImageAspectFlagBits planeAspect;
21732 };
21733 static_assert( sizeof( ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), "struct and wrapper have different size!" );
21734
21735 using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
21736
21737 struct AttachmentReference2KHR
21738 {
21739 AttachmentReference2KHR( uint32_t attachment_ = 0,
21740 ImageLayout layout_ = ImageLayout::eUndefined,
21741 ImageAspectFlags aspectMask_ = ImageAspectFlags() )
21742 : attachment( attachment_ )
21743 , layout( layout_ )
21744 , aspectMask( aspectMask_ )
21745 {
21746 }
21747
21748 AttachmentReference2KHR( VkAttachmentReference2KHR const & rhs )
21749 {
21750 memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
21751 }
21752
21753 AttachmentReference2KHR& operator=( VkAttachmentReference2KHR const & rhs )
21754 {
21755 memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
21756 return *this;
21757 }
21758 AttachmentReference2KHR& setPNext( const void* pNext_ )
21759 {
21760 pNext = pNext_;
21761 return *this;
21762 }
21763
21764 AttachmentReference2KHR& setAttachment( uint32_t attachment_ )
21765 {
21766 attachment = attachment_;
21767 return *this;
21768 }
21769
21770 AttachmentReference2KHR& setLayout( ImageLayout layout_ )
21771 {
21772 layout = layout_;
21773 return *this;
21774 }
21775
21776 AttachmentReference2KHR& setAspectMask( ImageAspectFlags aspectMask_ )
21777 {
21778 aspectMask = aspectMask_;
21779 return *this;
21780 }
21781
21782 operator const VkAttachmentReference2KHR&() const
21783 {
21784 return *reinterpret_cast<const VkAttachmentReference2KHR*>(this);
21785 }
21786
21787 bool operator==( AttachmentReference2KHR const& rhs ) const
21788 {
21789 return ( sType == rhs.sType )
21790 && ( pNext == rhs.pNext )
21791 && ( attachment == rhs.attachment )
21792 && ( layout == rhs.layout )
21793 && ( aspectMask == rhs.aspectMask );
21794 }
21795
21796 bool operator!=( AttachmentReference2KHR const& rhs ) const
21797 {
21798 return !operator==( rhs );
21799 }
21800
21801 private:
21802 StructureType sType = StructureType::eAttachmentReference2KHR;
21803
21804 public:
21805 const void* pNext = nullptr;
21806 uint32_t attachment;
21807 ImageLayout layout;
21808 ImageAspectFlags aspectMask;
21809 };
21810 static_assert( sizeof( AttachmentReference2KHR ) == sizeof( VkAttachmentReference2KHR ), "struct and wrapper have different size!" );
21811
21812 enum class SparseImageFormatFlagBits
21813 {
21814 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
21815 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
21816 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
21817 };
21818
21819 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
21820
21821 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
21822 {
21823 return SparseImageFormatFlags( bit0 ) | bit1;
21824 }
21825
21826 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
21827 {
21828 return ~( SparseImageFormatFlags( bits ) );
21829 }
21830
21831 template <> struct FlagTraits<SparseImageFormatFlagBits>
21832 {
21833 enum
21834 {
21835 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
21836 };
21837 };
21838
21839 struct SparseImageFormatProperties
21840 {
21841 operator const VkSparseImageFormatProperties&() const
21842 {
21843 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
21844 }
21845
21846 bool operator==( SparseImageFormatProperties const& rhs ) const
21847 {
21848 return ( aspectMask == rhs.aspectMask )
21849 && ( imageGranularity == rhs.imageGranularity )
21850 && ( flags == rhs.flags );
21851 }
21852
21853 bool operator!=( SparseImageFormatProperties const& rhs ) const
21854 {
21855 return !operator==( rhs );
21856 }
21857
21858 ImageAspectFlags aspectMask;
21859 Extent3D imageGranularity;
21860 SparseImageFormatFlags flags;
21861 };
21862 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
21863
21864 struct SparseImageMemoryRequirements
21865 {
21866 operator const VkSparseImageMemoryRequirements&() const
21867 {
21868 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
21869 }
21870
21871 bool operator==( SparseImageMemoryRequirements const& rhs ) const
21872 {
21873 return ( formatProperties == rhs.formatProperties )
21874 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
21875 && ( imageMipTailSize == rhs.imageMipTailSize )
21876 && ( imageMipTailOffset == rhs.imageMipTailOffset )
21877 && ( imageMipTailStride == rhs.imageMipTailStride );
21878 }
21879
21880 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
21881 {
21882 return !operator==( rhs );
21883 }
21884
21885 SparseImageFormatProperties formatProperties;
21886 uint32_t imageMipTailFirstLod;
21887 DeviceSize imageMipTailSize;
21888 DeviceSize imageMipTailOffset;
21889 DeviceSize imageMipTailStride;
21890 };
21891 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
21892
21893 struct SparseImageFormatProperties2
21894 {
21895 operator const VkSparseImageFormatProperties2&() const
21896 {
21897 return *reinterpret_cast<const VkSparseImageFormatProperties2*>(this);
21898 }
21899
21900 bool operator==( SparseImageFormatProperties2 const& rhs ) const
21901 {
21902 return ( sType == rhs.sType )
21903 && ( pNext == rhs.pNext )
21904 && ( properties == rhs.properties );
21905 }
21906
21907 bool operator!=( SparseImageFormatProperties2 const& rhs ) const
21908 {
21909 return !operator==( rhs );
21910 }
21911
21912 private:
21913 StructureType sType = StructureType::eSparseImageFormatProperties2;
21914
21915 public:
21916 void* pNext = nullptr;
21917 SparseImageFormatProperties properties;
21918 };
21919 static_assert( sizeof( SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), "struct and wrapper have different size!" );
21920
21921 using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
21922
21923 struct SparseImageMemoryRequirements2
21924 {
21925 operator const VkSparseImageMemoryRequirements2&() const
21926 {
21927 return *reinterpret_cast<const VkSparseImageMemoryRequirements2*>(this);
21928 }
21929
21930 bool operator==( SparseImageMemoryRequirements2 const& rhs ) const
21931 {
21932 return ( sType == rhs.sType )
21933 && ( pNext == rhs.pNext )
21934 && ( memoryRequirements == rhs.memoryRequirements );
21935 }
21936
21937 bool operator!=( SparseImageMemoryRequirements2 const& rhs ) const
21938 {
21939 return !operator==( rhs );
21940 }
21941
21942 private:
21943 StructureType sType = StructureType::eSparseImageMemoryRequirements2;
21944
21945 public:
21946 void* pNext = nullptr;
21947 SparseImageMemoryRequirements memoryRequirements;
21948 };
21949 static_assert( sizeof( SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), "struct and wrapper have different size!" );
21950
21951 using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
21952
21953 enum class SparseMemoryBindFlagBits
21954 {
21955 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
21956 };
21957
21958 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
21959
21960 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
21961 {
21962 return SparseMemoryBindFlags( bit0 ) | bit1;
21963 }
21964
21965 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
21966 {
21967 return ~( SparseMemoryBindFlags( bits ) );
21968 }
21969
21970 template <> struct FlagTraits<SparseMemoryBindFlagBits>
21971 {
21972 enum
21973 {
21974 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
21975 };
21976 };
21977
21978 struct SparseMemoryBind
21979 {
21980 SparseMemoryBind( DeviceSize resourceOffset_ = 0,
21981 DeviceSize size_ = 0,
21982 DeviceMemory memory_ = DeviceMemory(),
21983 DeviceSize memoryOffset_ = 0,
21984 SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
21985 : resourceOffset( resourceOffset_ )
21986 , size( size_ )
21987 , memory( memory_ )
21988 , memoryOffset( memoryOffset_ )
21989 , flags( flags_ )
21990 {
21991 }
21992
21993 SparseMemoryBind( VkSparseMemoryBind const & rhs )
21994 {
21995 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
21996 }
21997
21998 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
21999 {
22000 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
22001 return *this;
22002 }
22003 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
22004 {
22005 resourceOffset = resourceOffset_;
22006 return *this;
22007 }
22008
22009 SparseMemoryBind& setSize( DeviceSize size_ )
22010 {
22011 size = size_;
22012 return *this;
22013 }
22014
22015 SparseMemoryBind& setMemory( DeviceMemory memory_ )
22016 {
22017 memory = memory_;
22018 return *this;
22019 }
22020
22021 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
22022 {
22023 memoryOffset = memoryOffset_;
22024 return *this;
22025 }
22026
22027 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
22028 {
22029 flags = flags_;
22030 return *this;
22031 }
22032
22033 operator const VkSparseMemoryBind&() const
22034 {
22035 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
22036 }
22037
22038 bool operator==( SparseMemoryBind const& rhs ) const
22039 {
22040 return ( resourceOffset == rhs.resourceOffset )
22041 && ( size == rhs.size )
22042 && ( memory == rhs.memory )
22043 && ( memoryOffset == rhs.memoryOffset )
22044 && ( flags == rhs.flags );
22045 }
22046
22047 bool operator!=( SparseMemoryBind const& rhs ) const
22048 {
22049 return !operator==( rhs );
22050 }
22051
22052 DeviceSize resourceOffset;
22053 DeviceSize size;
22054 DeviceMemory memory;
22055 DeviceSize memoryOffset;
22056 SparseMemoryBindFlags flags;
22057 };
22058 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
22059
22060 struct SparseImageMemoryBind
22061 {
22062 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(),
22063 Offset3D offset_ = Offset3D(),
22064 Extent3D extent_ = Extent3D(),
22065 DeviceMemory memory_ = DeviceMemory(),
22066 DeviceSize memoryOffset_ = 0,
22067 SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
22068 : subresource( subresource_ )
22069 , offset( offset_ )
22070 , extent( extent_ )
22071 , memory( memory_ )
22072 , memoryOffset( memoryOffset_ )
22073 , flags( flags_ )
22074 {
22075 }
22076
22077 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
22078 {
22079 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
22080 }
22081
22082 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
22083 {
22084 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
22085 return *this;
22086 }
22087 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
22088 {
22089 subresource = subresource_;
22090 return *this;
22091 }
22092
22093 SparseImageMemoryBind& setOffset( Offset3D offset_ )
22094 {
22095 offset = offset_;
22096 return *this;
22097 }
22098
22099 SparseImageMemoryBind& setExtent( Extent3D extent_ )
22100 {
22101 extent = extent_;
22102 return *this;
22103 }
22104
22105 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
22106 {
22107 memory = memory_;
22108 return *this;
22109 }
22110
22111 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
22112 {
22113 memoryOffset = memoryOffset_;
22114 return *this;
22115 }
22116
22117 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
22118 {
22119 flags = flags_;
22120 return *this;
22121 }
22122
22123 operator const VkSparseImageMemoryBind&() const
22124 {
22125 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
22126 }
22127
22128 bool operator==( SparseImageMemoryBind const& rhs ) const
22129 {
22130 return ( subresource == rhs.subresource )
22131 && ( offset == rhs.offset )
22132 && ( extent == rhs.extent )
22133 && ( memory == rhs.memory )
22134 && ( memoryOffset == rhs.memoryOffset )
22135 && ( flags == rhs.flags );
22136 }
22137
22138 bool operator!=( SparseImageMemoryBind const& rhs ) const
22139 {
22140 return !operator==( rhs );
22141 }
22142
22143 ImageSubresource subresource;
22144 Offset3D offset;
22145 Extent3D extent;
22146 DeviceMemory memory;
22147 DeviceSize memoryOffset;
22148 SparseMemoryBindFlags flags;
22149 };
22150 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
22151
22152 struct SparseBufferMemoryBindInfo
22153 {
22154 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(),
22155 uint32_t bindCount_ = 0,
22156 const SparseMemoryBind* pBinds_ = nullptr )
22157 : buffer( buffer_ )
22158 , bindCount( bindCount_ )
22159 , pBinds( pBinds_ )
22160 {
22161 }
22162
22163 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
22164 {
22165 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
22166 }
22167
22168 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
22169 {
22170 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
22171 return *this;
22172 }
22173 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
22174 {
22175 buffer = buffer_;
22176 return *this;
22177 }
22178
22179 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
22180 {
22181 bindCount = bindCount_;
22182 return *this;
22183 }
22184
22185 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
22186 {
22187 pBinds = pBinds_;
22188 return *this;
22189 }
22190
22191 operator const VkSparseBufferMemoryBindInfo&() const
22192 {
22193 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
22194 }
22195
22196 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
22197 {
22198 return ( buffer == rhs.buffer )
22199 && ( bindCount == rhs.bindCount )
22200 && ( pBinds == rhs.pBinds );
22201 }
22202
22203 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
22204 {
22205 return !operator==( rhs );
22206 }
22207
22208 Buffer buffer;
22209 uint32_t bindCount;
22210 const SparseMemoryBind* pBinds;
22211 };
22212 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
22213
22214 struct SparseImageOpaqueMemoryBindInfo
22215 {
22216 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(),
22217 uint32_t bindCount_ = 0,
22218 const SparseMemoryBind* pBinds_ = nullptr )
22219 : image( image_ )
22220 , bindCount( bindCount_ )
22221 , pBinds( pBinds_ )
22222 {
22223 }
22224
22225 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
22226 {
22227 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
22228 }
22229
22230 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
22231 {
22232 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
22233 return *this;
22234 }
22235 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
22236 {
22237 image = image_;
22238 return *this;
22239 }
22240
22241 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
22242 {
22243 bindCount = bindCount_;
22244 return *this;
22245 }
22246
22247 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
22248 {
22249 pBinds = pBinds_;
22250 return *this;
22251 }
22252
22253 operator const VkSparseImageOpaqueMemoryBindInfo&() const
22254 {
22255 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
22256 }
22257
22258 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
22259 {
22260 return ( image == rhs.image )
22261 && ( bindCount == rhs.bindCount )
22262 && ( pBinds == rhs.pBinds );
22263 }
22264
22265 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
22266 {
22267 return !operator==( rhs );
22268 }
22269
22270 Image image;
22271 uint32_t bindCount;
22272 const SparseMemoryBind* pBinds;
22273 };
22274 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
22275
22276 struct SparseImageMemoryBindInfo
22277 {
22278 SparseImageMemoryBindInfo( Image image_ = Image(),
22279 uint32_t bindCount_ = 0,
22280 const SparseImageMemoryBind* pBinds_ = nullptr )
22281 : image( image_ )
22282 , bindCount( bindCount_ )
22283 , pBinds( pBinds_ )
22284 {
22285 }
22286
22287 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
22288 {
22289 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
22290 }
22291
22292 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
22293 {
22294 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
22295 return *this;
22296 }
22297 SparseImageMemoryBindInfo& setImage( Image image_ )
22298 {
22299 image = image_;
22300 return *this;
22301 }
22302
22303 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
22304 {
22305 bindCount = bindCount_;
22306 return *this;
22307 }
22308
22309 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
22310 {
22311 pBinds = pBinds_;
22312 return *this;
22313 }
22314
22315 operator const VkSparseImageMemoryBindInfo&() const
22316 {
22317 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
22318 }
22319
22320 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
22321 {
22322 return ( image == rhs.image )
22323 && ( bindCount == rhs.bindCount )
22324 && ( pBinds == rhs.pBinds );
22325 }
22326
22327 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
22328 {
22329 return !operator==( rhs );
22330 }
22331
22332 Image image;
22333 uint32_t bindCount;
22334 const SparseImageMemoryBind* pBinds;
22335 };
22336 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
22337
22338 struct BindSparseInfo
22339 {
22340 BindSparseInfo( uint32_t waitSemaphoreCount_ = 0,
22341 const Semaphore* pWaitSemaphores_ = nullptr,
22342 uint32_t bufferBindCount_ = 0,
22343 const SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr,
22344 uint32_t imageOpaqueBindCount_ = 0,
22345 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr,
22346 uint32_t imageBindCount_ = 0,
22347 const SparseImageMemoryBindInfo* pImageBinds_ = nullptr,
22348 uint32_t signalSemaphoreCount_ = 0,
22349 const Semaphore* pSignalSemaphores_ = nullptr )
22350 : waitSemaphoreCount( waitSemaphoreCount_ )
22351 , pWaitSemaphores( pWaitSemaphores_ )
22352 , bufferBindCount( bufferBindCount_ )
22353 , pBufferBinds( pBufferBinds_ )
22354 , imageOpaqueBindCount( imageOpaqueBindCount_ )
22355 , pImageOpaqueBinds( pImageOpaqueBinds_ )
22356 , imageBindCount( imageBindCount_ )
22357 , pImageBinds( pImageBinds_ )
22358 , signalSemaphoreCount( signalSemaphoreCount_ )
22359 , pSignalSemaphores( pSignalSemaphores_ )
22360 {
22361 }
22362
22363 BindSparseInfo( VkBindSparseInfo const & rhs )
22364 {
22365 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
22366 }
22367
22368 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
22369 {
22370 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
22371 return *this;
22372 }
22373 BindSparseInfo& setPNext( const void* pNext_ )
22374 {
22375 pNext = pNext_;
22376 return *this;
22377 }
22378
22379 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22380 {
22381 waitSemaphoreCount = waitSemaphoreCount_;
22382 return *this;
22383 }
22384
22385 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22386 {
22387 pWaitSemaphores = pWaitSemaphores_;
22388 return *this;
22389 }
22390
22391 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
22392 {
22393 bufferBindCount = bufferBindCount_;
22394 return *this;
22395 }
22396
22397 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
22398 {
22399 pBufferBinds = pBufferBinds_;
22400 return *this;
22401 }
22402
22403 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
22404 {
22405 imageOpaqueBindCount = imageOpaqueBindCount_;
22406 return *this;
22407 }
22408
22409 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
22410 {
22411 pImageOpaqueBinds = pImageOpaqueBinds_;
22412 return *this;
22413 }
22414
22415 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
22416 {
22417 imageBindCount = imageBindCount_;
22418 return *this;
22419 }
22420
22421 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
22422 {
22423 pImageBinds = pImageBinds_;
22424 return *this;
22425 }
22426
22427 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22428 {
22429 signalSemaphoreCount = signalSemaphoreCount_;
22430 return *this;
22431 }
22432
22433 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22434 {
22435 pSignalSemaphores = pSignalSemaphores_;
22436 return *this;
22437 }
22438
22439 operator const VkBindSparseInfo&() const
22440 {
22441 return *reinterpret_cast<const VkBindSparseInfo*>(this);
22442 }
22443
22444 bool operator==( BindSparseInfo const& rhs ) const
22445 {
22446 return ( sType == rhs.sType )
22447 && ( pNext == rhs.pNext )
22448 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22449 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22450 && ( bufferBindCount == rhs.bufferBindCount )
22451 && ( pBufferBinds == rhs.pBufferBinds )
22452 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
22453 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
22454 && ( imageBindCount == rhs.imageBindCount )
22455 && ( pImageBinds == rhs.pImageBinds )
22456 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22457 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22458 }
22459
22460 bool operator!=( BindSparseInfo const& rhs ) const
22461 {
22462 return !operator==( rhs );
22463 }
22464
22465 private:
22466 StructureType sType = StructureType::eBindSparseInfo;
22467
22468 public:
22469 const void* pNext = nullptr;
22470 uint32_t waitSemaphoreCount;
22471 const Semaphore* pWaitSemaphores;
22472 uint32_t bufferBindCount;
22473 const SparseBufferMemoryBindInfo* pBufferBinds;
22474 uint32_t imageOpaqueBindCount;
22475 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
22476 uint32_t imageBindCount;
22477 const SparseImageMemoryBindInfo* pImageBinds;
22478 uint32_t signalSemaphoreCount;
22479 const Semaphore* pSignalSemaphores;
22480 };
22481 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
22482
22483 enum class PipelineStageFlagBits
22484 {
22485 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
22486 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
22487 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
22488 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
22489 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
22490 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
22491 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
22492 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
22493 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
22494 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
22495 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
22496 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
22497 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
22498 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
22499 eHost = VK_PIPELINE_STAGE_HOST_BIT,
22500 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
22501 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
22502 eConditionalRenderingEXT = VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,
22503 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
22504 };
22505
22506 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
22507
22508 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
22509 {
22510 return PipelineStageFlags( bit0 ) | bit1;
22511 }
22512
22513 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
22514 {
22515 return ~( PipelineStageFlags( bits ) );
22516 }
22517
22518 template <> struct FlagTraits<PipelineStageFlagBits>
22519 {
22520 enum
22521 {
22522 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::eConditionalRenderingEXT) | VkFlags(PipelineStageFlagBits::eCommandProcessNVX)
22523 };
22524 };
22525
22526 struct QueueFamilyCheckpointPropertiesNV
22527 {
22528 operator const VkQueueFamilyCheckpointPropertiesNV&() const
22529 {
22530 return *reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV*>(this);
22531 }
22532
22533 bool operator==( QueueFamilyCheckpointPropertiesNV const& rhs ) const
22534 {
22535 return ( sType == rhs.sType )
22536 && ( pNext == rhs.pNext )
22537 && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
22538 }
22539
22540 bool operator!=( QueueFamilyCheckpointPropertiesNV const& rhs ) const
22541 {
22542 return !operator==( rhs );
22543 }
22544
22545 private:
22546 StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV;
22547
22548 public:
22549 void* pNext = nullptr;
22550 PipelineStageFlags checkpointExecutionStageMask;
22551 };
22552 static_assert( sizeof( QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), "struct and wrapper have different size!" );
22553
22554 struct CheckpointDataNV
22555 {
22556 operator const VkCheckpointDataNV&() const
22557 {
22558 return *reinterpret_cast<const VkCheckpointDataNV*>(this);
22559 }
22560
22561 bool operator==( CheckpointDataNV const& rhs ) const
22562 {
22563 return ( sType == rhs.sType )
22564 && ( pNext == rhs.pNext )
22565 && ( stage == rhs.stage )
22566 && ( pCheckpointMarker == rhs.pCheckpointMarker );
22567 }
22568
22569 bool operator!=( CheckpointDataNV const& rhs ) const
22570 {
22571 return !operator==( rhs );
22572 }
22573
22574 private:
22575 StructureType sType = StructureType::eCheckpointDataNV;
22576
22577 public:
22578 void* pNext = nullptr;
22579 PipelineStageFlagBits stage;
22580 void* pCheckpointMarker;
22581 };
22582 static_assert( sizeof( CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "struct and wrapper have different size!" );
22583
22584 enum class CommandPoolCreateFlagBits
22585 {
22586 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
22587 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
22588 eProtected = VK_COMMAND_POOL_CREATE_PROTECTED_BIT
22589 };
22590
22591 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
22592
22593 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
22594 {
22595 return CommandPoolCreateFlags( bit0 ) | bit1;
22596 }
22597
22598 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
22599 {
22600 return ~( CommandPoolCreateFlags( bits ) );
22601 }
22602
22603 template <> struct FlagTraits<CommandPoolCreateFlagBits>
22604 {
22605 enum
22606 {
22607 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer) | VkFlags(CommandPoolCreateFlagBits::eProtected)
22608 };
22609 };
22610
22611 struct CommandPoolCreateInfo
22612 {
22613 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(),
22614 uint32_t queueFamilyIndex_ = 0 )
22615 : flags( flags_ )
22616 , queueFamilyIndex( queueFamilyIndex_ )
22617 {
22618 }
22619
22620 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
22621 {
22622 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
22623 }
22624
22625 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
22626 {
22627 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
22628 return *this;
22629 }
22630 CommandPoolCreateInfo& setPNext( const void* pNext_ )
22631 {
22632 pNext = pNext_;
22633 return *this;
22634 }
22635
22636 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
22637 {
22638 flags = flags_;
22639 return *this;
22640 }
22641
22642 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
22643 {
22644 queueFamilyIndex = queueFamilyIndex_;
22645 return *this;
22646 }
22647
22648 operator const VkCommandPoolCreateInfo&() const
22649 {
22650 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
22651 }
22652
22653 bool operator==( CommandPoolCreateInfo const& rhs ) const
22654 {
22655 return ( sType == rhs.sType )
22656 && ( pNext == rhs.pNext )
22657 && ( flags == rhs.flags )
22658 && ( queueFamilyIndex == rhs.queueFamilyIndex );
22659 }
22660
22661 bool operator!=( CommandPoolCreateInfo const& rhs ) const
22662 {
22663 return !operator==( rhs );
22664 }
22665
22666 private:
22667 StructureType sType = StructureType::eCommandPoolCreateInfo;
22668
22669 public:
22670 const void* pNext = nullptr;
22671 CommandPoolCreateFlags flags;
22672 uint32_t queueFamilyIndex;
22673 };
22674 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
22675
22676 enum class CommandPoolResetFlagBits
22677 {
22678 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
22679 };
22680
22681 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
22682
22683 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
22684 {
22685 return CommandPoolResetFlags( bit0 ) | bit1;
22686 }
22687
22688 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
22689 {
22690 return ~( CommandPoolResetFlags( bits ) );
22691 }
22692
22693 template <> struct FlagTraits<CommandPoolResetFlagBits>
22694 {
22695 enum
22696 {
22697 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
22698 };
22699 };
22700
22701 enum class CommandBufferResetFlagBits
22702 {
22703 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
22704 };
22705
22706 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
22707
22708 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
22709 {
22710 return CommandBufferResetFlags( bit0 ) | bit1;
22711 }
22712
22713 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
22714 {
22715 return ~( CommandBufferResetFlags( bits ) );
22716 }
22717
22718 template <> struct FlagTraits<CommandBufferResetFlagBits>
22719 {
22720 enum
22721 {
22722 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
22723 };
22724 };
22725
22726 enum class SampleCountFlagBits
22727 {
22728 e1 = VK_SAMPLE_COUNT_1_BIT,
22729 e2 = VK_SAMPLE_COUNT_2_BIT,
22730 e4 = VK_SAMPLE_COUNT_4_BIT,
22731 e8 = VK_SAMPLE_COUNT_8_BIT,
22732 e16 = VK_SAMPLE_COUNT_16_BIT,
22733 e32 = VK_SAMPLE_COUNT_32_BIT,
22734 e64 = VK_SAMPLE_COUNT_64_BIT
22735 };
22736
22737 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
22738
22739 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
22740 {
22741 return SampleCountFlags( bit0 ) | bit1;
22742 }
22743
22744 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
22745 {
22746 return ~( SampleCountFlags( bits ) );
22747 }
22748
22749 template <> struct FlagTraits<SampleCountFlagBits>
22750 {
22751 enum
22752 {
22753 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
22754 };
22755 };
22756
22757 struct ImageFormatProperties
22758 {
22759 operator const VkImageFormatProperties&() const
22760 {
22761 return *reinterpret_cast<const VkImageFormatProperties*>(this);
22762 }
22763
22764 bool operator==( ImageFormatProperties const& rhs ) const
22765 {
22766 return ( maxExtent == rhs.maxExtent )
22767 && ( maxMipLevels == rhs.maxMipLevels )
22768 && ( maxArrayLayers == rhs.maxArrayLayers )
22769 && ( sampleCounts == rhs.sampleCounts )
22770 && ( maxResourceSize == rhs.maxResourceSize );
22771 }
22772
22773 bool operator!=( ImageFormatProperties const& rhs ) const
22774 {
22775 return !operator==( rhs );
22776 }
22777
22778 Extent3D maxExtent;
22779 uint32_t maxMipLevels;
22780 uint32_t maxArrayLayers;
22781 SampleCountFlags sampleCounts;
22782 DeviceSize maxResourceSize;
22783 };
22784 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
22785
22786 struct ImageCreateInfo
22787 {
22788 ImageCreateInfo( ImageCreateFlags flags_ = ImageCreateFlags(),
22789 ImageType imageType_ = ImageType::e1D,
22790 Format format_ = Format::eUndefined,
22791 Extent3D extent_ = Extent3D(),
22792 uint32_t mipLevels_ = 0,
22793 uint32_t arrayLayers_ = 0,
22794 SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
22795 ImageTiling tiling_ = ImageTiling::eOptimal,
22796 ImageUsageFlags usage_ = ImageUsageFlags(),
22797 SharingMode sharingMode_ = SharingMode::eExclusive,
22798 uint32_t queueFamilyIndexCount_ = 0,
22799 const uint32_t* pQueueFamilyIndices_ = nullptr,
22800 ImageLayout initialLayout_ = ImageLayout::eUndefined )
22801 : flags( flags_ )
22802 , imageType( imageType_ )
22803 , format( format_ )
22804 , extent( extent_ )
22805 , mipLevels( mipLevels_ )
22806 , arrayLayers( arrayLayers_ )
22807 , samples( samples_ )
22808 , tiling( tiling_ )
22809 , usage( usage_ )
22810 , sharingMode( sharingMode_ )
22811 , queueFamilyIndexCount( queueFamilyIndexCount_ )
22812 , pQueueFamilyIndices( pQueueFamilyIndices_ )
22813 , initialLayout( initialLayout_ )
22814 {
22815 }
22816
22817 ImageCreateInfo( VkImageCreateInfo const & rhs )
22818 {
22819 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
22820 }
22821
22822 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
22823 {
22824 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
22825 return *this;
22826 }
22827 ImageCreateInfo& setPNext( const void* pNext_ )
22828 {
22829 pNext = pNext_;
22830 return *this;
22831 }
22832
22833 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
22834 {
22835 flags = flags_;
22836 return *this;
22837 }
22838
22839 ImageCreateInfo& setImageType( ImageType imageType_ )
22840 {
22841 imageType = imageType_;
22842 return *this;
22843 }
22844
22845 ImageCreateInfo& setFormat( Format format_ )
22846 {
22847 format = format_;
22848 return *this;
22849 }
22850
22851 ImageCreateInfo& setExtent( Extent3D extent_ )
22852 {
22853 extent = extent_;
22854 return *this;
22855 }
22856
22857 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
22858 {
22859 mipLevels = mipLevels_;
22860 return *this;
22861 }
22862
22863 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
22864 {
22865 arrayLayers = arrayLayers_;
22866 return *this;
22867 }
22868
22869 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
22870 {
22871 samples = samples_;
22872 return *this;
22873 }
22874
22875 ImageCreateInfo& setTiling( ImageTiling tiling_ )
22876 {
22877 tiling = tiling_;
22878 return *this;
22879 }
22880
22881 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
22882 {
22883 usage = usage_;
22884 return *this;
22885 }
22886
22887 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
22888 {
22889 sharingMode = sharingMode_;
22890 return *this;
22891 }
22892
22893 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
22894 {
22895 queueFamilyIndexCount = queueFamilyIndexCount_;
22896 return *this;
22897 }
22898
22899 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
22900 {
22901 pQueueFamilyIndices = pQueueFamilyIndices_;
22902 return *this;
22903 }
22904
22905 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
22906 {
22907 initialLayout = initialLayout_;
22908 return *this;
22909 }
22910
22911 operator const VkImageCreateInfo&() const
22912 {
22913 return *reinterpret_cast<const VkImageCreateInfo*>(this);
22914 }
22915
22916 bool operator==( ImageCreateInfo const& rhs ) const
22917 {
22918 return ( sType == rhs.sType )
22919 && ( pNext == rhs.pNext )
22920 && ( flags == rhs.flags )
22921 && ( imageType == rhs.imageType )
22922 && ( format == rhs.format )
22923 && ( extent == rhs.extent )
22924 && ( mipLevels == rhs.mipLevels )
22925 && ( arrayLayers == rhs.arrayLayers )
22926 && ( samples == rhs.samples )
22927 && ( tiling == rhs.tiling )
22928 && ( usage == rhs.usage )
22929 && ( sharingMode == rhs.sharingMode )
22930 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
22931 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
22932 && ( initialLayout == rhs.initialLayout );
22933 }
22934
22935 bool operator!=( ImageCreateInfo const& rhs ) const
22936 {
22937 return !operator==( rhs );
22938 }
22939
22940 private:
22941 StructureType sType = StructureType::eImageCreateInfo;
22942
22943 public:
22944 const void* pNext = nullptr;
22945 ImageCreateFlags flags;
22946 ImageType imageType;
22947 Format format;
22948 Extent3D extent;
22949 uint32_t mipLevels;
22950 uint32_t arrayLayers;
22951 SampleCountFlagBits samples;
22952 ImageTiling tiling;
22953 ImageUsageFlags usage;
22954 SharingMode sharingMode;
22955 uint32_t queueFamilyIndexCount;
22956 const uint32_t* pQueueFamilyIndices;
22957 ImageLayout initialLayout;
22958 };
22959 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
22960
22961 struct PipelineMultisampleStateCreateInfo
22962 {
22963 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(),
22964 SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1,
22965 Bool32 sampleShadingEnable_ = 0,
22966 float minSampleShading_ = 0,
22967 const SampleMask* pSampleMask_ = nullptr,
22968 Bool32 alphaToCoverageEnable_ = 0,
22969 Bool32 alphaToOneEnable_ = 0 )
22970 : flags( flags_ )
22971 , rasterizationSamples( rasterizationSamples_ )
22972 , sampleShadingEnable( sampleShadingEnable_ )
22973 , minSampleShading( minSampleShading_ )
22974 , pSampleMask( pSampleMask_ )
22975 , alphaToCoverageEnable( alphaToCoverageEnable_ )
22976 , alphaToOneEnable( alphaToOneEnable_ )
22977 {
22978 }
22979
22980 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
22981 {
22982 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
22983 }
22984
22985 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
22986 {
22987 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
22988 return *this;
22989 }
22990 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
22991 {
22992 pNext = pNext_;
22993 return *this;
22994 }
22995
22996 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
22997 {
22998 flags = flags_;
22999 return *this;
23000 }
23001
23002 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
23003 {
23004 rasterizationSamples = rasterizationSamples_;
23005 return *this;
23006 }
23007
23008 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
23009 {
23010 sampleShadingEnable = sampleShadingEnable_;
23011 return *this;
23012 }
23013
23014 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
23015 {
23016 minSampleShading = minSampleShading_;
23017 return *this;
23018 }
23019
23020 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
23021 {
23022 pSampleMask = pSampleMask_;
23023 return *this;
23024 }
23025
23026 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
23027 {
23028 alphaToCoverageEnable = alphaToCoverageEnable_;
23029 return *this;
23030 }
23031
23032 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
23033 {
23034 alphaToOneEnable = alphaToOneEnable_;
23035 return *this;
23036 }
23037
23038 operator const VkPipelineMultisampleStateCreateInfo&() const
23039 {
23040 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
23041 }
23042
23043 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
23044 {
23045 return ( sType == rhs.sType )
23046 && ( pNext == rhs.pNext )
23047 && ( flags == rhs.flags )
23048 && ( rasterizationSamples == rhs.rasterizationSamples )
23049 && ( sampleShadingEnable == rhs.sampleShadingEnable )
23050 && ( minSampleShading == rhs.minSampleShading )
23051 && ( pSampleMask == rhs.pSampleMask )
23052 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
23053 && ( alphaToOneEnable == rhs.alphaToOneEnable );
23054 }
23055
23056 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
23057 {
23058 return !operator==( rhs );
23059 }
23060
23061 private:
23062 StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
23063
23064 public:
23065 const void* pNext = nullptr;
23066 PipelineMultisampleStateCreateFlags flags;
23067 SampleCountFlagBits rasterizationSamples;
23068 Bool32 sampleShadingEnable;
23069 float minSampleShading;
23070 const SampleMask* pSampleMask;
23071 Bool32 alphaToCoverageEnable;
23072 Bool32 alphaToOneEnable;
23073 };
23074 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
23075
23076 struct GraphicsPipelineCreateInfo
23077 {
23078 GraphicsPipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(),
23079 uint32_t stageCount_ = 0,
23080 const PipelineShaderStageCreateInfo* pStages_ = nullptr,
23081 const PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr,
23082 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr,
23083 const PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr,
23084 const PipelineViewportStateCreateInfo* pViewportState_ = nullptr,
23085 const PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr,
23086 const PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr,
23087 const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr,
23088 const PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr,
23089 const PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr,
23090 PipelineLayout layout_ = PipelineLayout(),
23091 RenderPass renderPass_ = RenderPass(),
23092 uint32_t subpass_ = 0,
23093 Pipeline basePipelineHandle_ = Pipeline(),
23094 int32_t basePipelineIndex_ = 0 )
23095 : flags( flags_ )
23096 , stageCount( stageCount_ )
23097 , pStages( pStages_ )
23098 , pVertexInputState( pVertexInputState_ )
23099 , pInputAssemblyState( pInputAssemblyState_ )
23100 , pTessellationState( pTessellationState_ )
23101 , pViewportState( pViewportState_ )
23102 , pRasterizationState( pRasterizationState_ )
23103 , pMultisampleState( pMultisampleState_ )
23104 , pDepthStencilState( pDepthStencilState_ )
23105 , pColorBlendState( pColorBlendState_ )
23106 , pDynamicState( pDynamicState_ )
23107 , layout( layout_ )
23108 , renderPass( renderPass_ )
23109 , subpass( subpass_ )
23110 , basePipelineHandle( basePipelineHandle_ )
23111 , basePipelineIndex( basePipelineIndex_ )
23112 {
23113 }
23114
23115 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
23116 {
23117 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
23118 }
23119
23120 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
23121 {
23122 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
23123 return *this;
23124 }
23125 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
23126 {
23127 pNext = pNext_;
23128 return *this;
23129 }
23130
23131 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
23132 {
23133 flags = flags_;
23134 return *this;
23135 }
23136
23137 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
23138 {
23139 stageCount = stageCount_;
23140 return *this;
23141 }
23142
23143 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
23144 {
23145 pStages = pStages_;
23146 return *this;
23147 }
23148
23149 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
23150 {
23151 pVertexInputState = pVertexInputState_;
23152 return *this;
23153 }
23154
23155 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
23156 {
23157 pInputAssemblyState = pInputAssemblyState_;
23158 return *this;
23159 }
23160
23161 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
23162 {
23163 pTessellationState = pTessellationState_;
23164 return *this;
23165 }
23166
23167 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
23168 {
23169 pViewportState = pViewportState_;
23170 return *this;
23171 }
23172
23173 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
23174 {
23175 pRasterizationState = pRasterizationState_;
23176 return *this;
23177 }
23178
23179 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
23180 {
23181 pMultisampleState = pMultisampleState_;
23182 return *this;
23183 }
23184
23185 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
23186 {
23187 pDepthStencilState = pDepthStencilState_;
23188 return *this;
23189 }
23190
23191 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
23192 {
23193 pColorBlendState = pColorBlendState_;
23194 return *this;
23195 }
23196
23197 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
23198 {
23199 pDynamicState = pDynamicState_;
23200 return *this;
23201 }
23202
23203 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
23204 {
23205 layout = layout_;
23206 return *this;
23207 }
23208
23209 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
23210 {
23211 renderPass = renderPass_;
23212 return *this;
23213 }
23214
23215 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
23216 {
23217 subpass = subpass_;
23218 return *this;
23219 }
23220
23221 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
23222 {
23223 basePipelineHandle = basePipelineHandle_;
23224 return *this;
23225 }
23226
23227 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
23228 {
23229 basePipelineIndex = basePipelineIndex_;
23230 return *this;
23231 }
23232
23233 operator const VkGraphicsPipelineCreateInfo&() const
23234 {
23235 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
23236 }
23237
23238 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
23239 {
23240 return ( sType == rhs.sType )
23241 && ( pNext == rhs.pNext )
23242 && ( flags == rhs.flags )
23243 && ( stageCount == rhs.stageCount )
23244 && ( pStages == rhs.pStages )
23245 && ( pVertexInputState == rhs.pVertexInputState )
23246 && ( pInputAssemblyState == rhs.pInputAssemblyState )
23247 && ( pTessellationState == rhs.pTessellationState )
23248 && ( pViewportState == rhs.pViewportState )
23249 && ( pRasterizationState == rhs.pRasterizationState )
23250 && ( pMultisampleState == rhs.pMultisampleState )
23251 && ( pDepthStencilState == rhs.pDepthStencilState )
23252 && ( pColorBlendState == rhs.pColorBlendState )
23253 && ( pDynamicState == rhs.pDynamicState )
23254 && ( layout == rhs.layout )
23255 && ( renderPass == rhs.renderPass )
23256 && ( subpass == rhs.subpass )
23257 && ( basePipelineHandle == rhs.basePipelineHandle )
23258 && ( basePipelineIndex == rhs.basePipelineIndex );
23259 }
23260
23261 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
23262 {
23263 return !operator==( rhs );
23264 }
23265
23266 private:
23267 StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
23268
23269 public:
23270 const void* pNext = nullptr;
23271 PipelineCreateFlags flags;
23272 uint32_t stageCount;
23273 const PipelineShaderStageCreateInfo* pStages;
23274 const PipelineVertexInputStateCreateInfo* pVertexInputState;
23275 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
23276 const PipelineTessellationStateCreateInfo* pTessellationState;
23277 const PipelineViewportStateCreateInfo* pViewportState;
23278 const PipelineRasterizationStateCreateInfo* pRasterizationState;
23279 const PipelineMultisampleStateCreateInfo* pMultisampleState;
23280 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
23281 const PipelineColorBlendStateCreateInfo* pColorBlendState;
23282 const PipelineDynamicStateCreateInfo* pDynamicState;
23283 PipelineLayout layout;
23284 RenderPass renderPass;
23285 uint32_t subpass;
23286 Pipeline basePipelineHandle;
23287 int32_t basePipelineIndex;
23288 };
23289 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
23290
23291 struct PhysicalDeviceLimits
23292 {
23293 operator const VkPhysicalDeviceLimits&() const
23294 {
23295 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
23296 }
23297
23298 bool operator==( PhysicalDeviceLimits const& rhs ) const
23299 {
23300 return ( maxImageDimension1D == rhs.maxImageDimension1D )
23301 && ( maxImageDimension2D == rhs.maxImageDimension2D )
23302 && ( maxImageDimension3D == rhs.maxImageDimension3D )
23303 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
23304 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23305 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
23306 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
23307 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
23308 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
23309 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
23310 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
23311 && ( bufferImageGranularity == rhs.bufferImageGranularity )
23312 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
23313 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
23314 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
23315 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
23316 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
23317 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
23318 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
23319 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
23320 && ( maxPerStageResources == rhs.maxPerStageResources )
23321 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
23322 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
23323 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
23324 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
23325 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
23326 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
23327 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
23328 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
23329 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
23330 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
23331 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
23332 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
23333 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
23334 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
23335 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
23336 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
23337 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
23338 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
23339 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
23340 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
23341 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
23342 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
23343 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
23344 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
23345 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
23346 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
23347 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
23348 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
23349 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
23350 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
23351 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
23352 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
23353 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
23354 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
23355 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
23356 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
23357 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
23358 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
23359 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
23360 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
23361 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
23362 && ( maxViewports == rhs.maxViewports )
23363 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
23364 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
23365 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
23366 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
23367 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
23368 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
23369 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
23370 && ( minTexelOffset == rhs.minTexelOffset )
23371 && ( maxTexelOffset == rhs.maxTexelOffset )
23372 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
23373 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
23374 && ( minInterpolationOffset == rhs.minInterpolationOffset )
23375 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
23376 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
23377 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
23378 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
23379 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
23380 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
23381 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
23382 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
23383 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
23384 && ( maxColorAttachments == rhs.maxColorAttachments )
23385 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
23386 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
23387 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
23388 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
23389 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
23390 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
23391 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
23392 && ( timestampPeriod == rhs.timestampPeriod )
23393 && ( maxClipDistances == rhs.maxClipDistances )
23394 && ( maxCullDistances == rhs.maxCullDistances )
23395 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
23396 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
23397 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
23398 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
23399 && ( pointSizeGranularity == rhs.pointSizeGranularity )
23400 && ( lineWidthGranularity == rhs.lineWidthGranularity )
23401 && ( strictLines == rhs.strictLines )
23402 && ( standardSampleLocations == rhs.standardSampleLocations )
23403 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
23404 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
23405 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
23406 }
23407
23408 bool operator!=( PhysicalDeviceLimits const& rhs ) const
23409 {
23410 return !operator==( rhs );
23411 }
23412
23413 uint32_t maxImageDimension1D;
23414 uint32_t maxImageDimension2D;
23415 uint32_t maxImageDimension3D;
23416 uint32_t maxImageDimensionCube;
23417 uint32_t maxImageArrayLayers;
23418 uint32_t maxTexelBufferElements;
23419 uint32_t maxUniformBufferRange;
23420 uint32_t maxStorageBufferRange;
23421 uint32_t maxPushConstantsSize;
23422 uint32_t maxMemoryAllocationCount;
23423 uint32_t maxSamplerAllocationCount;
23424 DeviceSize bufferImageGranularity;
23425 DeviceSize sparseAddressSpaceSize;
23426 uint32_t maxBoundDescriptorSets;
23427 uint32_t maxPerStageDescriptorSamplers;
23428 uint32_t maxPerStageDescriptorUniformBuffers;
23429 uint32_t maxPerStageDescriptorStorageBuffers;
23430 uint32_t maxPerStageDescriptorSampledImages;
23431 uint32_t maxPerStageDescriptorStorageImages;
23432 uint32_t maxPerStageDescriptorInputAttachments;
23433 uint32_t maxPerStageResources;
23434 uint32_t maxDescriptorSetSamplers;
23435 uint32_t maxDescriptorSetUniformBuffers;
23436 uint32_t maxDescriptorSetUniformBuffersDynamic;
23437 uint32_t maxDescriptorSetStorageBuffers;
23438 uint32_t maxDescriptorSetStorageBuffersDynamic;
23439 uint32_t maxDescriptorSetSampledImages;
23440 uint32_t maxDescriptorSetStorageImages;
23441 uint32_t maxDescriptorSetInputAttachments;
23442 uint32_t maxVertexInputAttributes;
23443 uint32_t maxVertexInputBindings;
23444 uint32_t maxVertexInputAttributeOffset;
23445 uint32_t maxVertexInputBindingStride;
23446 uint32_t maxVertexOutputComponents;
23447 uint32_t maxTessellationGenerationLevel;
23448 uint32_t maxTessellationPatchSize;
23449 uint32_t maxTessellationControlPerVertexInputComponents;
23450 uint32_t maxTessellationControlPerVertexOutputComponents;
23451 uint32_t maxTessellationControlPerPatchOutputComponents;
23452 uint32_t maxTessellationControlTotalOutputComponents;
23453 uint32_t maxTessellationEvaluationInputComponents;
23454 uint32_t maxTessellationEvaluationOutputComponents;
23455 uint32_t maxGeometryShaderInvocations;
23456 uint32_t maxGeometryInputComponents;
23457 uint32_t maxGeometryOutputComponents;
23458 uint32_t maxGeometryOutputVertices;
23459 uint32_t maxGeometryTotalOutputComponents;
23460 uint32_t maxFragmentInputComponents;
23461 uint32_t maxFragmentOutputAttachments;
23462 uint32_t maxFragmentDualSrcAttachments;
23463 uint32_t maxFragmentCombinedOutputResources;
23464 uint32_t maxComputeSharedMemorySize;
23465 uint32_t maxComputeWorkGroupCount[3];
23466 uint32_t maxComputeWorkGroupInvocations;
23467 uint32_t maxComputeWorkGroupSize[3];
23468 uint32_t subPixelPrecisionBits;
23469 uint32_t subTexelPrecisionBits;
23470 uint32_t mipmapPrecisionBits;
23471 uint32_t maxDrawIndexedIndexValue;
23472 uint32_t maxDrawIndirectCount;
23473 float maxSamplerLodBias;
23474 float maxSamplerAnisotropy;
23475 uint32_t maxViewports;
23476 uint32_t maxViewportDimensions[2];
23477 float viewportBoundsRange[2];
23478 uint32_t viewportSubPixelBits;
23479 size_t minMemoryMapAlignment;
23480 DeviceSize minTexelBufferOffsetAlignment;
23481 DeviceSize minUniformBufferOffsetAlignment;
23482 DeviceSize minStorageBufferOffsetAlignment;
23483 int32_t minTexelOffset;
23484 uint32_t maxTexelOffset;
23485 int32_t minTexelGatherOffset;
23486 uint32_t maxTexelGatherOffset;
23487 float minInterpolationOffset;
23488 float maxInterpolationOffset;
23489 uint32_t subPixelInterpolationOffsetBits;
23490 uint32_t maxFramebufferWidth;
23491 uint32_t maxFramebufferHeight;
23492 uint32_t maxFramebufferLayers;
23493 SampleCountFlags framebufferColorSampleCounts;
23494 SampleCountFlags framebufferDepthSampleCounts;
23495 SampleCountFlags framebufferStencilSampleCounts;
23496 SampleCountFlags framebufferNoAttachmentsSampleCounts;
23497 uint32_t maxColorAttachments;
23498 SampleCountFlags sampledImageColorSampleCounts;
23499 SampleCountFlags sampledImageIntegerSampleCounts;
23500 SampleCountFlags sampledImageDepthSampleCounts;
23501 SampleCountFlags sampledImageStencilSampleCounts;
23502 SampleCountFlags storageImageSampleCounts;
23503 uint32_t maxSampleMaskWords;
23504 Bool32 timestampComputeAndGraphics;
23505 float timestampPeriod;
23506 uint32_t maxClipDistances;
23507 uint32_t maxCullDistances;
23508 uint32_t maxCombinedClipAndCullDistances;
23509 uint32_t discreteQueuePriorities;
23510 float pointSizeRange[2];
23511 float lineWidthRange[2];
23512 float pointSizeGranularity;
23513 float lineWidthGranularity;
23514 Bool32 strictLines;
23515 Bool32 standardSampleLocations;
23516 DeviceSize optimalBufferCopyOffsetAlignment;
23517 DeviceSize optimalBufferCopyRowPitchAlignment;
23518 DeviceSize nonCoherentAtomSize;
23519 };
23520 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
23521
23522 struct PhysicalDeviceProperties
23523 {
23524 operator const VkPhysicalDeviceProperties&() const
23525 {
23526 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
23527 }
23528
23529 bool operator==( PhysicalDeviceProperties const& rhs ) const
23530 {
23531 return ( apiVersion == rhs.apiVersion )
23532 && ( driverVersion == rhs.driverVersion )
23533 && ( vendorID == rhs.vendorID )
23534 && ( deviceID == rhs.deviceID )
23535 && ( deviceType == rhs.deviceType )
23536 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
23537 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
23538 && ( limits == rhs.limits )
23539 && ( sparseProperties == rhs.sparseProperties );
23540 }
23541
23542 bool operator!=( PhysicalDeviceProperties const& rhs ) const
23543 {
23544 return !operator==( rhs );
23545 }
23546
23547 uint32_t apiVersion;
23548 uint32_t driverVersion;
23549 uint32_t vendorID;
23550 uint32_t deviceID;
23551 PhysicalDeviceType deviceType;
23552 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
23553 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
23554 PhysicalDeviceLimits limits;
23555 PhysicalDeviceSparseProperties sparseProperties;
23556 };
23557 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
23558
23559 struct PhysicalDeviceProperties2
23560 {
23561 operator const VkPhysicalDeviceProperties2&() const
23562 {
23563 return *reinterpret_cast<const VkPhysicalDeviceProperties2*>(this);
23564 }
23565
23566 bool operator==( PhysicalDeviceProperties2 const& rhs ) const
23567 {
23568 return ( sType == rhs.sType )
23569 && ( pNext == rhs.pNext )
23570 && ( properties == rhs.properties );
23571 }
23572
23573 bool operator!=( PhysicalDeviceProperties2 const& rhs ) const
23574 {
23575 return !operator==( rhs );
23576 }
23577
23578 private:
23579 StructureType sType = StructureType::ePhysicalDeviceProperties2;
23580
23581 public:
23582 void* pNext = nullptr;
23583 PhysicalDeviceProperties properties;
23584 };
23585 static_assert( sizeof( PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), "struct and wrapper have different size!" );
23586
23587 using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
23588
23589 struct ImageFormatProperties2
23590 {
23591 operator const VkImageFormatProperties2&() const
23592 {
23593 return *reinterpret_cast<const VkImageFormatProperties2*>(this);
23594 }
23595
23596 bool operator==( ImageFormatProperties2 const& rhs ) const
23597 {
23598 return ( sType == rhs.sType )
23599 && ( pNext == rhs.pNext )
23600 && ( imageFormatProperties == rhs.imageFormatProperties );
23601 }
23602
23603 bool operator!=( ImageFormatProperties2 const& rhs ) const
23604 {
23605 return !operator==( rhs );
23606 }
23607
23608 private:
23609 StructureType sType = StructureType::eImageFormatProperties2;
23610
23611 public:
23612 void* pNext = nullptr;
23613 ImageFormatProperties imageFormatProperties;
23614 };
23615 static_assert( sizeof( ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), "struct and wrapper have different size!" );
23616
23617 using ImageFormatProperties2KHR = ImageFormatProperties2;
23618
23619 struct PhysicalDeviceSparseImageFormatInfo2
23620 {
23621 PhysicalDeviceSparseImageFormatInfo2( Format format_ = Format::eUndefined,
23622 ImageType type_ = ImageType::e1D,
23623 SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
23624 ImageUsageFlags usage_ = ImageUsageFlags(),
23625 ImageTiling tiling_ = ImageTiling::eOptimal )
23626 : format( format_ )
23627 , type( type_ )
23628 , samples( samples_ )
23629 , usage( usage_ )
23630 , tiling( tiling_ )
23631 {
23632 }
23633
23634 PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
23635 {
23636 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
23637 }
23638
23639 PhysicalDeviceSparseImageFormatInfo2& operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
23640 {
23641 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
23642 return *this;
23643 }
23644 PhysicalDeviceSparseImageFormatInfo2& setPNext( const void* pNext_ )
23645 {
23646 pNext = pNext_;
23647 return *this;
23648 }
23649
23650 PhysicalDeviceSparseImageFormatInfo2& setFormat( Format format_ )
23651 {
23652 format = format_;
23653 return *this;
23654 }
23655
23656 PhysicalDeviceSparseImageFormatInfo2& setType( ImageType type_ )
23657 {
23658 type = type_;
23659 return *this;
23660 }
23661
23662 PhysicalDeviceSparseImageFormatInfo2& setSamples( SampleCountFlagBits samples_ )
23663 {
23664 samples = samples_;
23665 return *this;
23666 }
23667
23668 PhysicalDeviceSparseImageFormatInfo2& setUsage( ImageUsageFlags usage_ )
23669 {
23670 usage = usage_;
23671 return *this;
23672 }
23673
23674 PhysicalDeviceSparseImageFormatInfo2& setTiling( ImageTiling tiling_ )
23675 {
23676 tiling = tiling_;
23677 return *this;
23678 }
23679
23680 operator const VkPhysicalDeviceSparseImageFormatInfo2&() const
23681 {
23682 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>(this);
23683 }
23684
23685 bool operator==( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const
23686 {
23687 return ( sType == rhs.sType )
23688 && ( pNext == rhs.pNext )
23689 && ( format == rhs.format )
23690 && ( type == rhs.type )
23691 && ( samples == rhs.samples )
23692 && ( usage == rhs.usage )
23693 && ( tiling == rhs.tiling );
23694 }
23695
23696 bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const
23697 {
23698 return !operator==( rhs );
23699 }
23700
23701 private:
23702 StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
23703
23704 public:
23705 const void* pNext = nullptr;
23706 Format format;
23707 ImageType type;
23708 SampleCountFlagBits samples;
23709 ImageUsageFlags usage;
23710 ImageTiling tiling;
23711 };
23712 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), "struct and wrapper have different size!" );
23713
23714 using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
23715
23716 struct SampleLocationsInfoEXT
23717 {
23718 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1,
23719 Extent2D sampleLocationGridSize_ = Extent2D(),
23720 uint32_t sampleLocationsCount_ = 0,
23721 const SampleLocationEXT* pSampleLocations_ = nullptr )
23722 : sampleLocationsPerPixel( sampleLocationsPerPixel_ )
23723 , sampleLocationGridSize( sampleLocationGridSize_ )
23724 , sampleLocationsCount( sampleLocationsCount_ )
23725 , pSampleLocations( pSampleLocations_ )
23726 {
23727 }
23728
23729 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
23730 {
23731 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
23732 }
23733
23734 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
23735 {
23736 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
23737 return *this;
23738 }
23739 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
23740 {
23741 pNext = pNext_;
23742 return *this;
23743 }
23744
23745 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
23746 {
23747 sampleLocationsPerPixel = sampleLocationsPerPixel_;
23748 return *this;
23749 }
23750
23751 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
23752 {
23753 sampleLocationGridSize = sampleLocationGridSize_;
23754 return *this;
23755 }
23756
23757 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
23758 {
23759 sampleLocationsCount = sampleLocationsCount_;
23760 return *this;
23761 }
23762
23763 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
23764 {
23765 pSampleLocations = pSampleLocations_;
23766 return *this;
23767 }
23768
23769 operator const VkSampleLocationsInfoEXT&() const
23770 {
23771 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
23772 }
23773
23774 bool operator==( SampleLocationsInfoEXT const& rhs ) const
23775 {
23776 return ( sType == rhs.sType )
23777 && ( pNext == rhs.pNext )
23778 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
23779 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
23780 && ( sampleLocationsCount == rhs.sampleLocationsCount )
23781 && ( pSampleLocations == rhs.pSampleLocations );
23782 }
23783
23784 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
23785 {
23786 return !operator==( rhs );
23787 }
23788
23789 private:
23790 StructureType sType = StructureType::eSampleLocationsInfoEXT;
23791
23792 public:
23793 const void* pNext = nullptr;
23794 SampleCountFlagBits sampleLocationsPerPixel;
23795 Extent2D sampleLocationGridSize;
23796 uint32_t sampleLocationsCount;
23797 const SampleLocationEXT* pSampleLocations;
23798 };
23799 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
23800
23801 struct AttachmentSampleLocationsEXT
23802 {
23803 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0,
23804 SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
23805 : attachmentIndex( attachmentIndex_ )
23806 , sampleLocationsInfo( sampleLocationsInfo_ )
23807 {
23808 }
23809
23810 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
23811 {
23812 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
23813 }
23814
23815 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
23816 {
23817 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
23818 return *this;
23819 }
23820 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
23821 {
23822 attachmentIndex = attachmentIndex_;
23823 return *this;
23824 }
23825
23826 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
23827 {
23828 sampleLocationsInfo = sampleLocationsInfo_;
23829 return *this;
23830 }
23831
23832 operator const VkAttachmentSampleLocationsEXT&() const
23833 {
23834 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
23835 }
23836
23837 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
23838 {
23839 return ( attachmentIndex == rhs.attachmentIndex )
23840 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
23841 }
23842
23843 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
23844 {
23845 return !operator==( rhs );
23846 }
23847
23848 uint32_t attachmentIndex;
23849 SampleLocationsInfoEXT sampleLocationsInfo;
23850 };
23851 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
23852
23853 struct SubpassSampleLocationsEXT
23854 {
23855 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0,
23856 SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
23857 : subpassIndex( subpassIndex_ )
23858 , sampleLocationsInfo( sampleLocationsInfo_ )
23859 {
23860 }
23861
23862 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
23863 {
23864 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
23865 }
23866
23867 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
23868 {
23869 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
23870 return *this;
23871 }
23872 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
23873 {
23874 subpassIndex = subpassIndex_;
23875 return *this;
23876 }
23877
23878 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
23879 {
23880 sampleLocationsInfo = sampleLocationsInfo_;
23881 return *this;
23882 }
23883
23884 operator const VkSubpassSampleLocationsEXT&() const
23885 {
23886 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
23887 }
23888
23889 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
23890 {
23891 return ( subpassIndex == rhs.subpassIndex )
23892 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
23893 }
23894
23895 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
23896 {
23897 return !operator==( rhs );
23898 }
23899
23900 uint32_t subpassIndex;
23901 SampleLocationsInfoEXT sampleLocationsInfo;
23902 };
23903 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
23904
23905 struct RenderPassSampleLocationsBeginInfoEXT
23906 {
23907 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0,
23908 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr,
23909 uint32_t postSubpassSampleLocationsCount_ = 0,
23910 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
23911 : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
23912 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
23913 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
23914 , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
23915 {
23916 }
23917
23918 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
23919 {
23920 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
23921 }
23922
23923 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
23924 {
23925 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
23926 return *this;
23927 }
23928 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
23929 {
23930 pNext = pNext_;
23931 return *this;
23932 }
23933
23934 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
23935 {
23936 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
23937 return *this;
23938 }
23939
23940 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
23941 {
23942 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
23943 return *this;
23944 }
23945
23946 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
23947 {
23948 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
23949 return *this;
23950 }
23951
23952 RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
23953 {
23954 pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
23955 return *this;
23956 }
23957
23958 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
23959 {
23960 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
23961 }
23962
23963 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
23964 {
23965 return ( sType == rhs.sType )
23966 && ( pNext == rhs.pNext )
23967 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
23968 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
23969 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
23970 && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
23971 }
23972
23973 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
23974 {
23975 return !operator==( rhs );
23976 }
23977
23978 private:
23979 StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
23980
23981 public:
23982 const void* pNext = nullptr;
23983 uint32_t attachmentInitialSampleLocationsCount;
23984 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
23985 uint32_t postSubpassSampleLocationsCount;
23986 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
23987 };
23988 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
23989
23990 struct PipelineSampleLocationsStateCreateInfoEXT
23991 {
23992 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0,
23993 SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
23994 : sampleLocationsEnable( sampleLocationsEnable_ )
23995 , sampleLocationsInfo( sampleLocationsInfo_ )
23996 {
23997 }
23998
23999 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
24000 {
24001 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
24002 }
24003
24004 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
24005 {
24006 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
24007 return *this;
24008 }
24009 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
24010 {
24011 pNext = pNext_;
24012 return *this;
24013 }
24014
24015 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
24016 {
24017 sampleLocationsEnable = sampleLocationsEnable_;
24018 return *this;
24019 }
24020
24021 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
24022 {
24023 sampleLocationsInfo = sampleLocationsInfo_;
24024 return *this;
24025 }
24026
24027 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
24028 {
24029 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
24030 }
24031
24032 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
24033 {
24034 return ( sType == rhs.sType )
24035 && ( pNext == rhs.pNext )
24036 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
24037 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
24038 }
24039
24040 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
24041 {
24042 return !operator==( rhs );
24043 }
24044
24045 private:
24046 StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
24047
24048 public:
24049 const void* pNext = nullptr;
24050 Bool32 sampleLocationsEnable;
24051 SampleLocationsInfoEXT sampleLocationsInfo;
24052 };
24053 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
24054
24055 struct PhysicalDeviceSampleLocationsPropertiesEXT
24056 {
24057 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
24058 {
24059 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
24060 }
24061
24062 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
24063 {
24064 return ( sType == rhs.sType )
24065 && ( pNext == rhs.pNext )
24066 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
24067 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
24068 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
24069 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
24070 && ( variableSampleLocations == rhs.variableSampleLocations );
24071 }
24072
24073 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
24074 {
24075 return !operator==( rhs );
24076 }
24077
24078 private:
24079 StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
24080
24081 public:
24082 void* pNext = nullptr;
24083 SampleCountFlags sampleLocationSampleCounts;
24084 Extent2D maxSampleLocationGridSize;
24085 float sampleLocationCoordinateRange[2];
24086 uint32_t sampleLocationSubPixelBits;
24087 Bool32 variableSampleLocations;
24088 };
24089 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
24090
24091 enum class AttachmentDescriptionFlagBits
24092 {
24093 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
24094 };
24095
24096 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
24097
24098 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
24099 {
24100 return AttachmentDescriptionFlags( bit0 ) | bit1;
24101 }
24102
24103 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
24104 {
24105 return ~( AttachmentDescriptionFlags( bits ) );
24106 }
24107
24108 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
24109 {
24110 enum
24111 {
24112 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
24113 };
24114 };
24115
24116 struct AttachmentDescription
24117 {
24118 AttachmentDescription( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(),
24119 Format format_ = Format::eUndefined,
24120 SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
24121 AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad,
24122 AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore,
24123 AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad,
24124 AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore,
24125 ImageLayout initialLayout_ = ImageLayout::eUndefined,
24126 ImageLayout finalLayout_ = ImageLayout::eUndefined )
24127 : flags( flags_ )
24128 , format( format_ )
24129 , samples( samples_ )
24130 , loadOp( loadOp_ )
24131 , storeOp( storeOp_ )
24132 , stencilLoadOp( stencilLoadOp_ )
24133 , stencilStoreOp( stencilStoreOp_ )
24134 , initialLayout( initialLayout_ )
24135 , finalLayout( finalLayout_ )
24136 {
24137 }
24138
24139 AttachmentDescription( VkAttachmentDescription const & rhs )
24140 {
24141 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
24142 }
24143
24144 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
24145 {
24146 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
24147 return *this;
24148 }
24149 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
24150 {
24151 flags = flags_;
24152 return *this;
24153 }
24154
24155 AttachmentDescription& setFormat( Format format_ )
24156 {
24157 format = format_;
24158 return *this;
24159 }
24160
24161 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
24162 {
24163 samples = samples_;
24164 return *this;
24165 }
24166
24167 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
24168 {
24169 loadOp = loadOp_;
24170 return *this;
24171 }
24172
24173 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
24174 {
24175 storeOp = storeOp_;
24176 return *this;
24177 }
24178
24179 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
24180 {
24181 stencilLoadOp = stencilLoadOp_;
24182 return *this;
24183 }
24184
24185 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
24186 {
24187 stencilStoreOp = stencilStoreOp_;
24188 return *this;
24189 }
24190
24191 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
24192 {
24193 initialLayout = initialLayout_;
24194 return *this;
24195 }
24196
24197 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
24198 {
24199 finalLayout = finalLayout_;
24200 return *this;
24201 }
24202
24203 operator const VkAttachmentDescription&() const
24204 {
24205 return *reinterpret_cast<const VkAttachmentDescription*>(this);
24206 }
24207
24208 bool operator==( AttachmentDescription const& rhs ) const
24209 {
24210 return ( flags == rhs.flags )
24211 && ( format == rhs.format )
24212 && ( samples == rhs.samples )
24213 && ( loadOp == rhs.loadOp )
24214 && ( storeOp == rhs.storeOp )
24215 && ( stencilLoadOp == rhs.stencilLoadOp )
24216 && ( stencilStoreOp == rhs.stencilStoreOp )
24217 && ( initialLayout == rhs.initialLayout )
24218 && ( finalLayout == rhs.finalLayout );
24219 }
24220
24221 bool operator!=( AttachmentDescription const& rhs ) const
24222 {
24223 return !operator==( rhs );
24224 }
24225
24226 AttachmentDescriptionFlags flags;
24227 Format format;
24228 SampleCountFlagBits samples;
24229 AttachmentLoadOp loadOp;
24230 AttachmentStoreOp storeOp;
24231 AttachmentLoadOp stencilLoadOp;
24232 AttachmentStoreOp stencilStoreOp;
24233 ImageLayout initialLayout;
24234 ImageLayout finalLayout;
24235 };
24236 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
24237
24238 struct AttachmentDescription2KHR
24239 {
24240 AttachmentDescription2KHR( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(),
24241 Format format_ = Format::eUndefined,
24242 SampleCountFlagBits samples_ = SampleCountFlagBits::e1,
24243 AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad,
24244 AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore,
24245 AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad,
24246 AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore,
24247 ImageLayout initialLayout_ = ImageLayout::eUndefined,
24248 ImageLayout finalLayout_ = ImageLayout::eUndefined )
24249 : flags( flags_ )
24250 , format( format_ )
24251 , samples( samples_ )
24252 , loadOp( loadOp_ )
24253 , storeOp( storeOp_ )
24254 , stencilLoadOp( stencilLoadOp_ )
24255 , stencilStoreOp( stencilStoreOp_ )
24256 , initialLayout( initialLayout_ )
24257 , finalLayout( finalLayout_ )
24258 {
24259 }
24260
24261 AttachmentDescription2KHR( VkAttachmentDescription2KHR const & rhs )
24262 {
24263 memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
24264 }
24265
24266 AttachmentDescription2KHR& operator=( VkAttachmentDescription2KHR const & rhs )
24267 {
24268 memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
24269 return *this;
24270 }
24271 AttachmentDescription2KHR& setPNext( const void* pNext_ )
24272 {
24273 pNext = pNext_;
24274 return *this;
24275 }
24276
24277 AttachmentDescription2KHR& setFlags( AttachmentDescriptionFlags flags_ )
24278 {
24279 flags = flags_;
24280 return *this;
24281 }
24282
24283 AttachmentDescription2KHR& setFormat( Format format_ )
24284 {
24285 format = format_;
24286 return *this;
24287 }
24288
24289 AttachmentDescription2KHR& setSamples( SampleCountFlagBits samples_ )
24290 {
24291 samples = samples_;
24292 return *this;
24293 }
24294
24295 AttachmentDescription2KHR& setLoadOp( AttachmentLoadOp loadOp_ )
24296 {
24297 loadOp = loadOp_;
24298 return *this;
24299 }
24300
24301 AttachmentDescription2KHR& setStoreOp( AttachmentStoreOp storeOp_ )
24302 {
24303 storeOp = storeOp_;
24304 return *this;
24305 }
24306
24307 AttachmentDescription2KHR& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
24308 {
24309 stencilLoadOp = stencilLoadOp_;
24310 return *this;
24311 }
24312
24313 AttachmentDescription2KHR& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
24314 {
24315 stencilStoreOp = stencilStoreOp_;
24316 return *this;
24317 }
24318
24319 AttachmentDescription2KHR& setInitialLayout( ImageLayout initialLayout_ )
24320 {
24321 initialLayout = initialLayout_;
24322 return *this;
24323 }
24324
24325 AttachmentDescription2KHR& setFinalLayout( ImageLayout finalLayout_ )
24326 {
24327 finalLayout = finalLayout_;
24328 return *this;
24329 }
24330
24331 operator const VkAttachmentDescription2KHR&() const
24332 {
24333 return *reinterpret_cast<const VkAttachmentDescription2KHR*>(this);
24334 }
24335
24336 bool operator==( AttachmentDescription2KHR const& rhs ) const
24337 {
24338 return ( sType == rhs.sType )
24339 && ( pNext == rhs.pNext )
24340 && ( flags == rhs.flags )
24341 && ( format == rhs.format )
24342 && ( samples == rhs.samples )
24343 && ( loadOp == rhs.loadOp )
24344 && ( storeOp == rhs.storeOp )
24345 && ( stencilLoadOp == rhs.stencilLoadOp )
24346 && ( stencilStoreOp == rhs.stencilStoreOp )
24347 && ( initialLayout == rhs.initialLayout )
24348 && ( finalLayout == rhs.finalLayout );
24349 }
24350
24351 bool operator!=( AttachmentDescription2KHR const& rhs ) const
24352 {
24353 return !operator==( rhs );
24354 }
24355
24356 private:
24357 StructureType sType = StructureType::eAttachmentDescription2KHR;
24358
24359 public:
24360 const void* pNext = nullptr;
24361 AttachmentDescriptionFlags flags;
24362 Format format;
24363 SampleCountFlagBits samples;
24364 AttachmentLoadOp loadOp;
24365 AttachmentStoreOp storeOp;
24366 AttachmentLoadOp stencilLoadOp;
24367 AttachmentStoreOp stencilStoreOp;
24368 ImageLayout initialLayout;
24369 ImageLayout finalLayout;
24370 };
24371 static_assert( sizeof( AttachmentDescription2KHR ) == sizeof( VkAttachmentDescription2KHR ), "struct and wrapper have different size!" );
24372
24373 enum class StencilFaceFlagBits
24374 {
24375 eFront = VK_STENCIL_FACE_FRONT_BIT,
24376 eBack = VK_STENCIL_FACE_BACK_BIT,
24377 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
24378 };
24379
24380 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
24381
24382 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
24383 {
24384 return StencilFaceFlags( bit0 ) | bit1;
24385 }
24386
24387 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
24388 {
24389 return ~( StencilFaceFlags( bits ) );
24390 }
24391
24392 template <> struct FlagTraits<StencilFaceFlagBits>
24393 {
24394 enum
24395 {
24396 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
24397 };
24398 };
24399
24400 enum class DescriptorPoolCreateFlagBits
24401 {
24402 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
24403 eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
24404 };
24405
24406 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
24407
24408 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
24409 {
24410 return DescriptorPoolCreateFlags( bit0 ) | bit1;
24411 }
24412
24413 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
24414 {
24415 return ~( DescriptorPoolCreateFlags( bits ) );
24416 }
24417
24418 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
24419 {
24420 enum
24421 {
24422 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet) | VkFlags(DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT)
24423 };
24424 };
24425
24426 struct DescriptorPoolCreateInfo
24427 {
24428 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(),
24429 uint32_t maxSets_ = 0,
24430 uint32_t poolSizeCount_ = 0,
24431 const DescriptorPoolSize* pPoolSizes_ = nullptr )
24432 : flags( flags_ )
24433 , maxSets( maxSets_ )
24434 , poolSizeCount( poolSizeCount_ )
24435 , pPoolSizes( pPoolSizes_ )
24436 {
24437 }
24438
24439 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
24440 {
24441 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
24442 }
24443
24444 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
24445 {
24446 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
24447 return *this;
24448 }
24449 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
24450 {
24451 pNext = pNext_;
24452 return *this;
24453 }
24454
24455 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
24456 {
24457 flags = flags_;
24458 return *this;
24459 }
24460
24461 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
24462 {
24463 maxSets = maxSets_;
24464 return *this;
24465 }
24466
24467 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
24468 {
24469 poolSizeCount = poolSizeCount_;
24470 return *this;
24471 }
24472
24473 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
24474 {
24475 pPoolSizes = pPoolSizes_;
24476 return *this;
24477 }
24478
24479 operator const VkDescriptorPoolCreateInfo&() const
24480 {
24481 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
24482 }
24483
24484 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
24485 {
24486 return ( sType == rhs.sType )
24487 && ( pNext == rhs.pNext )
24488 && ( flags == rhs.flags )
24489 && ( maxSets == rhs.maxSets )
24490 && ( poolSizeCount == rhs.poolSizeCount )
24491 && ( pPoolSizes == rhs.pPoolSizes );
24492 }
24493
24494 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
24495 {
24496 return !operator==( rhs );
24497 }
24498
24499 private:
24500 StructureType sType = StructureType::eDescriptorPoolCreateInfo;
24501
24502 public:
24503 const void* pNext = nullptr;
24504 DescriptorPoolCreateFlags flags;
24505 uint32_t maxSets;
24506 uint32_t poolSizeCount;
24507 const DescriptorPoolSize* pPoolSizes;
24508 };
24509 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
24510
24511 enum class DependencyFlagBits
24512 {
24513 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
24514 eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT,
24515 eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
24516 eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT,
24517 eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT
24518 };
24519
24520 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
24521
24522 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
24523 {
24524 return DependencyFlags( bit0 ) | bit1;
24525 }
24526
24527 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
24528 {
24529 return ~( DependencyFlags( bits ) );
24530 }
24531
24532 template <> struct FlagTraits<DependencyFlagBits>
24533 {
24534 enum
24535 {
24536 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eDeviceGroup) | VkFlags(DependencyFlagBits::eViewLocal)
24537 };
24538 };
24539
24540 struct SubpassDependency
24541 {
24542 SubpassDependency( uint32_t srcSubpass_ = 0,
24543 uint32_t dstSubpass_ = 0,
24544 PipelineStageFlags srcStageMask_ = PipelineStageFlags(),
24545 PipelineStageFlags dstStageMask_ = PipelineStageFlags(),
24546 AccessFlags srcAccessMask_ = AccessFlags(),
24547 AccessFlags dstAccessMask_ = AccessFlags(),
24548 DependencyFlags dependencyFlags_ = DependencyFlags() )
24549 : srcSubpass( srcSubpass_ )
24550 , dstSubpass( dstSubpass_ )
24551 , srcStageMask( srcStageMask_ )
24552 , dstStageMask( dstStageMask_ )
24553 , srcAccessMask( srcAccessMask_ )
24554 , dstAccessMask( dstAccessMask_ )
24555 , dependencyFlags( dependencyFlags_ )
24556 {
24557 }
24558
24559 SubpassDependency( VkSubpassDependency const & rhs )
24560 {
24561 memcpy( this, &rhs, sizeof( SubpassDependency ) );
24562 }
24563
24564 SubpassDependency& operator=( VkSubpassDependency const & rhs )
24565 {
24566 memcpy( this, &rhs, sizeof( SubpassDependency ) );
24567 return *this;
24568 }
24569 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
24570 {
24571 srcSubpass = srcSubpass_;
24572 return *this;
24573 }
24574
24575 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
24576 {
24577 dstSubpass = dstSubpass_;
24578 return *this;
24579 }
24580
24581 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
24582 {
24583 srcStageMask = srcStageMask_;
24584 return *this;
24585 }
24586
24587 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
24588 {
24589 dstStageMask = dstStageMask_;
24590 return *this;
24591 }
24592
24593 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
24594 {
24595 srcAccessMask = srcAccessMask_;
24596 return *this;
24597 }
24598
24599 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
24600 {
24601 dstAccessMask = dstAccessMask_;
24602 return *this;
24603 }
24604
24605 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
24606 {
24607 dependencyFlags = dependencyFlags_;
24608 return *this;
24609 }
24610
24611 operator const VkSubpassDependency&() const
24612 {
24613 return *reinterpret_cast<const VkSubpassDependency*>(this);
24614 }
24615
24616 bool operator==( SubpassDependency const& rhs ) const
24617 {
24618 return ( srcSubpass == rhs.srcSubpass )
24619 && ( dstSubpass == rhs.dstSubpass )
24620 && ( srcStageMask == rhs.srcStageMask )
24621 && ( dstStageMask == rhs.dstStageMask )
24622 && ( srcAccessMask == rhs.srcAccessMask )
24623 && ( dstAccessMask == rhs.dstAccessMask )
24624 && ( dependencyFlags == rhs.dependencyFlags );
24625 }
24626
24627 bool operator!=( SubpassDependency const& rhs ) const
24628 {
24629 return !operator==( rhs );
24630 }
24631
24632 uint32_t srcSubpass;
24633 uint32_t dstSubpass;
24634 PipelineStageFlags srcStageMask;
24635 PipelineStageFlags dstStageMask;
24636 AccessFlags srcAccessMask;
24637 AccessFlags dstAccessMask;
24638 DependencyFlags dependencyFlags;
24639 };
24640 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
24641
24642 struct SubpassDependency2KHR
24643 {
24644 SubpassDependency2KHR( uint32_t srcSubpass_ = 0,
24645 uint32_t dstSubpass_ = 0,
24646 PipelineStageFlags srcStageMask_ = PipelineStageFlags(),
24647 PipelineStageFlags dstStageMask_ = PipelineStageFlags(),
24648 AccessFlags srcAccessMask_ = AccessFlags(),
24649 AccessFlags dstAccessMask_ = AccessFlags(),
24650 DependencyFlags dependencyFlags_ = DependencyFlags(),
24651 int32_t viewOffset_ = 0 )
24652 : srcSubpass( srcSubpass_ )
24653 , dstSubpass( dstSubpass_ )
24654 , srcStageMask( srcStageMask_ )
24655 , dstStageMask( dstStageMask_ )
24656 , srcAccessMask( srcAccessMask_ )
24657 , dstAccessMask( dstAccessMask_ )
24658 , dependencyFlags( dependencyFlags_ )
24659 , viewOffset( viewOffset_ )
24660 {
24661 }
24662
24663 SubpassDependency2KHR( VkSubpassDependency2KHR const & rhs )
24664 {
24665 memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
24666 }
24667
24668 SubpassDependency2KHR& operator=( VkSubpassDependency2KHR const & rhs )
24669 {
24670 memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
24671 return *this;
24672 }
24673 SubpassDependency2KHR& setPNext( const void* pNext_ )
24674 {
24675 pNext = pNext_;
24676 return *this;
24677 }
24678
24679 SubpassDependency2KHR& setSrcSubpass( uint32_t srcSubpass_ )
24680 {
24681 srcSubpass = srcSubpass_;
24682 return *this;
24683 }
24684
24685 SubpassDependency2KHR& setDstSubpass( uint32_t dstSubpass_ )
24686 {
24687 dstSubpass = dstSubpass_;
24688 return *this;
24689 }
24690
24691 SubpassDependency2KHR& setSrcStageMask( PipelineStageFlags srcStageMask_ )
24692 {
24693 srcStageMask = srcStageMask_;
24694 return *this;
24695 }
24696
24697 SubpassDependency2KHR& setDstStageMask( PipelineStageFlags dstStageMask_ )
24698 {
24699 dstStageMask = dstStageMask_;
24700 return *this;
24701 }
24702
24703 SubpassDependency2KHR& setSrcAccessMask( AccessFlags srcAccessMask_ )
24704 {
24705 srcAccessMask = srcAccessMask_;
24706 return *this;
24707 }
24708
24709 SubpassDependency2KHR& setDstAccessMask( AccessFlags dstAccessMask_ )
24710 {
24711 dstAccessMask = dstAccessMask_;
24712 return *this;
24713 }
24714
24715 SubpassDependency2KHR& setDependencyFlags( DependencyFlags dependencyFlags_ )
24716 {
24717 dependencyFlags = dependencyFlags_;
24718 return *this;
24719 }
24720
24721 SubpassDependency2KHR& setViewOffset( int32_t viewOffset_ )
24722 {
24723 viewOffset = viewOffset_;
24724 return *this;
24725 }
24726
24727 operator const VkSubpassDependency2KHR&() const
24728 {
24729 return *reinterpret_cast<const VkSubpassDependency2KHR*>(this);
24730 }
24731
24732 bool operator==( SubpassDependency2KHR const& rhs ) const
24733 {
24734 return ( sType == rhs.sType )
24735 && ( pNext == rhs.pNext )
24736 && ( srcSubpass == rhs.srcSubpass )
24737 && ( dstSubpass == rhs.dstSubpass )
24738 && ( srcStageMask == rhs.srcStageMask )
24739 && ( dstStageMask == rhs.dstStageMask )
24740 && ( srcAccessMask == rhs.srcAccessMask )
24741 && ( dstAccessMask == rhs.dstAccessMask )
24742 && ( dependencyFlags == rhs.dependencyFlags )
24743 && ( viewOffset == rhs.viewOffset );
24744 }
24745
24746 bool operator!=( SubpassDependency2KHR const& rhs ) const
24747 {
24748 return !operator==( rhs );
24749 }
24750
24751 private:
24752 StructureType sType = StructureType::eSubpassDependency2KHR;
24753
24754 public:
24755 const void* pNext = nullptr;
24756 uint32_t srcSubpass;
24757 uint32_t dstSubpass;
24758 PipelineStageFlags srcStageMask;
24759 PipelineStageFlags dstStageMask;
24760 AccessFlags srcAccessMask;
24761 AccessFlags dstAccessMask;
24762 DependencyFlags dependencyFlags;
24763 int32_t viewOffset;
24764 };
24765 static_assert( sizeof( SubpassDependency2KHR ) == sizeof( VkSubpassDependency2KHR ), "struct and wrapper have different size!" );
24766
24767 enum class PresentModeKHR
24768 {
24769 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
24770 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
24771 eFifo = VK_PRESENT_MODE_FIFO_KHR,
24772 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
24773 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
24774 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
24775 };
24776
24777 enum class ColorSpaceKHR
24778 {
24779 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
24780 eVkColorspaceSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
24781 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
24782 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
24783 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
24784 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
24785 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
24786 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
24787 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
24788 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
24789 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
24790 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
24791 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
24792 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
24793 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
24794 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
24795 };
24796
24797 struct SurfaceFormatKHR
24798 {
24799 operator const VkSurfaceFormatKHR&() const
24800 {
24801 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
24802 }
24803
24804 bool operator==( SurfaceFormatKHR const& rhs ) const
24805 {
24806 return ( format == rhs.format )
24807 && ( colorSpace == rhs.colorSpace );
24808 }
24809
24810 bool operator!=( SurfaceFormatKHR const& rhs ) const
24811 {
24812 return !operator==( rhs );
24813 }
24814
24815 Format format;
24816 ColorSpaceKHR colorSpace;
24817 };
24818 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
24819
24820 struct SurfaceFormat2KHR
24821 {
24822 operator const VkSurfaceFormat2KHR&() const
24823 {
24824 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
24825 }
24826
24827 bool operator==( SurfaceFormat2KHR const& rhs ) const
24828 {
24829 return ( sType == rhs.sType )
24830 && ( pNext == rhs.pNext )
24831 && ( surfaceFormat == rhs.surfaceFormat );
24832 }
24833
24834 bool operator!=( SurfaceFormat2KHR const& rhs ) const
24835 {
24836 return !operator==( rhs );
24837 }
24838
24839 private:
24840 StructureType sType = StructureType::eSurfaceFormat2KHR;
24841
24842 public:
24843 void* pNext = nullptr;
24844 SurfaceFormatKHR surfaceFormat;
24845 };
24846 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
24847
24848 enum class DisplayPlaneAlphaFlagBitsKHR
24849 {
24850 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
24851 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
24852 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
24853 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
24854 };
24855
24856 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
24857
24858 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
24859 {
24860 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
24861 }
24862
24863 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
24864 {
24865 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
24866 }
24867
24868 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
24869 {
24870 enum
24871 {
24872 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
24873 };
24874 };
24875
24876 struct DisplayPlaneCapabilitiesKHR
24877 {
24878 operator const VkDisplayPlaneCapabilitiesKHR&() const
24879 {
24880 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
24881 }
24882
24883 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
24884 {
24885 return ( supportedAlpha == rhs.supportedAlpha )
24886 && ( minSrcPosition == rhs.minSrcPosition )
24887 && ( maxSrcPosition == rhs.maxSrcPosition )
24888 && ( minSrcExtent == rhs.minSrcExtent )
24889 && ( maxSrcExtent == rhs.maxSrcExtent )
24890 && ( minDstPosition == rhs.minDstPosition )
24891 && ( maxDstPosition == rhs.maxDstPosition )
24892 && ( minDstExtent == rhs.minDstExtent )
24893 && ( maxDstExtent == rhs.maxDstExtent );
24894 }
24895
24896 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
24897 {
24898 return !operator==( rhs );
24899 }
24900
24901 DisplayPlaneAlphaFlagsKHR supportedAlpha;
24902 Offset2D minSrcPosition;
24903 Offset2D maxSrcPosition;
24904 Extent2D minSrcExtent;
24905 Extent2D maxSrcExtent;
24906 Offset2D minDstPosition;
24907 Offset2D maxDstPosition;
24908 Extent2D minDstExtent;
24909 Extent2D maxDstExtent;
24910 };
24911 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
24912
24913 struct DisplayPlaneCapabilities2KHR
24914 {
24915 operator const VkDisplayPlaneCapabilities2KHR&() const
24916 {
24917 return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR*>(this);
24918 }
24919
24920 bool operator==( DisplayPlaneCapabilities2KHR const& rhs ) const
24921 {
24922 return ( sType == rhs.sType )
24923 && ( pNext == rhs.pNext )
24924 && ( capabilities == rhs.capabilities );
24925 }
24926
24927 bool operator!=( DisplayPlaneCapabilities2KHR const& rhs ) const
24928 {
24929 return !operator==( rhs );
24930 }
24931
24932 private:
24933 StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR;
24934
24935 public:
24936 void* pNext = nullptr;
24937 DisplayPlaneCapabilitiesKHR capabilities;
24938 };
24939 static_assert( sizeof( DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), "struct and wrapper have different size!" );
24940
24941 enum class CompositeAlphaFlagBitsKHR
24942 {
24943 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
24944 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
24945 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
24946 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
24947 };
24948
24949 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
24950
24951 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
24952 {
24953 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
24954 }
24955
24956 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
24957 {
24958 return ~( CompositeAlphaFlagsKHR( bits ) );
24959 }
24960
24961 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
24962 {
24963 enum
24964 {
24965 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
24966 };
24967 };
24968
24969 enum class SurfaceTransformFlagBitsKHR
24970 {
24971 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
24972 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
24973 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
24974 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
24975 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
24976 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
24977 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
24978 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
24979 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
24980 };
24981
24982 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
24983
24984 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
24985 {
24986 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
24987 }
24988
24989 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
24990 {
24991 return ~( SurfaceTransformFlagsKHR( bits ) );
24992 }
24993
24994 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
24995 {
24996 enum
24997 {
24998 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)
24999 };
25000 };
25001
25002 struct DisplayPropertiesKHR
25003 {
25004 operator const VkDisplayPropertiesKHR&() const
25005 {
25006 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
25007 }
25008
25009 bool operator==( DisplayPropertiesKHR const& rhs ) const
25010 {
25011 return ( display == rhs.display )
25012 && ( displayName == rhs.displayName )
25013 && ( physicalDimensions == rhs.physicalDimensions )
25014 && ( physicalResolution == rhs.physicalResolution )
25015 && ( supportedTransforms == rhs.supportedTransforms )
25016 && ( planeReorderPossible == rhs.planeReorderPossible )
25017 && ( persistentContent == rhs.persistentContent );
25018 }
25019
25020 bool operator!=( DisplayPropertiesKHR const& rhs ) const
25021 {
25022 return !operator==( rhs );
25023 }
25024
25025 DisplayKHR display;
25026 const char* displayName;
25027 Extent2D physicalDimensions;
25028 Extent2D physicalResolution;
25029 SurfaceTransformFlagsKHR supportedTransforms;
25030 Bool32 planeReorderPossible;
25031 Bool32 persistentContent;
25032 };
25033 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
25034
25035 struct DisplaySurfaceCreateInfoKHR
25036 {
25037 DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateFlagsKHR flags_ = DisplaySurfaceCreateFlagsKHR(),
25038 DisplayModeKHR displayMode_ = DisplayModeKHR(),
25039 uint32_t planeIndex_ = 0,
25040 uint32_t planeStackIndex_ = 0,
25041 SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity,
25042 float globalAlpha_ = 0,
25043 DisplayPlaneAlphaFlagBitsKHR alphaMode_ = DisplayPlaneAlphaFlagBitsKHR::eOpaque,
25044 Extent2D imageExtent_ = Extent2D() )
25045 : flags( flags_ )
25046 , displayMode( displayMode_ )
25047 , planeIndex( planeIndex_ )
25048 , planeStackIndex( planeStackIndex_ )
25049 , transform( transform_ )
25050 , globalAlpha( globalAlpha_ )
25051 , alphaMode( alphaMode_ )
25052 , imageExtent( imageExtent_ )
25053 {
25054 }
25055
25056 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
25057 {
25058 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
25059 }
25060
25061 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
25062 {
25063 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
25064 return *this;
25065 }
25066 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
25067 {
25068 pNext = pNext_;
25069 return *this;
25070 }
25071
25072 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
25073 {
25074 flags = flags_;
25075 return *this;
25076 }
25077
25078 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
25079 {
25080 displayMode = displayMode_;
25081 return *this;
25082 }
25083
25084 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
25085 {
25086 planeIndex = planeIndex_;
25087 return *this;
25088 }
25089
25090 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
25091 {
25092 planeStackIndex = planeStackIndex_;
25093 return *this;
25094 }
25095
25096 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
25097 {
25098 transform = transform_;
25099 return *this;
25100 }
25101
25102 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
25103 {
25104 globalAlpha = globalAlpha_;
25105 return *this;
25106 }
25107
25108 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
25109 {
25110 alphaMode = alphaMode_;
25111 return *this;
25112 }
25113
25114 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
25115 {
25116 imageExtent = imageExtent_;
25117 return *this;
25118 }
25119
25120 operator const VkDisplaySurfaceCreateInfoKHR&() const
25121 {
25122 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
25123 }
25124
25125 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
25126 {
25127 return ( sType == rhs.sType )
25128 && ( pNext == rhs.pNext )
25129 && ( flags == rhs.flags )
25130 && ( displayMode == rhs.displayMode )
25131 && ( planeIndex == rhs.planeIndex )
25132 && ( planeStackIndex == rhs.planeStackIndex )
25133 && ( transform == rhs.transform )
25134 && ( globalAlpha == rhs.globalAlpha )
25135 && ( alphaMode == rhs.alphaMode )
25136 && ( imageExtent == rhs.imageExtent );
25137 }
25138
25139 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
25140 {
25141 return !operator==( rhs );
25142 }
25143
25144 private:
25145 StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
25146
25147 public:
25148 const void* pNext = nullptr;
25149 DisplaySurfaceCreateFlagsKHR flags;
25150 DisplayModeKHR displayMode;
25151 uint32_t planeIndex;
25152 uint32_t planeStackIndex;
25153 SurfaceTransformFlagBitsKHR transform;
25154 float globalAlpha;
25155 DisplayPlaneAlphaFlagBitsKHR alphaMode;
25156 Extent2D imageExtent;
25157 };
25158 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
25159
25160 struct SurfaceCapabilitiesKHR
25161 {
25162 operator const VkSurfaceCapabilitiesKHR&() const
25163 {
25164 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
25165 }
25166
25167 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
25168 {
25169 return ( minImageCount == rhs.minImageCount )
25170 && ( maxImageCount == rhs.maxImageCount )
25171 && ( currentExtent == rhs.currentExtent )
25172 && ( minImageExtent == rhs.minImageExtent )
25173 && ( maxImageExtent == rhs.maxImageExtent )
25174 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
25175 && ( supportedTransforms == rhs.supportedTransforms )
25176 && ( currentTransform == rhs.currentTransform )
25177 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
25178 && ( supportedUsageFlags == rhs.supportedUsageFlags );
25179 }
25180
25181 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
25182 {
25183 return !operator==( rhs );
25184 }
25185
25186 uint32_t minImageCount;
25187 uint32_t maxImageCount;
25188 Extent2D currentExtent;
25189 Extent2D minImageExtent;
25190 Extent2D maxImageExtent;
25191 uint32_t maxImageArrayLayers;
25192 SurfaceTransformFlagsKHR supportedTransforms;
25193 SurfaceTransformFlagBitsKHR currentTransform;
25194 CompositeAlphaFlagsKHR supportedCompositeAlpha;
25195 ImageUsageFlags supportedUsageFlags;
25196 };
25197 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
25198
25199 struct SurfaceCapabilities2KHR
25200 {
25201 operator const VkSurfaceCapabilities2KHR&() const
25202 {
25203 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
25204 }
25205
25206 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
25207 {
25208 return ( sType == rhs.sType )
25209 && ( pNext == rhs.pNext )
25210 && ( surfaceCapabilities == rhs.surfaceCapabilities );
25211 }
25212
25213 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
25214 {
25215 return !operator==( rhs );
25216 }
25217
25218 private:
25219 StructureType sType = StructureType::eSurfaceCapabilities2KHR;
25220
25221 public:
25222 void* pNext = nullptr;
25223 SurfaceCapabilitiesKHR surfaceCapabilities;
25224 };
25225 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
25226
25227 struct DisplayProperties2KHR
25228 {
25229 operator const VkDisplayProperties2KHR&() const
25230 {
25231 return *reinterpret_cast<const VkDisplayProperties2KHR*>(this);
25232 }
25233
25234 bool operator==( DisplayProperties2KHR const& rhs ) const
25235 {
25236 return ( sType == rhs.sType )
25237 && ( pNext == rhs.pNext )
25238 && ( displayProperties == rhs.displayProperties );
25239 }
25240
25241 bool operator!=( DisplayProperties2KHR const& rhs ) const
25242 {
25243 return !operator==( rhs );
25244 }
25245
25246 private:
25247 StructureType sType = StructureType::eDisplayProperties2KHR;
25248
25249 public:
25250 void* pNext = nullptr;
25251 DisplayPropertiesKHR displayProperties;
25252 };
25253 static_assert( sizeof( DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), "struct and wrapper have different size!" );
25254
25255 enum class DebugReportFlagBitsEXT
25256 {
25257 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
25258 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
25259 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
25260 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
25261 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
25262 };
25263
25264 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
25265
25266 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
25267 {
25268 return DebugReportFlagsEXT( bit0 ) | bit1;
25269 }
25270
25271 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
25272 {
25273 return ~( DebugReportFlagsEXT( bits ) );
25274 }
25275
25276 template <> struct FlagTraits<DebugReportFlagBitsEXT>
25277 {
25278 enum
25279 {
25280 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
25281 };
25282 };
25283
25284 struct DebugReportCallbackCreateInfoEXT
25285 {
25286 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(),
25287 PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr,
25288 void* pUserData_ = nullptr )
25289 : flags( flags_ )
25290 , pfnCallback( pfnCallback_ )
25291 , pUserData( pUserData_ )
25292 {
25293 }
25294
25295 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
25296 {
25297 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
25298 }
25299
25300 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
25301 {
25302 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
25303 return *this;
25304 }
25305 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
25306 {
25307 pNext = pNext_;
25308 return *this;
25309 }
25310
25311 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
25312 {
25313 flags = flags_;
25314 return *this;
25315 }
25316
25317 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
25318 {
25319 pfnCallback = pfnCallback_;
25320 return *this;
25321 }
25322
25323 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
25324 {
25325 pUserData = pUserData_;
25326 return *this;
25327 }
25328
25329 operator const VkDebugReportCallbackCreateInfoEXT&() const
25330 {
25331 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
25332 }
25333
25334 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
25335 {
25336 return ( sType == rhs.sType )
25337 && ( pNext == rhs.pNext )
25338 && ( flags == rhs.flags )
25339 && ( pfnCallback == rhs.pfnCallback )
25340 && ( pUserData == rhs.pUserData );
25341 }
25342
25343 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
25344 {
25345 return !operator==( rhs );
25346 }
25347
25348 private:
25349 StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT;
25350
25351 public:
25352 const void* pNext = nullptr;
25353 DebugReportFlagsEXT flags;
25354 PFN_vkDebugReportCallbackEXT pfnCallback;
25355 void* pUserData;
25356 };
25357 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
25358
25359 enum class DebugReportObjectTypeEXT
25360 {
25361 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
25362 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
25363 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
25364 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
25365 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
25366 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
25367 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
25368 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
25369 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
25370 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
25371 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
25372 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
25373 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
25374 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
25375 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
25376 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
25377 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
25378 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
25379 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
25380 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
25381 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
25382 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
25383 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
25384 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
25385 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
25386 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
25387 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
25388 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
25389 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
25390 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
25391 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
25392 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
25393 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
25394 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
25395 eValidationCacheExt = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
25396 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
25397 eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
25398 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
25399 eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
25400 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
25401 };
25402
25403 struct DebugMarkerObjectNameInfoEXT
25404 {
25405 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown,
25406 uint64_t object_ = 0,
25407 const char* pObjectName_ = nullptr )
25408 : objectType( objectType_ )
25409 , object( object_ )
25410 , pObjectName( pObjectName_ )
25411 {
25412 }
25413
25414 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
25415 {
25416 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
25417 }
25418
25419 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
25420 {
25421 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
25422 return *this;
25423 }
25424 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
25425 {
25426 pNext = pNext_;
25427 return *this;
25428 }
25429
25430 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
25431 {
25432 objectType = objectType_;
25433 return *this;
25434 }
25435
25436 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
25437 {
25438 object = object_;
25439 return *this;
25440 }
25441
25442 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
25443 {
25444 pObjectName = pObjectName_;
25445 return *this;
25446 }
25447
25448 operator const VkDebugMarkerObjectNameInfoEXT&() const
25449 {
25450 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
25451 }
25452
25453 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
25454 {
25455 return ( sType == rhs.sType )
25456 && ( pNext == rhs.pNext )
25457 && ( objectType == rhs.objectType )
25458 && ( object == rhs.object )
25459 && ( pObjectName == rhs.pObjectName );
25460 }
25461
25462 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
25463 {
25464 return !operator==( rhs );
25465 }
25466
25467 private:
25468 StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT;
25469
25470 public:
25471 const void* pNext = nullptr;
25472 DebugReportObjectTypeEXT objectType;
25473 uint64_t object;
25474 const char* pObjectName;
25475 };
25476 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
25477
25478 struct DebugMarkerObjectTagInfoEXT
25479 {
25480 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown,
25481 uint64_t object_ = 0,
25482 uint64_t tagName_ = 0,
25483 size_t tagSize_ = 0,
25484 const void* pTag_ = nullptr )
25485 : objectType( objectType_ )
25486 , object( object_ )
25487 , tagName( tagName_ )
25488 , tagSize( tagSize_ )
25489 , pTag( pTag_ )
25490 {
25491 }
25492
25493 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
25494 {
25495 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
25496 }
25497
25498 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
25499 {
25500 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
25501 return *this;
25502 }
25503 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
25504 {
25505 pNext = pNext_;
25506 return *this;
25507 }
25508
25509 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
25510 {
25511 objectType = objectType_;
25512 return *this;
25513 }
25514
25515 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
25516 {
25517 object = object_;
25518 return *this;
25519 }
25520
25521 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
25522 {
25523 tagName = tagName_;
25524 return *this;
25525 }
25526
25527 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
25528 {
25529 tagSize = tagSize_;
25530 return *this;
25531 }
25532
25533 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
25534 {
25535 pTag = pTag_;
25536 return *this;
25537 }
25538
25539 operator const VkDebugMarkerObjectTagInfoEXT&() const
25540 {
25541 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
25542 }
25543
25544 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
25545 {
25546 return ( sType == rhs.sType )
25547 && ( pNext == rhs.pNext )
25548 && ( objectType == rhs.objectType )
25549 && ( object == rhs.object )
25550 && ( tagName == rhs.tagName )
25551 && ( tagSize == rhs.tagSize )
25552 && ( pTag == rhs.pTag );
25553 }
25554
25555 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
25556 {
25557 return !operator==( rhs );
25558 }
25559
25560 private:
25561 StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT;
25562
25563 public:
25564 const void* pNext = nullptr;
25565 DebugReportObjectTypeEXT objectType;
25566 uint64_t object;
25567 uint64_t tagName;
25568 size_t tagSize;
25569 const void* pTag;
25570 };
25571 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
25572
25573 enum class RasterizationOrderAMD
25574 {
25575 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
25576 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
25577 };
25578
25579 struct PipelineRasterizationStateRasterizationOrderAMD
25580 {
25581 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
25582 : rasterizationOrder( rasterizationOrder_ )
25583 {
25584 }
25585
25586 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
25587 {
25588 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
25589 }
25590
25591 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
25592 {
25593 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
25594 return *this;
25595 }
25596 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
25597 {
25598 pNext = pNext_;
25599 return *this;
25600 }
25601
25602 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
25603 {
25604 rasterizationOrder = rasterizationOrder_;
25605 return *this;
25606 }
25607
25608 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
25609 {
25610 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
25611 }
25612
25613 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
25614 {
25615 return ( sType == rhs.sType )
25616 && ( pNext == rhs.pNext )
25617 && ( rasterizationOrder == rhs.rasterizationOrder );
25618 }
25619
25620 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
25621 {
25622 return !operator==( rhs );
25623 }
25624
25625 private:
25626 StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
25627
25628 public:
25629 const void* pNext = nullptr;
25630 RasterizationOrderAMD rasterizationOrder;
25631 };
25632 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
25633
25634 enum class ExternalMemoryHandleTypeFlagBitsNV
25635 {
25636 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
25637 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
25638 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
25639 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
25640 };
25641
25642 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
25643
25644 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
25645 {
25646 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
25647 }
25648
25649 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
25650 {
25651 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
25652 }
25653
25654 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
25655 {
25656 enum
25657 {
25658 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
25659 };
25660 };
25661
25662 struct ExternalMemoryImageCreateInfoNV
25663 {
25664 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
25665 : handleTypes( handleTypes_ )
25666 {
25667 }
25668
25669 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
25670 {
25671 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
25672 }
25673
25674 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
25675 {
25676 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
25677 return *this;
25678 }
25679 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
25680 {
25681 pNext = pNext_;
25682 return *this;
25683 }
25684
25685 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
25686 {
25687 handleTypes = handleTypes_;
25688 return *this;
25689 }
25690
25691 operator const VkExternalMemoryImageCreateInfoNV&() const
25692 {
25693 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
25694 }
25695
25696 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
25697 {
25698 return ( sType == rhs.sType )
25699 && ( pNext == rhs.pNext )
25700 && ( handleTypes == rhs.handleTypes );
25701 }
25702
25703 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
25704 {
25705 return !operator==( rhs );
25706 }
25707
25708 private:
25709 StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV;
25710
25711 public:
25712 const void* pNext = nullptr;
25713 ExternalMemoryHandleTypeFlagsNV handleTypes;
25714 };
25715 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
25716
25717 struct ExportMemoryAllocateInfoNV
25718 {
25719 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
25720 : handleTypes( handleTypes_ )
25721 {
25722 }
25723
25724 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
25725 {
25726 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
25727 }
25728
25729 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
25730 {
25731 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
25732 return *this;
25733 }
25734 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
25735 {
25736 pNext = pNext_;
25737 return *this;
25738 }
25739
25740 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
25741 {
25742 handleTypes = handleTypes_;
25743 return *this;
25744 }
25745
25746 operator const VkExportMemoryAllocateInfoNV&() const
25747 {
25748 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
25749 }
25750
25751 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
25752 {
25753 return ( sType == rhs.sType )
25754 && ( pNext == rhs.pNext )
25755 && ( handleTypes == rhs.handleTypes );
25756 }
25757
25758 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
25759 {
25760 return !operator==( rhs );
25761 }
25762
25763 private:
25764 StructureType sType = StructureType::eExportMemoryAllocateInfoNV;
25765
25766 public:
25767 const void* pNext = nullptr;
25768 ExternalMemoryHandleTypeFlagsNV handleTypes;
25769 };
25770 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
25771
25772#ifdef VK_USE_PLATFORM_WIN32_NV
25773 struct ImportMemoryWin32HandleInfoNV
25774 {
25775 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(),
25776 HANDLE handle_ = 0 )
25777 : handleType( handleType_ )
25778 , handle( handle_ )
25779 {
25780 }
25781
25782 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
25783 {
25784 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
25785 }
25786
25787 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
25788 {
25789 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
25790 return *this;
25791 }
25792 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
25793 {
25794 pNext = pNext_;
25795 return *this;
25796 }
25797
25798 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
25799 {
25800 handleType = handleType_;
25801 return *this;
25802 }
25803
25804 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
25805 {
25806 handle = handle_;
25807 return *this;
25808 }
25809
25810 operator const VkImportMemoryWin32HandleInfoNV&() const
25811 {
25812 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
25813 }
25814
25815 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
25816 {
25817 return ( sType == rhs.sType )
25818 && ( pNext == rhs.pNext )
25819 && ( handleType == rhs.handleType )
25820 && ( handle == rhs.handle );
25821 }
25822
25823 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
25824 {
25825 return !operator==( rhs );
25826 }
25827
25828 private:
25829 StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV;
25830
25831 public:
25832 const void* pNext = nullptr;
25833 ExternalMemoryHandleTypeFlagsNV handleType;
25834 HANDLE handle;
25835 };
25836 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
25837#endif /*VK_USE_PLATFORM_WIN32_NV*/
25838
25839 enum class ExternalMemoryFeatureFlagBitsNV
25840 {
25841 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
25842 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
25843 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
25844 };
25845
25846 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
25847
25848 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
25849 {
25850 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
25851 }
25852
25853 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
25854 {
25855 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
25856 }
25857
25858 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
25859 {
25860 enum
25861 {
25862 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
25863 };
25864 };
25865
25866 struct ExternalImageFormatPropertiesNV
25867 {
25868 operator const VkExternalImageFormatPropertiesNV&() const
25869 {
25870 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
25871 }
25872
25873 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
25874 {
25875 return ( imageFormatProperties == rhs.imageFormatProperties )
25876 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
25877 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
25878 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
25879 }
25880
25881 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
25882 {
25883 return !operator==( rhs );
25884 }
25885
25886 ImageFormatProperties imageFormatProperties;
25887 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
25888 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
25889 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
25890 };
25891 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
25892
25893 enum class ValidationCheckEXT
25894 {
25895 eAll = VK_VALIDATION_CHECK_ALL_EXT,
25896 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
25897 };
25898
25899 struct ValidationFlagsEXT
25900 {
25901 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0,
25902 const ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
25903 : disabledValidationCheckCount( disabledValidationCheckCount_ )
25904 , pDisabledValidationChecks( pDisabledValidationChecks_ )
25905 {
25906 }
25907
25908 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
25909 {
25910 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
25911 }
25912
25913 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
25914 {
25915 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
25916 return *this;
25917 }
25918 ValidationFlagsEXT& setPNext( const void* pNext_ )
25919 {
25920 pNext = pNext_;
25921 return *this;
25922 }
25923
25924 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
25925 {
25926 disabledValidationCheckCount = disabledValidationCheckCount_;
25927 return *this;
25928 }
25929
25930 ValidationFlagsEXT& setPDisabledValidationChecks( const ValidationCheckEXT* pDisabledValidationChecks_ )
25931 {
25932 pDisabledValidationChecks = pDisabledValidationChecks_;
25933 return *this;
25934 }
25935
25936 operator const VkValidationFlagsEXT&() const
25937 {
25938 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
25939 }
25940
25941 bool operator==( ValidationFlagsEXT const& rhs ) const
25942 {
25943 return ( sType == rhs.sType )
25944 && ( pNext == rhs.pNext )
25945 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
25946 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
25947 }
25948
25949 bool operator!=( ValidationFlagsEXT const& rhs ) const
25950 {
25951 return !operator==( rhs );
25952 }
25953
25954 private:
25955 StructureType sType = StructureType::eValidationFlagsEXT;
25956
25957 public:
25958 const void* pNext = nullptr;
25959 uint32_t disabledValidationCheckCount;
25960 const ValidationCheckEXT* pDisabledValidationChecks;
25961 };
25962 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
25963
25964 enum class SubgroupFeatureFlagBits
25965 {
25966 eBasic = VK_SUBGROUP_FEATURE_BASIC_BIT,
25967 eVote = VK_SUBGROUP_FEATURE_VOTE_BIT,
25968 eArithmetic = VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,
25969 eBallot = VK_SUBGROUP_FEATURE_BALLOT_BIT,
25970 eShuffle = VK_SUBGROUP_FEATURE_SHUFFLE_BIT,
25971 eShuffleRelative = VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,
25972 eClustered = VK_SUBGROUP_FEATURE_CLUSTERED_BIT,
25973 eQuad = VK_SUBGROUP_FEATURE_QUAD_BIT,
25974 ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV
25975 };
25976
25977 using SubgroupFeatureFlags = Flags<SubgroupFeatureFlagBits, VkSubgroupFeatureFlags>;
25978
25979 VULKAN_HPP_INLINE SubgroupFeatureFlags operator|( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 )
25980 {
25981 return SubgroupFeatureFlags( bit0 ) | bit1;
25982 }
25983
25984 VULKAN_HPP_INLINE SubgroupFeatureFlags operator~( SubgroupFeatureFlagBits bits )
25985 {
25986 return ~( SubgroupFeatureFlags( bits ) );
25987 }
25988
25989 template <> struct FlagTraits<SubgroupFeatureFlagBits>
25990 {
25991 enum
25992 {
25993 allFlags = VkFlags(SubgroupFeatureFlagBits::eBasic) | VkFlags(SubgroupFeatureFlagBits::eVote) | VkFlags(SubgroupFeatureFlagBits::eArithmetic) | VkFlags(SubgroupFeatureFlagBits::eBallot) | VkFlags(SubgroupFeatureFlagBits::eShuffle) | VkFlags(SubgroupFeatureFlagBits::eShuffleRelative) | VkFlags(SubgroupFeatureFlagBits::eClustered) | VkFlags(SubgroupFeatureFlagBits::eQuad) | VkFlags(SubgroupFeatureFlagBits::ePartitionedNV)
25994 };
25995 };
25996
25997 struct PhysicalDeviceSubgroupProperties
25998 {
25999 operator const VkPhysicalDeviceSubgroupProperties&() const
26000 {
26001 return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>(this);
26002 }
26003
26004 bool operator==( PhysicalDeviceSubgroupProperties const& rhs ) const
26005 {
26006 return ( sType == rhs.sType )
26007 && ( pNext == rhs.pNext )
26008 && ( subgroupSize == rhs.subgroupSize )
26009 && ( supportedStages == rhs.supportedStages )
26010 && ( supportedOperations == rhs.supportedOperations )
26011 && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages );
26012 }
26013
26014 bool operator!=( PhysicalDeviceSubgroupProperties const& rhs ) const
26015 {
26016 return !operator==( rhs );
26017 }
26018
26019 private:
26020 StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties;
26021
26022 public:
26023 void* pNext = nullptr;
26024 uint32_t subgroupSize;
26025 ShaderStageFlags supportedStages;
26026 SubgroupFeatureFlags supportedOperations;
26027 Bool32 quadOperationsInAllStages;
26028 };
26029 static_assert( sizeof( PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), "struct and wrapper have different size!" );
26030
26031 enum class IndirectCommandsLayoutUsageFlagBitsNVX
26032 {
26033 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
26034 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
26035 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
26036 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
26037 };
26038
26039 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
26040
26041 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
26042 {
26043 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
26044 }
26045
26046 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
26047 {
26048 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
26049 }
26050
26051 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
26052 {
26053 enum
26054 {
26055 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
26056 };
26057 };
26058
26059 enum class ObjectEntryUsageFlagBitsNVX
26060 {
26061 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
26062 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
26063 };
26064
26065 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
26066
26067 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
26068 {
26069 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
26070 }
26071
26072 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
26073 {
26074 return ~( ObjectEntryUsageFlagsNVX( bits ) );
26075 }
26076
26077 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
26078 {
26079 enum
26080 {
26081 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
26082 };
26083 };
26084
26085 enum class IndirectCommandsTokenTypeNVX
26086 {
26087 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
26088 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
26089 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
26090 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
26091 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
26092 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
26093 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
26094 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
26095 };
26096
26097 struct IndirectCommandsTokenNVX
26098 {
26099 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline,
26100 Buffer buffer_ = Buffer(),
26101 DeviceSize offset_ = 0 )
26102 : tokenType( tokenType_ )
26103 , buffer( buffer_ )
26104 , offset( offset_ )
26105 {
26106 }
26107
26108 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
26109 {
26110 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
26111 }
26112
26113 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
26114 {
26115 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
26116 return *this;
26117 }
26118 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
26119 {
26120 tokenType = tokenType_;
26121 return *this;
26122 }
26123
26124 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
26125 {
26126 buffer = buffer_;
26127 return *this;
26128 }
26129
26130 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
26131 {
26132 offset = offset_;
26133 return *this;
26134 }
26135
26136 operator const VkIndirectCommandsTokenNVX&() const
26137 {
26138 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
26139 }
26140
26141 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
26142 {
26143 return ( tokenType == rhs.tokenType )
26144 && ( buffer == rhs.buffer )
26145 && ( offset == rhs.offset );
26146 }
26147
26148 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
26149 {
26150 return !operator==( rhs );
26151 }
26152
26153 IndirectCommandsTokenTypeNVX tokenType;
26154 Buffer buffer;
26155 DeviceSize offset;
26156 };
26157 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
26158
26159 struct IndirectCommandsLayoutTokenNVX
26160 {
26161 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline,
26162 uint32_t bindingUnit_ = 0,
26163 uint32_t dynamicCount_ = 0,
26164 uint32_t divisor_ = 0 )
26165 : tokenType( tokenType_ )
26166 , bindingUnit( bindingUnit_ )
26167 , dynamicCount( dynamicCount_ )
26168 , divisor( divisor_ )
26169 {
26170 }
26171
26172 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
26173 {
26174 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
26175 }
26176
26177 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
26178 {
26179 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
26180 return *this;
26181 }
26182 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
26183 {
26184 tokenType = tokenType_;
26185 return *this;
26186 }
26187
26188 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
26189 {
26190 bindingUnit = bindingUnit_;
26191 return *this;
26192 }
26193
26194 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
26195 {
26196 dynamicCount = dynamicCount_;
26197 return *this;
26198 }
26199
26200 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
26201 {
26202 divisor = divisor_;
26203 return *this;
26204 }
26205
26206 operator const VkIndirectCommandsLayoutTokenNVX&() const
26207 {
26208 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
26209 }
26210
26211 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
26212 {
26213 return ( tokenType == rhs.tokenType )
26214 && ( bindingUnit == rhs.bindingUnit )
26215 && ( dynamicCount == rhs.dynamicCount )
26216 && ( divisor == rhs.divisor );
26217 }
26218
26219 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
26220 {
26221 return !operator==( rhs );
26222 }
26223
26224 IndirectCommandsTokenTypeNVX tokenType;
26225 uint32_t bindingUnit;
26226 uint32_t dynamicCount;
26227 uint32_t divisor;
26228 };
26229 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
26230
26231 struct IndirectCommandsLayoutCreateInfoNVX
26232 {
26233 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
26234 IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(),
26235 uint32_t tokenCount_ = 0,
26236 const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
26237 : pipelineBindPoint( pipelineBindPoint_ )
26238 , flags( flags_ )
26239 , tokenCount( tokenCount_ )
26240 , pTokens( pTokens_ )
26241 {
26242 }
26243
26244 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
26245 {
26246 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
26247 }
26248
26249 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
26250 {
26251 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
26252 return *this;
26253 }
26254 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
26255 {
26256 pNext = pNext_;
26257 return *this;
26258 }
26259
26260 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
26261 {
26262 pipelineBindPoint = pipelineBindPoint_;
26263 return *this;
26264 }
26265
26266 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
26267 {
26268 flags = flags_;
26269 return *this;
26270 }
26271
26272 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
26273 {
26274 tokenCount = tokenCount_;
26275 return *this;
26276 }
26277
26278 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
26279 {
26280 pTokens = pTokens_;
26281 return *this;
26282 }
26283
26284 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
26285 {
26286 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
26287 }
26288
26289 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
26290 {
26291 return ( sType == rhs.sType )
26292 && ( pNext == rhs.pNext )
26293 && ( pipelineBindPoint == rhs.pipelineBindPoint )
26294 && ( flags == rhs.flags )
26295 && ( tokenCount == rhs.tokenCount )
26296 && ( pTokens == rhs.pTokens );
26297 }
26298
26299 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
26300 {
26301 return !operator==( rhs );
26302 }
26303
26304 private:
26305 StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNVX;
26306
26307 public:
26308 const void* pNext = nullptr;
26309 PipelineBindPoint pipelineBindPoint;
26310 IndirectCommandsLayoutUsageFlagsNVX flags;
26311 uint32_t tokenCount;
26312 const IndirectCommandsLayoutTokenNVX* pTokens;
26313 };
26314 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
26315
26316 enum class ObjectEntryTypeNVX
26317 {
26318 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
26319 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
26320 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
26321 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
26322 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
26323 };
26324
26325 struct ObjectTableCreateInfoNVX
26326 {
26327 ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0,
26328 const ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr,
26329 const uint32_t* pObjectEntryCounts_ = nullptr,
26330 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr,
26331 uint32_t maxUniformBuffersPerDescriptor_ = 0,
26332 uint32_t maxStorageBuffersPerDescriptor_ = 0,
26333 uint32_t maxStorageImagesPerDescriptor_ = 0,
26334 uint32_t maxSampledImagesPerDescriptor_ = 0,
26335 uint32_t maxPipelineLayouts_ = 0 )
26336 : objectCount( objectCount_ )
26337 , pObjectEntryTypes( pObjectEntryTypes_ )
26338 , pObjectEntryCounts( pObjectEntryCounts_ )
26339 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
26340 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
26341 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
26342 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
26343 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
26344 , maxPipelineLayouts( maxPipelineLayouts_ )
26345 {
26346 }
26347
26348 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
26349 {
26350 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
26351 }
26352
26353 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
26354 {
26355 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
26356 return *this;
26357 }
26358 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
26359 {
26360 pNext = pNext_;
26361 return *this;
26362 }
26363
26364 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
26365 {
26366 objectCount = objectCount_;
26367 return *this;
26368 }
26369
26370 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
26371 {
26372 pObjectEntryTypes = pObjectEntryTypes_;
26373 return *this;
26374 }
26375
26376 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
26377 {
26378 pObjectEntryCounts = pObjectEntryCounts_;
26379 return *this;
26380 }
26381
26382 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
26383 {
26384 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
26385 return *this;
26386 }
26387
26388 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
26389 {
26390 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
26391 return *this;
26392 }
26393
26394 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
26395 {
26396 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
26397 return *this;
26398 }
26399
26400 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
26401 {
26402 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
26403 return *this;
26404 }
26405
26406 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
26407 {
26408 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
26409 return *this;
26410 }
26411
26412 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
26413 {
26414 maxPipelineLayouts = maxPipelineLayouts_;
26415 return *this;
26416 }
26417
26418 operator const VkObjectTableCreateInfoNVX&() const
26419 {
26420 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
26421 }
26422
26423 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
26424 {
26425 return ( sType == rhs.sType )
26426 && ( pNext == rhs.pNext )
26427 && ( objectCount == rhs.objectCount )
26428 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
26429 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
26430 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
26431 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
26432 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
26433 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
26434 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
26435 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
26436 }
26437
26438 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
26439 {
26440 return !operator==( rhs );
26441 }
26442
26443 private:
26444 StructureType sType = StructureType::eObjectTableCreateInfoNVX;
26445
26446 public:
26447 const void* pNext = nullptr;
26448 uint32_t objectCount;
26449 const ObjectEntryTypeNVX* pObjectEntryTypes;
26450 const uint32_t* pObjectEntryCounts;
26451 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
26452 uint32_t maxUniformBuffersPerDescriptor;
26453 uint32_t maxStorageBuffersPerDescriptor;
26454 uint32_t maxStorageImagesPerDescriptor;
26455 uint32_t maxSampledImagesPerDescriptor;
26456 uint32_t maxPipelineLayouts;
26457 };
26458 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
26459
26460 struct ObjectTableEntryNVX
26461 {
26462 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26463 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
26464 : type( type_ )
26465 , flags( flags_ )
26466 {
26467 }
26468
26469 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
26470 {
26471 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
26472 }
26473
26474 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
26475 {
26476 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
26477 return *this;
26478 }
26479 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
26480 {
26481 type = type_;
26482 return *this;
26483 }
26484
26485 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26486 {
26487 flags = flags_;
26488 return *this;
26489 }
26490
26491 operator const VkObjectTableEntryNVX&() const
26492 {
26493 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
26494 }
26495
26496 bool operator==( ObjectTableEntryNVX const& rhs ) const
26497 {
26498 return ( type == rhs.type )
26499 && ( flags == rhs.flags );
26500 }
26501
26502 bool operator!=( ObjectTableEntryNVX const& rhs ) const
26503 {
26504 return !operator==( rhs );
26505 }
26506
26507 ObjectEntryTypeNVX type;
26508 ObjectEntryUsageFlagsNVX flags;
26509 };
26510 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
26511
26512 struct ObjectTablePipelineEntryNVX
26513 {
26514 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26515 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
26516 Pipeline pipeline_ = Pipeline() )
26517 : type( type_ )
26518 , flags( flags_ )
26519 , pipeline( pipeline_ )
26520 {
26521 }
26522
26523 explicit ObjectTablePipelineEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
26524 Pipeline pipeline_ = Pipeline() )
26525 : type( objectTableEntryNVX.type )
26526 , flags( objectTableEntryNVX.flags )
26527 , pipeline( pipeline_ )
26528 {}
26529
26530 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
26531 {
26532 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
26533 }
26534
26535 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
26536 {
26537 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
26538 return *this;
26539 }
26540 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
26541 {
26542 type = type_;
26543 return *this;
26544 }
26545
26546 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26547 {
26548 flags = flags_;
26549 return *this;
26550 }
26551
26552 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
26553 {
26554 pipeline = pipeline_;
26555 return *this;
26556 }
26557
26558 operator const VkObjectTablePipelineEntryNVX&() const
26559 {
26560 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
26561 }
26562
26563 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
26564 {
26565 return ( type == rhs.type )
26566 && ( flags == rhs.flags )
26567 && ( pipeline == rhs.pipeline );
26568 }
26569
26570 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
26571 {
26572 return !operator==( rhs );
26573 }
26574
26575 ObjectEntryTypeNVX type;
26576 ObjectEntryUsageFlagsNVX flags;
26577 Pipeline pipeline;
26578 };
26579 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
26580
26581 struct ObjectTableDescriptorSetEntryNVX
26582 {
26583 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26584 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
26585 PipelineLayout pipelineLayout_ = PipelineLayout(),
26586 DescriptorSet descriptorSet_ = DescriptorSet() )
26587 : type( type_ )
26588 , flags( flags_ )
26589 , pipelineLayout( pipelineLayout_ )
26590 , descriptorSet( descriptorSet_ )
26591 {
26592 }
26593
26594 explicit ObjectTableDescriptorSetEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
26595 PipelineLayout pipelineLayout_ = PipelineLayout(),
26596 DescriptorSet descriptorSet_ = DescriptorSet() )
26597 : type( objectTableEntryNVX.type )
26598 , flags( objectTableEntryNVX.flags )
26599 , pipelineLayout( pipelineLayout_ )
26600 , descriptorSet( descriptorSet_ )
26601 {}
26602
26603 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
26604 {
26605 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
26606 }
26607
26608 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
26609 {
26610 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
26611 return *this;
26612 }
26613 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
26614 {
26615 type = type_;
26616 return *this;
26617 }
26618
26619 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26620 {
26621 flags = flags_;
26622 return *this;
26623 }
26624
26625 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
26626 {
26627 pipelineLayout = pipelineLayout_;
26628 return *this;
26629 }
26630
26631 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
26632 {
26633 descriptorSet = descriptorSet_;
26634 return *this;
26635 }
26636
26637 operator const VkObjectTableDescriptorSetEntryNVX&() const
26638 {
26639 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
26640 }
26641
26642 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
26643 {
26644 return ( type == rhs.type )
26645 && ( flags == rhs.flags )
26646 && ( pipelineLayout == rhs.pipelineLayout )
26647 && ( descriptorSet == rhs.descriptorSet );
26648 }
26649
26650 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
26651 {
26652 return !operator==( rhs );
26653 }
26654
26655 ObjectEntryTypeNVX type;
26656 ObjectEntryUsageFlagsNVX flags;
26657 PipelineLayout pipelineLayout;
26658 DescriptorSet descriptorSet;
26659 };
26660 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
26661
26662 struct ObjectTableVertexBufferEntryNVX
26663 {
26664 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26665 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
26666 Buffer buffer_ = Buffer() )
26667 : type( type_ )
26668 , flags( flags_ )
26669 , buffer( buffer_ )
26670 {
26671 }
26672
26673 explicit ObjectTableVertexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
26674 Buffer buffer_ = Buffer() )
26675 : type( objectTableEntryNVX.type )
26676 , flags( objectTableEntryNVX.flags )
26677 , buffer( buffer_ )
26678 {}
26679
26680 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
26681 {
26682 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
26683 }
26684
26685 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
26686 {
26687 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
26688 return *this;
26689 }
26690 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
26691 {
26692 type = type_;
26693 return *this;
26694 }
26695
26696 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26697 {
26698 flags = flags_;
26699 return *this;
26700 }
26701
26702 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
26703 {
26704 buffer = buffer_;
26705 return *this;
26706 }
26707
26708 operator const VkObjectTableVertexBufferEntryNVX&() const
26709 {
26710 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
26711 }
26712
26713 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
26714 {
26715 return ( type == rhs.type )
26716 && ( flags == rhs.flags )
26717 && ( buffer == rhs.buffer );
26718 }
26719
26720 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
26721 {
26722 return !operator==( rhs );
26723 }
26724
26725 ObjectEntryTypeNVX type;
26726 ObjectEntryUsageFlagsNVX flags;
26727 Buffer buffer;
26728 };
26729 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
26730
26731 struct ObjectTableIndexBufferEntryNVX
26732 {
26733 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26734 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
26735 Buffer buffer_ = Buffer(),
26736 IndexType indexType_ = IndexType::eUint16 )
26737 : type( type_ )
26738 , flags( flags_ )
26739 , buffer( buffer_ )
26740 , indexType( indexType_ )
26741 {
26742 }
26743
26744 explicit ObjectTableIndexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
26745 Buffer buffer_ = Buffer(),
26746 IndexType indexType_ = IndexType::eUint16 )
26747 : type( objectTableEntryNVX.type )
26748 , flags( objectTableEntryNVX.flags )
26749 , buffer( buffer_ )
26750 , indexType( indexType_ )
26751 {}
26752
26753 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
26754 {
26755 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
26756 }
26757
26758 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
26759 {
26760 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
26761 return *this;
26762 }
26763 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
26764 {
26765 type = type_;
26766 return *this;
26767 }
26768
26769 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26770 {
26771 flags = flags_;
26772 return *this;
26773 }
26774
26775 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
26776 {
26777 buffer = buffer_;
26778 return *this;
26779 }
26780
26781 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
26782 {
26783 indexType = indexType_;
26784 return *this;
26785 }
26786
26787 operator const VkObjectTableIndexBufferEntryNVX&() const
26788 {
26789 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
26790 }
26791
26792 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
26793 {
26794 return ( type == rhs.type )
26795 && ( flags == rhs.flags )
26796 && ( buffer == rhs.buffer )
26797 && ( indexType == rhs.indexType );
26798 }
26799
26800 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
26801 {
26802 return !operator==( rhs );
26803 }
26804
26805 ObjectEntryTypeNVX type;
26806 ObjectEntryUsageFlagsNVX flags;
26807 Buffer buffer;
26808 IndexType indexType;
26809 };
26810 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
26811
26812 struct ObjectTablePushConstantEntryNVX
26813 {
26814 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet,
26815 ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(),
26816 PipelineLayout pipelineLayout_ = PipelineLayout(),
26817 ShaderStageFlags stageFlags_ = ShaderStageFlags() )
26818 : type( type_ )
26819 , flags( flags_ )
26820 , pipelineLayout( pipelineLayout_ )
26821 , stageFlags( stageFlags_ )
26822 {
26823 }
26824
26825 explicit ObjectTablePushConstantEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX,
26826 PipelineLayout pipelineLayout_ = PipelineLayout(),
26827 ShaderStageFlags stageFlags_ = ShaderStageFlags() )
26828 : type( objectTableEntryNVX.type )
26829 , flags( objectTableEntryNVX.flags )
26830 , pipelineLayout( pipelineLayout_ )
26831 , stageFlags( stageFlags_ )
26832 {}
26833
26834 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
26835 {
26836 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
26837 }
26838
26839 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
26840 {
26841 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
26842 return *this;
26843 }
26844 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
26845 {
26846 type = type_;
26847 return *this;
26848 }
26849
26850 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
26851 {
26852 flags = flags_;
26853 return *this;
26854 }
26855
26856 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
26857 {
26858 pipelineLayout = pipelineLayout_;
26859 return *this;
26860 }
26861
26862 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
26863 {
26864 stageFlags = stageFlags_;
26865 return *this;
26866 }
26867
26868 operator const VkObjectTablePushConstantEntryNVX&() const
26869 {
26870 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
26871 }
26872
26873 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
26874 {
26875 return ( type == rhs.type )
26876 && ( flags == rhs.flags )
26877 && ( pipelineLayout == rhs.pipelineLayout )
26878 && ( stageFlags == rhs.stageFlags );
26879 }
26880
26881 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
26882 {
26883 return !operator==( rhs );
26884 }
26885
26886 ObjectEntryTypeNVX type;
26887 ObjectEntryUsageFlagsNVX flags;
26888 PipelineLayout pipelineLayout;
26889 ShaderStageFlags stageFlags;
26890 };
26891 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
26892
26893 enum class DescriptorSetLayoutCreateFlagBits
26894 {
26895 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,
26896 eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
26897 };
26898
26899 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
26900
26901 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
26902 {
26903 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
26904 }
26905
26906 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
26907 {
26908 return ~( DescriptorSetLayoutCreateFlags( bits ) );
26909 }
26910
26911 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
26912 {
26913 enum
26914 {
26915 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) | VkFlags(DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT)
26916 };
26917 };
26918
26919 struct DescriptorSetLayoutCreateInfo
26920 {
26921 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(),
26922 uint32_t bindingCount_ = 0,
26923 const DescriptorSetLayoutBinding* pBindings_ = nullptr )
26924 : flags( flags_ )
26925 , bindingCount( bindingCount_ )
26926 , pBindings( pBindings_ )
26927 {
26928 }
26929
26930 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
26931 {
26932 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
26933 }
26934
26935 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
26936 {
26937 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
26938 return *this;
26939 }
26940 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
26941 {
26942 pNext = pNext_;
26943 return *this;
26944 }
26945
26946 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
26947 {
26948 flags = flags_;
26949 return *this;
26950 }
26951
26952 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
26953 {
26954 bindingCount = bindingCount_;
26955 return *this;
26956 }
26957
26958 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
26959 {
26960 pBindings = pBindings_;
26961 return *this;
26962 }
26963
26964 operator const VkDescriptorSetLayoutCreateInfo&() const
26965 {
26966 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
26967 }
26968
26969 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
26970 {
26971 return ( sType == rhs.sType )
26972 && ( pNext == rhs.pNext )
26973 && ( flags == rhs.flags )
26974 && ( bindingCount == rhs.bindingCount )
26975 && ( pBindings == rhs.pBindings );
26976 }
26977
26978 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
26979 {
26980 return !operator==( rhs );
26981 }
26982
26983 private:
26984 StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
26985
26986 public:
26987 const void* pNext = nullptr;
26988 DescriptorSetLayoutCreateFlags flags;
26989 uint32_t bindingCount;
26990 const DescriptorSetLayoutBinding* pBindings;
26991 };
26992 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
26993
26994 enum class ExternalMemoryHandleTypeFlagBits
26995 {
26996 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
26997 eOpaqueFdKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
26998 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
26999 eOpaqueWin32KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
27000 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
27001 eOpaqueWin32KmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
27002 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
27003 eD3D11TextureKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
27004 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
27005 eD3D11TextureKmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
27006 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
27007 eD3D12HeapKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
27008 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
27009 eD3D12ResourceKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
27010 eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
27011 eAndroidHardwareBufferANDROID = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
27012 eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,
27013 eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
27014 };
27015
27016 using ExternalMemoryHandleTypeFlags = Flags<ExternalMemoryHandleTypeFlagBits, VkExternalMemoryHandleTypeFlags>;
27017
27018 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator|( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 )
27019 {
27020 return ExternalMemoryHandleTypeFlags( bit0 ) | bit1;
27021 }
27022
27023 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator~( ExternalMemoryHandleTypeFlagBits bits )
27024 {
27025 return ~( ExternalMemoryHandleTypeFlags( bits ) );
27026 }
27027
27028 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBits>
27029 {
27030 enum
27031 {
27032 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Resource) | VkFlags(ExternalMemoryHandleTypeFlagBits::eDmaBufEXT) | VkFlags(ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID) | VkFlags(ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT) | VkFlags(ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT)
27033 };
27034 };
27035
27036 using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags;
27037
27038 struct PhysicalDeviceExternalImageFormatInfo
27039 {
27040 PhysicalDeviceExternalImageFormatInfo( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
27041 : handleType( handleType_ )
27042 {
27043 }
27044
27045 PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
27046 {
27047 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
27048 }
27049
27050 PhysicalDeviceExternalImageFormatInfo& operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
27051 {
27052 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
27053 return *this;
27054 }
27055 PhysicalDeviceExternalImageFormatInfo& setPNext( const void* pNext_ )
27056 {
27057 pNext = pNext_;
27058 return *this;
27059 }
27060
27061 PhysicalDeviceExternalImageFormatInfo& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27062 {
27063 handleType = handleType_;
27064 return *this;
27065 }
27066
27067 operator const VkPhysicalDeviceExternalImageFormatInfo&() const
27068 {
27069 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(this);
27070 }
27071
27072 bool operator==( PhysicalDeviceExternalImageFormatInfo const& rhs ) const
27073 {
27074 return ( sType == rhs.sType )
27075 && ( pNext == rhs.pNext )
27076 && ( handleType == rhs.handleType );
27077 }
27078
27079 bool operator!=( PhysicalDeviceExternalImageFormatInfo const& rhs ) const
27080 {
27081 return !operator==( rhs );
27082 }
27083
27084 private:
27085 StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
27086
27087 public:
27088 const void* pNext = nullptr;
27089 ExternalMemoryHandleTypeFlagBits handleType;
27090 };
27091 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), "struct and wrapper have different size!" );
27092
27093 using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
27094
27095 struct PhysicalDeviceExternalBufferInfo
27096 {
27097 PhysicalDeviceExternalBufferInfo( BufferCreateFlags flags_ = BufferCreateFlags(),
27098 BufferUsageFlags usage_ = BufferUsageFlags(),
27099 ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
27100 : flags( flags_ )
27101 , usage( usage_ )
27102 , handleType( handleType_ )
27103 {
27104 }
27105
27106 PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs )
27107 {
27108 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
27109 }
27110
27111 PhysicalDeviceExternalBufferInfo& operator=( VkPhysicalDeviceExternalBufferInfo const & rhs )
27112 {
27113 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
27114 return *this;
27115 }
27116 PhysicalDeviceExternalBufferInfo& setPNext( const void* pNext_ )
27117 {
27118 pNext = pNext_;
27119 return *this;
27120 }
27121
27122 PhysicalDeviceExternalBufferInfo& setFlags( BufferCreateFlags flags_ )
27123 {
27124 flags = flags_;
27125 return *this;
27126 }
27127
27128 PhysicalDeviceExternalBufferInfo& setUsage( BufferUsageFlags usage_ )
27129 {
27130 usage = usage_;
27131 return *this;
27132 }
27133
27134 PhysicalDeviceExternalBufferInfo& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27135 {
27136 handleType = handleType_;
27137 return *this;
27138 }
27139
27140 operator const VkPhysicalDeviceExternalBufferInfo&() const
27141 {
27142 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>(this);
27143 }
27144
27145 bool operator==( PhysicalDeviceExternalBufferInfo const& rhs ) const
27146 {
27147 return ( sType == rhs.sType )
27148 && ( pNext == rhs.pNext )
27149 && ( flags == rhs.flags )
27150 && ( usage == rhs.usage )
27151 && ( handleType == rhs.handleType );
27152 }
27153
27154 bool operator!=( PhysicalDeviceExternalBufferInfo const& rhs ) const
27155 {
27156 return !operator==( rhs );
27157 }
27158
27159 private:
27160 StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo;
27161
27162 public:
27163 const void* pNext = nullptr;
27164 BufferCreateFlags flags;
27165 BufferUsageFlags usage;
27166 ExternalMemoryHandleTypeFlagBits handleType;
27167 };
27168 static_assert( sizeof( PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), "struct and wrapper have different size!" );
27169
27170 using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
27171
27172 struct ExternalMemoryImageCreateInfo
27173 {
27174 ExternalMemoryImageCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
27175 : handleTypes( handleTypes_ )
27176 {
27177 }
27178
27179 ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs )
27180 {
27181 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
27182 }
27183
27184 ExternalMemoryImageCreateInfo& operator=( VkExternalMemoryImageCreateInfo const & rhs )
27185 {
27186 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
27187 return *this;
27188 }
27189 ExternalMemoryImageCreateInfo& setPNext( const void* pNext_ )
27190 {
27191 pNext = pNext_;
27192 return *this;
27193 }
27194
27195 ExternalMemoryImageCreateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
27196 {
27197 handleTypes = handleTypes_;
27198 return *this;
27199 }
27200
27201 operator const VkExternalMemoryImageCreateInfo&() const
27202 {
27203 return *reinterpret_cast<const VkExternalMemoryImageCreateInfo*>(this);
27204 }
27205
27206 bool operator==( ExternalMemoryImageCreateInfo const& rhs ) const
27207 {
27208 return ( sType == rhs.sType )
27209 && ( pNext == rhs.pNext )
27210 && ( handleTypes == rhs.handleTypes );
27211 }
27212
27213 bool operator!=( ExternalMemoryImageCreateInfo const& rhs ) const
27214 {
27215 return !operator==( rhs );
27216 }
27217
27218 private:
27219 StructureType sType = StructureType::eExternalMemoryImageCreateInfo;
27220
27221 public:
27222 const void* pNext = nullptr;
27223 ExternalMemoryHandleTypeFlags handleTypes;
27224 };
27225 static_assert( sizeof( ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), "struct and wrapper have different size!" );
27226
27227 using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
27228
27229 struct ExternalMemoryBufferCreateInfo
27230 {
27231 ExternalMemoryBufferCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
27232 : handleTypes( handleTypes_ )
27233 {
27234 }
27235
27236 ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs )
27237 {
27238 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
27239 }
27240
27241 ExternalMemoryBufferCreateInfo& operator=( VkExternalMemoryBufferCreateInfo const & rhs )
27242 {
27243 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
27244 return *this;
27245 }
27246 ExternalMemoryBufferCreateInfo& setPNext( const void* pNext_ )
27247 {
27248 pNext = pNext_;
27249 return *this;
27250 }
27251
27252 ExternalMemoryBufferCreateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
27253 {
27254 handleTypes = handleTypes_;
27255 return *this;
27256 }
27257
27258 operator const VkExternalMemoryBufferCreateInfo&() const
27259 {
27260 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>(this);
27261 }
27262
27263 bool operator==( ExternalMemoryBufferCreateInfo const& rhs ) const
27264 {
27265 return ( sType == rhs.sType )
27266 && ( pNext == rhs.pNext )
27267 && ( handleTypes == rhs.handleTypes );
27268 }
27269
27270 bool operator!=( ExternalMemoryBufferCreateInfo const& rhs ) const
27271 {
27272 return !operator==( rhs );
27273 }
27274
27275 private:
27276 StructureType sType = StructureType::eExternalMemoryBufferCreateInfo;
27277
27278 public:
27279 const void* pNext = nullptr;
27280 ExternalMemoryHandleTypeFlags handleTypes;
27281 };
27282 static_assert( sizeof( ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), "struct and wrapper have different size!" );
27283
27284 using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
27285
27286 struct ExportMemoryAllocateInfo
27287 {
27288 ExportMemoryAllocateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = ExternalMemoryHandleTypeFlags() )
27289 : handleTypes( handleTypes_ )
27290 {
27291 }
27292
27293 ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs )
27294 {
27295 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
27296 }
27297
27298 ExportMemoryAllocateInfo& operator=( VkExportMemoryAllocateInfo const & rhs )
27299 {
27300 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
27301 return *this;
27302 }
27303 ExportMemoryAllocateInfo& setPNext( const void* pNext_ )
27304 {
27305 pNext = pNext_;
27306 return *this;
27307 }
27308
27309 ExportMemoryAllocateInfo& setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ )
27310 {
27311 handleTypes = handleTypes_;
27312 return *this;
27313 }
27314
27315 operator const VkExportMemoryAllocateInfo&() const
27316 {
27317 return *reinterpret_cast<const VkExportMemoryAllocateInfo*>(this);
27318 }
27319
27320 bool operator==( ExportMemoryAllocateInfo const& rhs ) const
27321 {
27322 return ( sType == rhs.sType )
27323 && ( pNext == rhs.pNext )
27324 && ( handleTypes == rhs.handleTypes );
27325 }
27326
27327 bool operator!=( ExportMemoryAllocateInfo const& rhs ) const
27328 {
27329 return !operator==( rhs );
27330 }
27331
27332 private:
27333 StructureType sType = StructureType::eExportMemoryAllocateInfo;
27334
27335 public:
27336 const void* pNext = nullptr;
27337 ExternalMemoryHandleTypeFlags handleTypes;
27338 };
27339 static_assert( sizeof( ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), "struct and wrapper have different size!" );
27340
27341 using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
27342
27343#ifdef VK_USE_PLATFORM_WIN32_KHR
27344 struct ImportMemoryWin32HandleInfoKHR
27345 {
27346 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
27347 HANDLE handle_ = 0,
27348 LPCWSTR name_ = 0 )
27349 : handleType( handleType_ )
27350 , handle( handle_ )
27351 , name( name_ )
27352 {
27353 }
27354
27355 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
27356 {
27357 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
27358 }
27359
27360 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
27361 {
27362 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
27363 return *this;
27364 }
27365 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
27366 {
27367 pNext = pNext_;
27368 return *this;
27369 }
27370
27371 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27372 {
27373 handleType = handleType_;
27374 return *this;
27375 }
27376
27377 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
27378 {
27379 handle = handle_;
27380 return *this;
27381 }
27382
27383 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
27384 {
27385 name = name_;
27386 return *this;
27387 }
27388
27389 operator const VkImportMemoryWin32HandleInfoKHR&() const
27390 {
27391 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
27392 }
27393
27394 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
27395 {
27396 return ( sType == rhs.sType )
27397 && ( pNext == rhs.pNext )
27398 && ( handleType == rhs.handleType )
27399 && ( handle == rhs.handle )
27400 && ( name == rhs.name );
27401 }
27402
27403 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
27404 {
27405 return !operator==( rhs );
27406 }
27407
27408 private:
27409 StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR;
27410
27411 public:
27412 const void* pNext = nullptr;
27413 ExternalMemoryHandleTypeFlagBits handleType;
27414 HANDLE handle;
27415 LPCWSTR name;
27416 };
27417 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
27418#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27419
27420#ifdef VK_USE_PLATFORM_WIN32_KHR
27421 struct MemoryGetWin32HandleInfoKHR
27422 {
27423 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(),
27424 ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
27425 : memory( memory_ )
27426 , handleType( handleType_ )
27427 {
27428 }
27429
27430 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
27431 {
27432 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
27433 }
27434
27435 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
27436 {
27437 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
27438 return *this;
27439 }
27440 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
27441 {
27442 pNext = pNext_;
27443 return *this;
27444 }
27445
27446 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
27447 {
27448 memory = memory_;
27449 return *this;
27450 }
27451
27452 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27453 {
27454 handleType = handleType_;
27455 return *this;
27456 }
27457
27458 operator const VkMemoryGetWin32HandleInfoKHR&() const
27459 {
27460 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
27461 }
27462
27463 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
27464 {
27465 return ( sType == rhs.sType )
27466 && ( pNext == rhs.pNext )
27467 && ( memory == rhs.memory )
27468 && ( handleType == rhs.handleType );
27469 }
27470
27471 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
27472 {
27473 return !operator==( rhs );
27474 }
27475
27476 private:
27477 StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR;
27478
27479 public:
27480 const void* pNext = nullptr;
27481 DeviceMemory memory;
27482 ExternalMemoryHandleTypeFlagBits handleType;
27483 };
27484 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
27485#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27486
27487 struct ImportMemoryFdInfoKHR
27488 {
27489 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
27490 int fd_ = 0 )
27491 : handleType( handleType_ )
27492 , fd( fd_ )
27493 {
27494 }
27495
27496 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
27497 {
27498 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
27499 }
27500
27501 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
27502 {
27503 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
27504 return *this;
27505 }
27506 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
27507 {
27508 pNext = pNext_;
27509 return *this;
27510 }
27511
27512 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27513 {
27514 handleType = handleType_;
27515 return *this;
27516 }
27517
27518 ImportMemoryFdInfoKHR& setFd( int fd_ )
27519 {
27520 fd = fd_;
27521 return *this;
27522 }
27523
27524 operator const VkImportMemoryFdInfoKHR&() const
27525 {
27526 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
27527 }
27528
27529 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
27530 {
27531 return ( sType == rhs.sType )
27532 && ( pNext == rhs.pNext )
27533 && ( handleType == rhs.handleType )
27534 && ( fd == rhs.fd );
27535 }
27536
27537 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
27538 {
27539 return !operator==( rhs );
27540 }
27541
27542 private:
27543 StructureType sType = StructureType::eImportMemoryFdInfoKHR;
27544
27545 public:
27546 const void* pNext = nullptr;
27547 ExternalMemoryHandleTypeFlagBits handleType;
27548 int fd;
27549 };
27550 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
27551
27552 struct MemoryGetFdInfoKHR
27553 {
27554 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(),
27555 ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd )
27556 : memory( memory_ )
27557 , handleType( handleType_ )
27558 {
27559 }
27560
27561 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
27562 {
27563 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
27564 }
27565
27566 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
27567 {
27568 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
27569 return *this;
27570 }
27571 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
27572 {
27573 pNext = pNext_;
27574 return *this;
27575 }
27576
27577 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
27578 {
27579 memory = memory_;
27580 return *this;
27581 }
27582
27583 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27584 {
27585 handleType = handleType_;
27586 return *this;
27587 }
27588
27589 operator const VkMemoryGetFdInfoKHR&() const
27590 {
27591 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
27592 }
27593
27594 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
27595 {
27596 return ( sType == rhs.sType )
27597 && ( pNext == rhs.pNext )
27598 && ( memory == rhs.memory )
27599 && ( handleType == rhs.handleType );
27600 }
27601
27602 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
27603 {
27604 return !operator==( rhs );
27605 }
27606
27607 private:
27608 StructureType sType = StructureType::eMemoryGetFdInfoKHR;
27609
27610 public:
27611 const void* pNext = nullptr;
27612 DeviceMemory memory;
27613 ExternalMemoryHandleTypeFlagBits handleType;
27614 };
27615 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
27616
27617 struct ImportMemoryHostPointerInfoEXT
27618 {
27619 ImportMemoryHostPointerInfoEXT( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
27620 void* pHostPointer_ = nullptr )
27621 : handleType( handleType_ )
27622 , pHostPointer( pHostPointer_ )
27623 {
27624 }
27625
27626 ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs )
27627 {
27628 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
27629 }
27630
27631 ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs )
27632 {
27633 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
27634 return *this;
27635 }
27636 ImportMemoryHostPointerInfoEXT& setPNext( const void* pNext_ )
27637 {
27638 pNext = pNext_;
27639 return *this;
27640 }
27641
27642 ImportMemoryHostPointerInfoEXT& setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ )
27643 {
27644 handleType = handleType_;
27645 return *this;
27646 }
27647
27648 ImportMemoryHostPointerInfoEXT& setPHostPointer( void* pHostPointer_ )
27649 {
27650 pHostPointer = pHostPointer_;
27651 return *this;
27652 }
27653
27654 operator const VkImportMemoryHostPointerInfoEXT&() const
27655 {
27656 return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(this);
27657 }
27658
27659 bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const
27660 {
27661 return ( sType == rhs.sType )
27662 && ( pNext == rhs.pNext )
27663 && ( handleType == rhs.handleType )
27664 && ( pHostPointer == rhs.pHostPointer );
27665 }
27666
27667 bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const
27668 {
27669 return !operator==( rhs );
27670 }
27671
27672 private:
27673 StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
27674
27675 public:
27676 const void* pNext = nullptr;
27677 ExternalMemoryHandleTypeFlagBits handleType;
27678 void* pHostPointer;
27679 };
27680 static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" );
27681
27682 enum class ExternalMemoryFeatureFlagBits
27683 {
27684 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
27685 eDedicatedOnlyKHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
27686 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
27687 eExportableKHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
27688 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
27689 eImportableKHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
27690 };
27691
27692 using ExternalMemoryFeatureFlags = Flags<ExternalMemoryFeatureFlagBits, VkExternalMemoryFeatureFlags>;
27693
27694 VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator|( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 )
27695 {
27696 return ExternalMemoryFeatureFlags( bit0 ) | bit1;
27697 }
27698
27699 VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator~( ExternalMemoryFeatureFlagBits bits )
27700 {
27701 return ~( ExternalMemoryFeatureFlags( bits ) );
27702 }
27703
27704 template <> struct FlagTraits<ExternalMemoryFeatureFlagBits>
27705 {
27706 enum
27707 {
27708 allFlags = VkFlags(ExternalMemoryFeatureFlagBits::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBits::eExportable) | VkFlags(ExternalMemoryFeatureFlagBits::eImportable)
27709 };
27710 };
27711
27712 using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags;
27713
27714 struct ExternalMemoryProperties
27715 {
27716 operator const VkExternalMemoryProperties&() const
27717 {
27718 return *reinterpret_cast<const VkExternalMemoryProperties*>(this);
27719 }
27720
27721 bool operator==( ExternalMemoryProperties const& rhs ) const
27722 {
27723 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
27724 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
27725 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
27726 }
27727
27728 bool operator!=( ExternalMemoryProperties const& rhs ) const
27729 {
27730 return !operator==( rhs );
27731 }
27732
27733 ExternalMemoryFeatureFlags externalMemoryFeatures;
27734 ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
27735 ExternalMemoryHandleTypeFlags compatibleHandleTypes;
27736 };
27737 static_assert( sizeof( ExternalMemoryProperties ) == sizeof( VkExternalMemoryProperties ), "struct and wrapper have different size!" );
27738
27739 using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
27740
27741 struct ExternalImageFormatProperties
27742 {
27743 operator const VkExternalImageFormatProperties&() const
27744 {
27745 return *reinterpret_cast<const VkExternalImageFormatProperties*>(this);
27746 }
27747
27748 bool operator==( ExternalImageFormatProperties const& rhs ) const
27749 {
27750 return ( sType == rhs.sType )
27751 && ( pNext == rhs.pNext )
27752 && ( externalMemoryProperties == rhs.externalMemoryProperties );
27753 }
27754
27755 bool operator!=( ExternalImageFormatProperties const& rhs ) const
27756 {
27757 return !operator==( rhs );
27758 }
27759
27760 private:
27761 StructureType sType = StructureType::eExternalImageFormatProperties;
27762
27763 public:
27764 void* pNext = nullptr;
27765 ExternalMemoryProperties externalMemoryProperties;
27766 };
27767 static_assert( sizeof( ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), "struct and wrapper have different size!" );
27768
27769 using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
27770
27771 struct ExternalBufferProperties
27772 {
27773 operator const VkExternalBufferProperties&() const
27774 {
27775 return *reinterpret_cast<const VkExternalBufferProperties*>(this);
27776 }
27777
27778 bool operator==( ExternalBufferProperties const& rhs ) const
27779 {
27780 return ( sType == rhs.sType )
27781 && ( pNext == rhs.pNext )
27782 && ( externalMemoryProperties == rhs.externalMemoryProperties );
27783 }
27784
27785 bool operator!=( ExternalBufferProperties const& rhs ) const
27786 {
27787 return !operator==( rhs );
27788 }
27789
27790 private:
27791 StructureType sType = StructureType::eExternalBufferProperties;
27792
27793 public:
27794 void* pNext = nullptr;
27795 ExternalMemoryProperties externalMemoryProperties;
27796 };
27797 static_assert( sizeof( ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), "struct and wrapper have different size!" );
27798
27799 using ExternalBufferPropertiesKHR = ExternalBufferProperties;
27800
27801 enum class ExternalSemaphoreHandleTypeFlagBits
27802 {
27803 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
27804 eOpaqueFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
27805 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
27806 eOpaqueWin32KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
27807 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
27808 eOpaqueWin32KmtKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
27809 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
27810 eD3D12FenceKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
27811 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
27812 eSyncFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
27813 };
27814
27815 using ExternalSemaphoreHandleTypeFlags = Flags<ExternalSemaphoreHandleTypeFlagBits, VkExternalSemaphoreHandleTypeFlags>;
27816
27817 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator|( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 )
27818 {
27819 return ExternalSemaphoreHandleTypeFlags( bit0 ) | bit1;
27820 }
27821
27822 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator~( ExternalSemaphoreHandleTypeFlagBits bits )
27823 {
27824 return ~( ExternalSemaphoreHandleTypeFlags( bits ) );
27825 }
27826
27827 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBits>
27828 {
27829 enum
27830 {
27831 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eSyncFd)
27832 };
27833 };
27834
27835 using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags;
27836
27837 struct PhysicalDeviceExternalSemaphoreInfo
27838 {
27839 PhysicalDeviceExternalSemaphoreInfo( ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
27840 : handleType( handleType_ )
27841 {
27842 }
27843
27844 PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
27845 {
27846 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
27847 }
27848
27849 PhysicalDeviceExternalSemaphoreInfo& operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
27850 {
27851 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
27852 return *this;
27853 }
27854 PhysicalDeviceExternalSemaphoreInfo& setPNext( const void* pNext_ )
27855 {
27856 pNext = pNext_;
27857 return *this;
27858 }
27859
27860 PhysicalDeviceExternalSemaphoreInfo& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
27861 {
27862 handleType = handleType_;
27863 return *this;
27864 }
27865
27866 operator const VkPhysicalDeviceExternalSemaphoreInfo&() const
27867 {
27868 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>(this);
27869 }
27870
27871 bool operator==( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const
27872 {
27873 return ( sType == rhs.sType )
27874 && ( pNext == rhs.pNext )
27875 && ( handleType == rhs.handleType );
27876 }
27877
27878 bool operator!=( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const
27879 {
27880 return !operator==( rhs );
27881 }
27882
27883 private:
27884 StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
27885
27886 public:
27887 const void* pNext = nullptr;
27888 ExternalSemaphoreHandleTypeFlagBits handleType;
27889 };
27890 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), "struct and wrapper have different size!" );
27891
27892 using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
27893
27894 struct ExportSemaphoreCreateInfo
27895 {
27896 ExportSemaphoreCreateInfo( ExternalSemaphoreHandleTypeFlags handleTypes_ = ExternalSemaphoreHandleTypeFlags() )
27897 : handleTypes( handleTypes_ )
27898 {
27899 }
27900
27901 ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs )
27902 {
27903 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
27904 }
27905
27906 ExportSemaphoreCreateInfo& operator=( VkExportSemaphoreCreateInfo const & rhs )
27907 {
27908 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
27909 return *this;
27910 }
27911 ExportSemaphoreCreateInfo& setPNext( const void* pNext_ )
27912 {
27913 pNext = pNext_;
27914 return *this;
27915 }
27916
27917 ExportSemaphoreCreateInfo& setHandleTypes( ExternalSemaphoreHandleTypeFlags handleTypes_ )
27918 {
27919 handleTypes = handleTypes_;
27920 return *this;
27921 }
27922
27923 operator const VkExportSemaphoreCreateInfo&() const
27924 {
27925 return *reinterpret_cast<const VkExportSemaphoreCreateInfo*>(this);
27926 }
27927
27928 bool operator==( ExportSemaphoreCreateInfo const& rhs ) const
27929 {
27930 return ( sType == rhs.sType )
27931 && ( pNext == rhs.pNext )
27932 && ( handleTypes == rhs.handleTypes );
27933 }
27934
27935 bool operator!=( ExportSemaphoreCreateInfo const& rhs ) const
27936 {
27937 return !operator==( rhs );
27938 }
27939
27940 private:
27941 StructureType sType = StructureType::eExportSemaphoreCreateInfo;
27942
27943 public:
27944 const void* pNext = nullptr;
27945 ExternalSemaphoreHandleTypeFlags handleTypes;
27946 };
27947 static_assert( sizeof( ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), "struct and wrapper have different size!" );
27948
27949 using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
27950
27951#ifdef VK_USE_PLATFORM_WIN32_KHR
27952 struct SemaphoreGetWin32HandleInfoKHR
27953 {
27954 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(),
27955 ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
27956 : semaphore( semaphore_ )
27957 , handleType( handleType_ )
27958 {
27959 }
27960
27961 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
27962 {
27963 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
27964 }
27965
27966 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
27967 {
27968 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
27969 return *this;
27970 }
27971 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
27972 {
27973 pNext = pNext_;
27974 return *this;
27975 }
27976
27977 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
27978 {
27979 semaphore = semaphore_;
27980 return *this;
27981 }
27982
27983 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
27984 {
27985 handleType = handleType_;
27986 return *this;
27987 }
27988
27989 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
27990 {
27991 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
27992 }
27993
27994 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
27995 {
27996 return ( sType == rhs.sType )
27997 && ( pNext == rhs.pNext )
27998 && ( semaphore == rhs.semaphore )
27999 && ( handleType == rhs.handleType );
28000 }
28001
28002 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
28003 {
28004 return !operator==( rhs );
28005 }
28006
28007 private:
28008 StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
28009
28010 public:
28011 const void* pNext = nullptr;
28012 Semaphore semaphore;
28013 ExternalSemaphoreHandleTypeFlagBits handleType;
28014 };
28015 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
28016#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28017
28018 struct SemaphoreGetFdInfoKHR
28019 {
28020 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(),
28021 ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd )
28022 : semaphore( semaphore_ )
28023 , handleType( handleType_ )
28024 {
28025 }
28026
28027 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
28028 {
28029 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
28030 }
28031
28032 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
28033 {
28034 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
28035 return *this;
28036 }
28037 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
28038 {
28039 pNext = pNext_;
28040 return *this;
28041 }
28042
28043 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
28044 {
28045 semaphore = semaphore_;
28046 return *this;
28047 }
28048
28049 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
28050 {
28051 handleType = handleType_;
28052 return *this;
28053 }
28054
28055 operator const VkSemaphoreGetFdInfoKHR&() const
28056 {
28057 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
28058 }
28059
28060 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
28061 {
28062 return ( sType == rhs.sType )
28063 && ( pNext == rhs.pNext )
28064 && ( semaphore == rhs.semaphore )
28065 && ( handleType == rhs.handleType );
28066 }
28067
28068 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
28069 {
28070 return !operator==( rhs );
28071 }
28072
28073 private:
28074 StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
28075
28076 public:
28077 const void* pNext = nullptr;
28078 Semaphore semaphore;
28079 ExternalSemaphoreHandleTypeFlagBits handleType;
28080 };
28081 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
28082
28083 enum class ExternalSemaphoreFeatureFlagBits
28084 {
28085 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
28086 eExportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
28087 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
28088 eImportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
28089 };
28090
28091 using ExternalSemaphoreFeatureFlags = Flags<ExternalSemaphoreFeatureFlagBits, VkExternalSemaphoreFeatureFlags>;
28092
28093 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator|( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 )
28094 {
28095 return ExternalSemaphoreFeatureFlags( bit0 ) | bit1;
28096 }
28097
28098 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator~( ExternalSemaphoreFeatureFlagBits bits )
28099 {
28100 return ~( ExternalSemaphoreFeatureFlags( bits ) );
28101 }
28102
28103 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBits>
28104 {
28105 enum
28106 {
28107 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBits::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBits::eImportable)
28108 };
28109 };
28110
28111 using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags;
28112
28113 struct ExternalSemaphoreProperties
28114 {
28115 operator const VkExternalSemaphoreProperties&() const
28116 {
28117 return *reinterpret_cast<const VkExternalSemaphoreProperties*>(this);
28118 }
28119
28120 bool operator==( ExternalSemaphoreProperties const& rhs ) const
28121 {
28122 return ( sType == rhs.sType )
28123 && ( pNext == rhs.pNext )
28124 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
28125 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
28126 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
28127 }
28128
28129 bool operator!=( ExternalSemaphoreProperties const& rhs ) const
28130 {
28131 return !operator==( rhs );
28132 }
28133
28134 private:
28135 StructureType sType = StructureType::eExternalSemaphoreProperties;
28136
28137 public:
28138 void* pNext = nullptr;
28139 ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
28140 ExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
28141 ExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
28142 };
28143 static_assert( sizeof( ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), "struct and wrapper have different size!" );
28144
28145 using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
28146
28147 enum class SemaphoreImportFlagBits
28148 {
28149 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
28150 eTemporaryKHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
28151 };
28152
28153 using SemaphoreImportFlags = Flags<SemaphoreImportFlagBits, VkSemaphoreImportFlags>;
28154
28155 VULKAN_HPP_INLINE SemaphoreImportFlags operator|( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 )
28156 {
28157 return SemaphoreImportFlags( bit0 ) | bit1;
28158 }
28159
28160 VULKAN_HPP_INLINE SemaphoreImportFlags operator~( SemaphoreImportFlagBits bits )
28161 {
28162 return ~( SemaphoreImportFlags( bits ) );
28163 }
28164
28165 template <> struct FlagTraits<SemaphoreImportFlagBits>
28166 {
28167 enum
28168 {
28169 allFlags = VkFlags(SemaphoreImportFlagBits::eTemporary)
28170 };
28171 };
28172
28173 using SemaphoreImportFlagsKHR = SemaphoreImportFlags;
28174
28175#ifdef VK_USE_PLATFORM_WIN32_KHR
28176 struct ImportSemaphoreWin32HandleInfoKHR
28177 {
28178 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(),
28179 SemaphoreImportFlags flags_ = SemaphoreImportFlags(),
28180 ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
28181 HANDLE handle_ = 0,
28182 LPCWSTR name_ = 0 )
28183 : semaphore( semaphore_ )
28184 , flags( flags_ )
28185 , handleType( handleType_ )
28186 , handle( handle_ )
28187 , name( name_ )
28188 {
28189 }
28190
28191 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
28192 {
28193 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
28194 }
28195
28196 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
28197 {
28198 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
28199 return *this;
28200 }
28201 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
28202 {
28203 pNext = pNext_;
28204 return *this;
28205 }
28206
28207 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
28208 {
28209 semaphore = semaphore_;
28210 return *this;
28211 }
28212
28213 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlags flags_ )
28214 {
28215 flags = flags_;
28216 return *this;
28217 }
28218
28219 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
28220 {
28221 handleType = handleType_;
28222 return *this;
28223 }
28224
28225 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
28226 {
28227 handle = handle_;
28228 return *this;
28229 }
28230
28231 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
28232 {
28233 name = name_;
28234 return *this;
28235 }
28236
28237 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
28238 {
28239 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
28240 }
28241
28242 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
28243 {
28244 return ( sType == rhs.sType )
28245 && ( pNext == rhs.pNext )
28246 && ( semaphore == rhs.semaphore )
28247 && ( flags == rhs.flags )
28248 && ( handleType == rhs.handleType )
28249 && ( handle == rhs.handle )
28250 && ( name == rhs.name );
28251 }
28252
28253 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
28254 {
28255 return !operator==( rhs );
28256 }
28257
28258 private:
28259 StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
28260
28261 public:
28262 const void* pNext = nullptr;
28263 Semaphore semaphore;
28264 SemaphoreImportFlags flags;
28265 ExternalSemaphoreHandleTypeFlagBits handleType;
28266 HANDLE handle;
28267 LPCWSTR name;
28268 };
28269 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
28270#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28271
28272 struct ImportSemaphoreFdInfoKHR
28273 {
28274 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(),
28275 SemaphoreImportFlags flags_ = SemaphoreImportFlags(),
28276 ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
28277 int fd_ = 0 )
28278 : semaphore( semaphore_ )
28279 , flags( flags_ )
28280 , handleType( handleType_ )
28281 , fd( fd_ )
28282 {
28283 }
28284
28285 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
28286 {
28287 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
28288 }
28289
28290 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
28291 {
28292 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
28293 return *this;
28294 }
28295 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
28296 {
28297 pNext = pNext_;
28298 return *this;
28299 }
28300
28301 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
28302 {
28303 semaphore = semaphore_;
28304 return *this;
28305 }
28306
28307 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlags flags_ )
28308 {
28309 flags = flags_;
28310 return *this;
28311 }
28312
28313 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ )
28314 {
28315 handleType = handleType_;
28316 return *this;
28317 }
28318
28319 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
28320 {
28321 fd = fd_;
28322 return *this;
28323 }
28324
28325 operator const VkImportSemaphoreFdInfoKHR&() const
28326 {
28327 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
28328 }
28329
28330 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
28331 {
28332 return ( sType == rhs.sType )
28333 && ( pNext == rhs.pNext )
28334 && ( semaphore == rhs.semaphore )
28335 && ( flags == rhs.flags )
28336 && ( handleType == rhs.handleType )
28337 && ( fd == rhs.fd );
28338 }
28339
28340 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
28341 {
28342 return !operator==( rhs );
28343 }
28344
28345 private:
28346 StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
28347
28348 public:
28349 const void* pNext = nullptr;
28350 Semaphore semaphore;
28351 SemaphoreImportFlags flags;
28352 ExternalSemaphoreHandleTypeFlagBits handleType;
28353 int fd;
28354 };
28355 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
28356
28357 enum class ExternalFenceHandleTypeFlagBits
28358 {
28359 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
28360 eOpaqueFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
28361 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
28362 eOpaqueWin32KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
28363 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
28364 eOpaqueWin32KmtKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
28365 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
28366 eSyncFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
28367 };
28368
28369 using ExternalFenceHandleTypeFlags = Flags<ExternalFenceHandleTypeFlagBits, VkExternalFenceHandleTypeFlags>;
28370
28371 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator|( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 )
28372 {
28373 return ExternalFenceHandleTypeFlags( bit0 ) | bit1;
28374 }
28375
28376 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator~( ExternalFenceHandleTypeFlagBits bits )
28377 {
28378 return ~( ExternalFenceHandleTypeFlags( bits ) );
28379 }
28380
28381 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBits>
28382 {
28383 enum
28384 {
28385 allFlags = VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBits::eSyncFd)
28386 };
28387 };
28388
28389 using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags;
28390
28391 struct PhysicalDeviceExternalFenceInfo
28392 {
28393 PhysicalDeviceExternalFenceInfo( ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
28394 : handleType( handleType_ )
28395 {
28396 }
28397
28398 PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs )
28399 {
28400 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
28401 }
28402
28403 PhysicalDeviceExternalFenceInfo& operator=( VkPhysicalDeviceExternalFenceInfo const & rhs )
28404 {
28405 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
28406 return *this;
28407 }
28408 PhysicalDeviceExternalFenceInfo& setPNext( const void* pNext_ )
28409 {
28410 pNext = pNext_;
28411 return *this;
28412 }
28413
28414 PhysicalDeviceExternalFenceInfo& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
28415 {
28416 handleType = handleType_;
28417 return *this;
28418 }
28419
28420 operator const VkPhysicalDeviceExternalFenceInfo&() const
28421 {
28422 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>(this);
28423 }
28424
28425 bool operator==( PhysicalDeviceExternalFenceInfo const& rhs ) const
28426 {
28427 return ( sType == rhs.sType )
28428 && ( pNext == rhs.pNext )
28429 && ( handleType == rhs.handleType );
28430 }
28431
28432 bool operator!=( PhysicalDeviceExternalFenceInfo const& rhs ) const
28433 {
28434 return !operator==( rhs );
28435 }
28436
28437 private:
28438 StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo;
28439
28440 public:
28441 const void* pNext = nullptr;
28442 ExternalFenceHandleTypeFlagBits handleType;
28443 };
28444 static_assert( sizeof( PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), "struct and wrapper have different size!" );
28445
28446 using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
28447
28448 struct ExportFenceCreateInfo
28449 {
28450 ExportFenceCreateInfo( ExternalFenceHandleTypeFlags handleTypes_ = ExternalFenceHandleTypeFlags() )
28451 : handleTypes( handleTypes_ )
28452 {
28453 }
28454
28455 ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs )
28456 {
28457 memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
28458 }
28459
28460 ExportFenceCreateInfo& operator=( VkExportFenceCreateInfo const & rhs )
28461 {
28462 memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
28463 return *this;
28464 }
28465 ExportFenceCreateInfo& setPNext( const void* pNext_ )
28466 {
28467 pNext = pNext_;
28468 return *this;
28469 }
28470
28471 ExportFenceCreateInfo& setHandleTypes( ExternalFenceHandleTypeFlags handleTypes_ )
28472 {
28473 handleTypes = handleTypes_;
28474 return *this;
28475 }
28476
28477 operator const VkExportFenceCreateInfo&() const
28478 {
28479 return *reinterpret_cast<const VkExportFenceCreateInfo*>(this);
28480 }
28481
28482 bool operator==( ExportFenceCreateInfo const& rhs ) const
28483 {
28484 return ( sType == rhs.sType )
28485 && ( pNext == rhs.pNext )
28486 && ( handleTypes == rhs.handleTypes );
28487 }
28488
28489 bool operator!=( ExportFenceCreateInfo const& rhs ) const
28490 {
28491 return !operator==( rhs );
28492 }
28493
28494 private:
28495 StructureType sType = StructureType::eExportFenceCreateInfo;
28496
28497 public:
28498 const void* pNext = nullptr;
28499 ExternalFenceHandleTypeFlags handleTypes;
28500 };
28501 static_assert( sizeof( ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), "struct and wrapper have different size!" );
28502
28503 using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
28504
28505#ifdef VK_USE_PLATFORM_WIN32_KHR
28506 struct FenceGetWin32HandleInfoKHR
28507 {
28508 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(),
28509 ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
28510 : fence( fence_ )
28511 , handleType( handleType_ )
28512 {
28513 }
28514
28515 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
28516 {
28517 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
28518 }
28519
28520 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
28521 {
28522 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
28523 return *this;
28524 }
28525 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
28526 {
28527 pNext = pNext_;
28528 return *this;
28529 }
28530
28531 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
28532 {
28533 fence = fence_;
28534 return *this;
28535 }
28536
28537 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
28538 {
28539 handleType = handleType_;
28540 return *this;
28541 }
28542
28543 operator const VkFenceGetWin32HandleInfoKHR&() const
28544 {
28545 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
28546 }
28547
28548 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
28549 {
28550 return ( sType == rhs.sType )
28551 && ( pNext == rhs.pNext )
28552 && ( fence == rhs.fence )
28553 && ( handleType == rhs.handleType );
28554 }
28555
28556 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
28557 {
28558 return !operator==( rhs );
28559 }
28560
28561 private:
28562 StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR;
28563
28564 public:
28565 const void* pNext = nullptr;
28566 Fence fence;
28567 ExternalFenceHandleTypeFlagBits handleType;
28568 };
28569 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
28570#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28571
28572 struct FenceGetFdInfoKHR
28573 {
28574 FenceGetFdInfoKHR( Fence fence_ = Fence(),
28575 ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd )
28576 : fence( fence_ )
28577 , handleType( handleType_ )
28578 {
28579 }
28580
28581 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
28582 {
28583 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
28584 }
28585
28586 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
28587 {
28588 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
28589 return *this;
28590 }
28591 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
28592 {
28593 pNext = pNext_;
28594 return *this;
28595 }
28596
28597 FenceGetFdInfoKHR& setFence( Fence fence_ )
28598 {
28599 fence = fence_;
28600 return *this;
28601 }
28602
28603 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
28604 {
28605 handleType = handleType_;
28606 return *this;
28607 }
28608
28609 operator const VkFenceGetFdInfoKHR&() const
28610 {
28611 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
28612 }
28613
28614 bool operator==( FenceGetFdInfoKHR const& rhs ) const
28615 {
28616 return ( sType == rhs.sType )
28617 && ( pNext == rhs.pNext )
28618 && ( fence == rhs.fence )
28619 && ( handleType == rhs.handleType );
28620 }
28621
28622 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
28623 {
28624 return !operator==( rhs );
28625 }
28626
28627 private:
28628 StructureType sType = StructureType::eFenceGetFdInfoKHR;
28629
28630 public:
28631 const void* pNext = nullptr;
28632 Fence fence;
28633 ExternalFenceHandleTypeFlagBits handleType;
28634 };
28635 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
28636
28637 enum class ExternalFenceFeatureFlagBits
28638 {
28639 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
28640 eExportableKHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
28641 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
28642 eImportableKHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
28643 };
28644
28645 using ExternalFenceFeatureFlags = Flags<ExternalFenceFeatureFlagBits, VkExternalFenceFeatureFlags>;
28646
28647 VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator|( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 )
28648 {
28649 return ExternalFenceFeatureFlags( bit0 ) | bit1;
28650 }
28651
28652 VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator~( ExternalFenceFeatureFlagBits bits )
28653 {
28654 return ~( ExternalFenceFeatureFlags( bits ) );
28655 }
28656
28657 template <> struct FlagTraits<ExternalFenceFeatureFlagBits>
28658 {
28659 enum
28660 {
28661 allFlags = VkFlags(ExternalFenceFeatureFlagBits::eExportable) | VkFlags(ExternalFenceFeatureFlagBits::eImportable)
28662 };
28663 };
28664
28665 using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags;
28666
28667 struct ExternalFenceProperties
28668 {
28669 operator const VkExternalFenceProperties&() const
28670 {
28671 return *reinterpret_cast<const VkExternalFenceProperties*>(this);
28672 }
28673
28674 bool operator==( ExternalFenceProperties const& rhs ) const
28675 {
28676 return ( sType == rhs.sType )
28677 && ( pNext == rhs.pNext )
28678 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
28679 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
28680 && ( externalFenceFeatures == rhs.externalFenceFeatures );
28681 }
28682
28683 bool operator!=( ExternalFenceProperties const& rhs ) const
28684 {
28685 return !operator==( rhs );
28686 }
28687
28688 private:
28689 StructureType sType = StructureType::eExternalFenceProperties;
28690
28691 public:
28692 void* pNext = nullptr;
28693 ExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
28694 ExternalFenceHandleTypeFlags compatibleHandleTypes;
28695 ExternalFenceFeatureFlags externalFenceFeatures;
28696 };
28697 static_assert( sizeof( ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), "struct and wrapper have different size!" );
28698
28699 using ExternalFencePropertiesKHR = ExternalFenceProperties;
28700
28701 enum class FenceImportFlagBits
28702 {
28703 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT,
28704 eTemporaryKHR = VK_FENCE_IMPORT_TEMPORARY_BIT
28705 };
28706
28707 using FenceImportFlags = Flags<FenceImportFlagBits, VkFenceImportFlags>;
28708
28709 VULKAN_HPP_INLINE FenceImportFlags operator|( FenceImportFlagBits bit0, FenceImportFlagBits bit1 )
28710 {
28711 return FenceImportFlags( bit0 ) | bit1;
28712 }
28713
28714 VULKAN_HPP_INLINE FenceImportFlags operator~( FenceImportFlagBits bits )
28715 {
28716 return ~( FenceImportFlags( bits ) );
28717 }
28718
28719 template <> struct FlagTraits<FenceImportFlagBits>
28720 {
28721 enum
28722 {
28723 allFlags = VkFlags(FenceImportFlagBits::eTemporary)
28724 };
28725 };
28726
28727 using FenceImportFlagsKHR = FenceImportFlags;
28728
28729#ifdef VK_USE_PLATFORM_WIN32_KHR
28730 struct ImportFenceWin32HandleInfoKHR
28731 {
28732 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(),
28733 FenceImportFlags flags_ = FenceImportFlags(),
28734 ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd,
28735 HANDLE handle_ = 0,
28736 LPCWSTR name_ = 0 )
28737 : fence( fence_ )
28738 , flags( flags_ )
28739 , handleType( handleType_ )
28740 , handle( handle_ )
28741 , name( name_ )
28742 {
28743 }
28744
28745 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
28746 {
28747 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
28748 }
28749
28750 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
28751 {
28752 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
28753 return *this;
28754 }
28755 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
28756 {
28757 pNext = pNext_;
28758 return *this;
28759 }
28760
28761 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
28762 {
28763 fence = fence_;
28764 return *this;
28765 }
28766
28767 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlags flags_ )
28768 {
28769 flags = flags_;
28770 return *this;
28771 }
28772
28773 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
28774 {
28775 handleType = handleType_;
28776 return *this;
28777 }
28778
28779 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
28780 {
28781 handle = handle_;
28782 return *this;
28783 }
28784
28785 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
28786 {
28787 name = name_;
28788 return *this;
28789 }
28790
28791 operator const VkImportFenceWin32HandleInfoKHR&() const
28792 {
28793 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
28794 }
28795
28796 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
28797 {
28798 return ( sType == rhs.sType )
28799 && ( pNext == rhs.pNext )
28800 && ( fence == rhs.fence )
28801 && ( flags == rhs.flags )
28802 && ( handleType == rhs.handleType )
28803 && ( handle == rhs.handle )
28804 && ( name == rhs.name );
28805 }
28806
28807 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
28808 {
28809 return !operator==( rhs );
28810 }
28811
28812 private:
28813 StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR;
28814
28815 public:
28816 const void* pNext = nullptr;
28817 Fence fence;
28818 FenceImportFlags flags;
28819 ExternalFenceHandleTypeFlagBits handleType;
28820 HANDLE handle;
28821 LPCWSTR name;
28822 };
28823 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
28824#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28825
28826 struct ImportFenceFdInfoKHR
28827 {
28828 ImportFenceFdInfoKHR( Fence fence_ = Fence(),
28829 FenceImportFlags flags_ = FenceImportFlags(),
28830 ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd,
28831 int fd_ = 0 )
28832 : fence( fence_ )
28833 , flags( flags_ )
28834 , handleType( handleType_ )
28835 , fd( fd_ )
28836 {
28837 }
28838
28839 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
28840 {
28841 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
28842 }
28843
28844 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
28845 {
28846 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
28847 return *this;
28848 }
28849 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
28850 {
28851 pNext = pNext_;
28852 return *this;
28853 }
28854
28855 ImportFenceFdInfoKHR& setFence( Fence fence_ )
28856 {
28857 fence = fence_;
28858 return *this;
28859 }
28860
28861 ImportFenceFdInfoKHR& setFlags( FenceImportFlags flags_ )
28862 {
28863 flags = flags_;
28864 return *this;
28865 }
28866
28867 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBits handleType_ )
28868 {
28869 handleType = handleType_;
28870 return *this;
28871 }
28872
28873 ImportFenceFdInfoKHR& setFd( int fd_ )
28874 {
28875 fd = fd_;
28876 return *this;
28877 }
28878
28879 operator const VkImportFenceFdInfoKHR&() const
28880 {
28881 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
28882 }
28883
28884 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
28885 {
28886 return ( sType == rhs.sType )
28887 && ( pNext == rhs.pNext )
28888 && ( fence == rhs.fence )
28889 && ( flags == rhs.flags )
28890 && ( handleType == rhs.handleType )
28891 && ( fd == rhs.fd );
28892 }
28893
28894 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
28895 {
28896 return !operator==( rhs );
28897 }
28898
28899 private:
28900 StructureType sType = StructureType::eImportFenceFdInfoKHR;
28901
28902 public:
28903 const void* pNext = nullptr;
28904 Fence fence;
28905 FenceImportFlags flags;
28906 ExternalFenceHandleTypeFlagBits handleType;
28907 int fd;
28908 };
28909 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
28910
28911 enum class SurfaceCounterFlagBitsEXT
28912 {
28913 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
28914 };
28915
28916 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
28917
28918 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
28919 {
28920 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
28921 }
28922
28923 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
28924 {
28925 return ~( SurfaceCounterFlagsEXT( bits ) );
28926 }
28927
28928 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
28929 {
28930 enum
28931 {
28932 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
28933 };
28934 };
28935
28936 struct SurfaceCapabilities2EXT
28937 {
28938 operator const VkSurfaceCapabilities2EXT&() const
28939 {
28940 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
28941 }
28942
28943 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
28944 {
28945 return ( sType == rhs.sType )
28946 && ( pNext == rhs.pNext )
28947 && ( minImageCount == rhs.minImageCount )
28948 && ( maxImageCount == rhs.maxImageCount )
28949 && ( currentExtent == rhs.currentExtent )
28950 && ( minImageExtent == rhs.minImageExtent )
28951 && ( maxImageExtent == rhs.maxImageExtent )
28952 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
28953 && ( supportedTransforms == rhs.supportedTransforms )
28954 && ( currentTransform == rhs.currentTransform )
28955 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
28956 && ( supportedUsageFlags == rhs.supportedUsageFlags )
28957 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
28958 }
28959
28960 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
28961 {
28962 return !operator==( rhs );
28963 }
28964
28965 private:
28966 StructureType sType = StructureType::eSurfaceCapabilities2EXT;
28967
28968 public:
28969 void* pNext = nullptr;
28970 uint32_t minImageCount;
28971 uint32_t maxImageCount;
28972 Extent2D currentExtent;
28973 Extent2D minImageExtent;
28974 Extent2D maxImageExtent;
28975 uint32_t maxImageArrayLayers;
28976 SurfaceTransformFlagsKHR supportedTransforms;
28977 SurfaceTransformFlagBitsKHR currentTransform;
28978 CompositeAlphaFlagsKHR supportedCompositeAlpha;
28979 ImageUsageFlags supportedUsageFlags;
28980 SurfaceCounterFlagsEXT supportedSurfaceCounters;
28981 };
28982 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
28983
28984 struct SwapchainCounterCreateInfoEXT
28985 {
28986 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
28987 : surfaceCounters( surfaceCounters_ )
28988 {
28989 }
28990
28991 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
28992 {
28993 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
28994 }
28995
28996 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
28997 {
28998 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
28999 return *this;
29000 }
29001 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
29002 {
29003 pNext = pNext_;
29004 return *this;
29005 }
29006
29007 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
29008 {
29009 surfaceCounters = surfaceCounters_;
29010 return *this;
29011 }
29012
29013 operator const VkSwapchainCounterCreateInfoEXT&() const
29014 {
29015 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
29016 }
29017
29018 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
29019 {
29020 return ( sType == rhs.sType )
29021 && ( pNext == rhs.pNext )
29022 && ( surfaceCounters == rhs.surfaceCounters );
29023 }
29024
29025 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
29026 {
29027 return !operator==( rhs );
29028 }
29029
29030 private:
29031 StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
29032
29033 public:
29034 const void* pNext = nullptr;
29035 SurfaceCounterFlagsEXT surfaceCounters;
29036 };
29037 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
29038
29039 enum class DisplayPowerStateEXT
29040 {
29041 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
29042 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
29043 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
29044 };
29045
29046 struct DisplayPowerInfoEXT
29047 {
29048 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
29049 : powerState( powerState_ )
29050 {
29051 }
29052
29053 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
29054 {
29055 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
29056 }
29057
29058 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
29059 {
29060 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
29061 return *this;
29062 }
29063 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
29064 {
29065 pNext = pNext_;
29066 return *this;
29067 }
29068
29069 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
29070 {
29071 powerState = powerState_;
29072 return *this;
29073 }
29074
29075 operator const VkDisplayPowerInfoEXT&() const
29076 {
29077 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
29078 }
29079
29080 bool operator==( DisplayPowerInfoEXT const& rhs ) const
29081 {
29082 return ( sType == rhs.sType )
29083 && ( pNext == rhs.pNext )
29084 && ( powerState == rhs.powerState );
29085 }
29086
29087 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
29088 {
29089 return !operator==( rhs );
29090 }
29091
29092 private:
29093 StructureType sType = StructureType::eDisplayPowerInfoEXT;
29094
29095 public:
29096 const void* pNext = nullptr;
29097 DisplayPowerStateEXT powerState;
29098 };
29099 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
29100
29101 enum class DeviceEventTypeEXT
29102 {
29103 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
29104 };
29105
29106 struct DeviceEventInfoEXT
29107 {
29108 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
29109 : deviceEvent( deviceEvent_ )
29110 {
29111 }
29112
29113 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
29114 {
29115 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
29116 }
29117
29118 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
29119 {
29120 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
29121 return *this;
29122 }
29123 DeviceEventInfoEXT& setPNext( const void* pNext_ )
29124 {
29125 pNext = pNext_;
29126 return *this;
29127 }
29128
29129 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
29130 {
29131 deviceEvent = deviceEvent_;
29132 return *this;
29133 }
29134
29135 operator const VkDeviceEventInfoEXT&() const
29136 {
29137 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
29138 }
29139
29140 bool operator==( DeviceEventInfoEXT const& rhs ) const
29141 {
29142 return ( sType == rhs.sType )
29143 && ( pNext == rhs.pNext )
29144 && ( deviceEvent == rhs.deviceEvent );
29145 }
29146
29147 bool operator!=( DeviceEventInfoEXT const& rhs ) const
29148 {
29149 return !operator==( rhs );
29150 }
29151
29152 private:
29153 StructureType sType = StructureType::eDeviceEventInfoEXT;
29154
29155 public:
29156 const void* pNext = nullptr;
29157 DeviceEventTypeEXT deviceEvent;
29158 };
29159 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
29160
29161 enum class DisplayEventTypeEXT
29162 {
29163 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
29164 };
29165
29166 struct DisplayEventInfoEXT
29167 {
29168 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
29169 : displayEvent( displayEvent_ )
29170 {
29171 }
29172
29173 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
29174 {
29175 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
29176 }
29177
29178 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
29179 {
29180 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
29181 return *this;
29182 }
29183 DisplayEventInfoEXT& setPNext( const void* pNext_ )
29184 {
29185 pNext = pNext_;
29186 return *this;
29187 }
29188
29189 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
29190 {
29191 displayEvent = displayEvent_;
29192 return *this;
29193 }
29194
29195 operator const VkDisplayEventInfoEXT&() const
29196 {
29197 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
29198 }
29199
29200 bool operator==( DisplayEventInfoEXT const& rhs ) const
29201 {
29202 return ( sType == rhs.sType )
29203 && ( pNext == rhs.pNext )
29204 && ( displayEvent == rhs.displayEvent );
29205 }
29206
29207 bool operator!=( DisplayEventInfoEXT const& rhs ) const
29208 {
29209 return !operator==( rhs );
29210 }
29211
29212 private:
29213 StructureType sType = StructureType::eDisplayEventInfoEXT;
29214
29215 public:
29216 const void* pNext = nullptr;
29217 DisplayEventTypeEXT displayEvent;
29218 };
29219 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
29220
29221 enum class PeerMemoryFeatureFlagBits
29222 {
29223 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
29224 eCopySrcKHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
29225 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
29226 eCopyDstKHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
29227 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
29228 eGenericSrcKHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
29229 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
29230 eGenericDstKHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
29231 };
29232
29233 using PeerMemoryFeatureFlags = Flags<PeerMemoryFeatureFlagBits, VkPeerMemoryFeatureFlags>;
29234
29235 VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator|( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 )
29236 {
29237 return PeerMemoryFeatureFlags( bit0 ) | bit1;
29238 }
29239
29240 VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator~( PeerMemoryFeatureFlagBits bits )
29241 {
29242 return ~( PeerMemoryFeatureFlags( bits ) );
29243 }
29244
29245 template <> struct FlagTraits<PeerMemoryFeatureFlagBits>
29246 {
29247 enum
29248 {
29249 allFlags = VkFlags(PeerMemoryFeatureFlagBits::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBits::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBits::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBits::eGenericDst)
29250 };
29251 };
29252
29253 using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags;
29254
29255 enum class MemoryAllocateFlagBits
29256 {
29257 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
29258 eDeviceMaskKHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
29259 };
29260
29261 using MemoryAllocateFlags = Flags<MemoryAllocateFlagBits, VkMemoryAllocateFlags>;
29262
29263 VULKAN_HPP_INLINE MemoryAllocateFlags operator|( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 )
29264 {
29265 return MemoryAllocateFlags( bit0 ) | bit1;
29266 }
29267
29268 VULKAN_HPP_INLINE MemoryAllocateFlags operator~( MemoryAllocateFlagBits bits )
29269 {
29270 return ~( MemoryAllocateFlags( bits ) );
29271 }
29272
29273 template <> struct FlagTraits<MemoryAllocateFlagBits>
29274 {
29275 enum
29276 {
29277 allFlags = VkFlags(MemoryAllocateFlagBits::eDeviceMask)
29278 };
29279 };
29280
29281 using MemoryAllocateFlagsKHR = MemoryAllocateFlags;
29282
29283 struct MemoryAllocateFlagsInfo
29284 {
29285 MemoryAllocateFlagsInfo( MemoryAllocateFlags flags_ = MemoryAllocateFlags(),
29286 uint32_t deviceMask_ = 0 )
29287 : flags( flags_ )
29288 , deviceMask( deviceMask_ )
29289 {
29290 }
29291
29292 MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs )
29293 {
29294 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
29295 }
29296
29297 MemoryAllocateFlagsInfo& operator=( VkMemoryAllocateFlagsInfo const & rhs )
29298 {
29299 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
29300 return *this;
29301 }
29302 MemoryAllocateFlagsInfo& setPNext( const void* pNext_ )
29303 {
29304 pNext = pNext_;
29305 return *this;
29306 }
29307
29308 MemoryAllocateFlagsInfo& setFlags( MemoryAllocateFlags flags_ )
29309 {
29310 flags = flags_;
29311 return *this;
29312 }
29313
29314 MemoryAllocateFlagsInfo& setDeviceMask( uint32_t deviceMask_ )
29315 {
29316 deviceMask = deviceMask_;
29317 return *this;
29318 }
29319
29320 operator const VkMemoryAllocateFlagsInfo&() const
29321 {
29322 return *reinterpret_cast<const VkMemoryAllocateFlagsInfo*>(this);
29323 }
29324
29325 bool operator==( MemoryAllocateFlagsInfo const& rhs ) const
29326 {
29327 return ( sType == rhs.sType )
29328 && ( pNext == rhs.pNext )
29329 && ( flags == rhs.flags )
29330 && ( deviceMask == rhs.deviceMask );
29331 }
29332
29333 bool operator!=( MemoryAllocateFlagsInfo const& rhs ) const
29334 {
29335 return !operator==( rhs );
29336 }
29337
29338 private:
29339 StructureType sType = StructureType::eMemoryAllocateFlagsInfo;
29340
29341 public:
29342 const void* pNext = nullptr;
29343 MemoryAllocateFlags flags;
29344 uint32_t deviceMask;
29345 };
29346 static_assert( sizeof( MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), "struct and wrapper have different size!" );
29347
29348 using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
29349
29350 enum class DeviceGroupPresentModeFlagBitsKHR
29351 {
29352 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,
29353 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,
29354 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,
29355 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
29356 };
29357
29358 using DeviceGroupPresentModeFlagsKHR = Flags<DeviceGroupPresentModeFlagBitsKHR, VkDeviceGroupPresentModeFlagsKHR>;
29359
29360 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator|( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 )
29361 {
29362 return DeviceGroupPresentModeFlagsKHR( bit0 ) | bit1;
29363 }
29364
29365 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator~( DeviceGroupPresentModeFlagBitsKHR bits )
29366 {
29367 return ~( DeviceGroupPresentModeFlagsKHR( bits ) );
29368 }
29369
29370 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHR>
29371 {
29372 enum
29373 {
29374 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice)
29375 };
29376 };
29377
29378 struct DeviceGroupPresentCapabilitiesKHR
29379 {
29380 operator const VkDeviceGroupPresentCapabilitiesKHR&() const
29381 {
29382 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR*>(this);
29383 }
29384
29385 bool operator==( DeviceGroupPresentCapabilitiesKHR const& rhs ) const
29386 {
29387 return ( sType == rhs.sType )
29388 && ( pNext == rhs.pNext )
29389 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof( uint32_t ) ) == 0 )
29390 && ( modes == rhs.modes );
29391 }
29392
29393 bool operator!=( DeviceGroupPresentCapabilitiesKHR const& rhs ) const
29394 {
29395 return !operator==( rhs );
29396 }
29397
29398 private:
29399 StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
29400
29401 public:
29402 const void* pNext = nullptr;
29403 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE];
29404 DeviceGroupPresentModeFlagsKHR modes;
29405 };
29406 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), "struct and wrapper have different size!" );
29407
29408 struct DeviceGroupPresentInfoKHR
29409 {
29410 DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = 0,
29411 const uint32_t* pDeviceMasks_ = nullptr,
29412 DeviceGroupPresentModeFlagBitsKHR mode_ = DeviceGroupPresentModeFlagBitsKHR::eLocal )
29413 : swapchainCount( swapchainCount_ )
29414 , pDeviceMasks( pDeviceMasks_ )
29415 , mode( mode_ )
29416 {
29417 }
29418
29419 DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs )
29420 {
29421 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
29422 }
29423
29424 DeviceGroupPresentInfoKHR& operator=( VkDeviceGroupPresentInfoKHR const & rhs )
29425 {
29426 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
29427 return *this;
29428 }
29429 DeviceGroupPresentInfoKHR& setPNext( const void* pNext_ )
29430 {
29431 pNext = pNext_;
29432 return *this;
29433 }
29434
29435 DeviceGroupPresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
29436 {
29437 swapchainCount = swapchainCount_;
29438 return *this;
29439 }
29440
29441 DeviceGroupPresentInfoKHR& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
29442 {
29443 pDeviceMasks = pDeviceMasks_;
29444 return *this;
29445 }
29446
29447 DeviceGroupPresentInfoKHR& setMode( DeviceGroupPresentModeFlagBitsKHR mode_ )
29448 {
29449 mode = mode_;
29450 return *this;
29451 }
29452
29453 operator const VkDeviceGroupPresentInfoKHR&() const
29454 {
29455 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>(this);
29456 }
29457
29458 bool operator==( DeviceGroupPresentInfoKHR const& rhs ) const
29459 {
29460 return ( sType == rhs.sType )
29461 && ( pNext == rhs.pNext )
29462 && ( swapchainCount == rhs.swapchainCount )
29463 && ( pDeviceMasks == rhs.pDeviceMasks )
29464 && ( mode == rhs.mode );
29465 }
29466
29467 bool operator!=( DeviceGroupPresentInfoKHR const& rhs ) const
29468 {
29469 return !operator==( rhs );
29470 }
29471
29472 private:
29473 StructureType sType = StructureType::eDeviceGroupPresentInfoKHR;
29474
29475 public:
29476 const void* pNext = nullptr;
29477 uint32_t swapchainCount;
29478 const uint32_t* pDeviceMasks;
29479 DeviceGroupPresentModeFlagBitsKHR mode;
29480 };
29481 static_assert( sizeof( DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), "struct and wrapper have different size!" );
29482
29483 struct DeviceGroupSwapchainCreateInfoKHR
29484 {
29485 DeviceGroupSwapchainCreateInfoKHR( DeviceGroupPresentModeFlagsKHR modes_ = DeviceGroupPresentModeFlagsKHR() )
29486 : modes( modes_ )
29487 {
29488 }
29489
29490 DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
29491 {
29492 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
29493 }
29494
29495 DeviceGroupSwapchainCreateInfoKHR& operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
29496 {
29497 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
29498 return *this;
29499 }
29500 DeviceGroupSwapchainCreateInfoKHR& setPNext( const void* pNext_ )
29501 {
29502 pNext = pNext_;
29503 return *this;
29504 }
29505
29506 DeviceGroupSwapchainCreateInfoKHR& setModes( DeviceGroupPresentModeFlagsKHR modes_ )
29507 {
29508 modes = modes_;
29509 return *this;
29510 }
29511
29512 operator const VkDeviceGroupSwapchainCreateInfoKHR&() const
29513 {
29514 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>(this);
29515 }
29516
29517 bool operator==( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const
29518 {
29519 return ( sType == rhs.sType )
29520 && ( pNext == rhs.pNext )
29521 && ( modes == rhs.modes );
29522 }
29523
29524 bool operator!=( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const
29525 {
29526 return !operator==( rhs );
29527 }
29528
29529 private:
29530 StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
29531
29532 public:
29533 const void* pNext = nullptr;
29534 DeviceGroupPresentModeFlagsKHR modes;
29535 };
29536 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
29537
29538 enum class SwapchainCreateFlagBitsKHR
29539 {
29540 eSplitInstanceBindRegions = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
29541 eProtected = VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
29542 };
29543
29544 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
29545
29546 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
29547 {
29548 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
29549 }
29550
29551 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
29552 {
29553 return ~( SwapchainCreateFlagsKHR( bits ) );
29554 }
29555
29556 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
29557 {
29558 enum
29559 {
29560 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) | VkFlags(SwapchainCreateFlagBitsKHR::eProtected)
29561 };
29562 };
29563
29564 struct SwapchainCreateInfoKHR
29565 {
29566 SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_ = SwapchainCreateFlagsKHR(),
29567 SurfaceKHR surface_ = SurfaceKHR(),
29568 uint32_t minImageCount_ = 0,
29569 Format imageFormat_ = Format::eUndefined,
29570 ColorSpaceKHR imageColorSpace_ = ColorSpaceKHR::eSrgbNonlinear,
29571 Extent2D imageExtent_ = Extent2D(),
29572 uint32_t imageArrayLayers_ = 0,
29573 ImageUsageFlags imageUsage_ = ImageUsageFlags(),
29574 SharingMode imageSharingMode_ = SharingMode::eExclusive,
29575 uint32_t queueFamilyIndexCount_ = 0,
29576 const uint32_t* pQueueFamilyIndices_ = nullptr,
29577 SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity,
29578 CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque,
29579 PresentModeKHR presentMode_ = PresentModeKHR::eImmediate,
29580 Bool32 clipped_ = 0,
29581 SwapchainKHR oldSwapchain_ = SwapchainKHR() )
29582 : flags( flags_ )
29583 , surface( surface_ )
29584 , minImageCount( minImageCount_ )
29585 , imageFormat( imageFormat_ )
29586 , imageColorSpace( imageColorSpace_ )
29587 , imageExtent( imageExtent_ )
29588 , imageArrayLayers( imageArrayLayers_ )
29589 , imageUsage( imageUsage_ )
29590 , imageSharingMode( imageSharingMode_ )
29591 , queueFamilyIndexCount( queueFamilyIndexCount_ )
29592 , pQueueFamilyIndices( pQueueFamilyIndices_ )
29593 , preTransform( preTransform_ )
29594 , compositeAlpha( compositeAlpha_ )
29595 , presentMode( presentMode_ )
29596 , clipped( clipped_ )
29597 , oldSwapchain( oldSwapchain_ )
29598 {
29599 }
29600
29601 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
29602 {
29603 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
29604 }
29605
29606 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
29607 {
29608 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
29609 return *this;
29610 }
29611 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
29612 {
29613 pNext = pNext_;
29614 return *this;
29615 }
29616
29617 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
29618 {
29619 flags = flags_;
29620 return *this;
29621 }
29622
29623 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
29624 {
29625 surface = surface_;
29626 return *this;
29627 }
29628
29629 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
29630 {
29631 minImageCount = minImageCount_;
29632 return *this;
29633 }
29634
29635 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
29636 {
29637 imageFormat = imageFormat_;
29638 return *this;
29639 }
29640
29641 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
29642 {
29643 imageColorSpace = imageColorSpace_;
29644 return *this;
29645 }
29646
29647 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
29648 {
29649 imageExtent = imageExtent_;
29650 return *this;
29651 }
29652
29653 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
29654 {
29655 imageArrayLayers = imageArrayLayers_;
29656 return *this;
29657 }
29658
29659 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
29660 {
29661 imageUsage = imageUsage_;
29662 return *this;
29663 }
29664
29665 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
29666 {
29667 imageSharingMode = imageSharingMode_;
29668 return *this;
29669 }
29670
29671 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
29672 {
29673 queueFamilyIndexCount = queueFamilyIndexCount_;
29674 return *this;
29675 }
29676
29677 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
29678 {
29679 pQueueFamilyIndices = pQueueFamilyIndices_;
29680 return *this;
29681 }
29682
29683 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
29684 {
29685 preTransform = preTransform_;
29686 return *this;
29687 }
29688
29689 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
29690 {
29691 compositeAlpha = compositeAlpha_;
29692 return *this;
29693 }
29694
29695 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
29696 {
29697 presentMode = presentMode_;
29698 return *this;
29699 }
29700
29701 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
29702 {
29703 clipped = clipped_;
29704 return *this;
29705 }
29706
29707 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
29708 {
29709 oldSwapchain = oldSwapchain_;
29710 return *this;
29711 }
29712
29713 operator const VkSwapchainCreateInfoKHR&() const
29714 {
29715 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
29716 }
29717
29718 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
29719 {
29720 return ( sType == rhs.sType )
29721 && ( pNext == rhs.pNext )
29722 && ( flags == rhs.flags )
29723 && ( surface == rhs.surface )
29724 && ( minImageCount == rhs.minImageCount )
29725 && ( imageFormat == rhs.imageFormat )
29726 && ( imageColorSpace == rhs.imageColorSpace )
29727 && ( imageExtent == rhs.imageExtent )
29728 && ( imageArrayLayers == rhs.imageArrayLayers )
29729 && ( imageUsage == rhs.imageUsage )
29730 && ( imageSharingMode == rhs.imageSharingMode )
29731 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
29732 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
29733 && ( preTransform == rhs.preTransform )
29734 && ( compositeAlpha == rhs.compositeAlpha )
29735 && ( presentMode == rhs.presentMode )
29736 && ( clipped == rhs.clipped )
29737 && ( oldSwapchain == rhs.oldSwapchain );
29738 }
29739
29740 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
29741 {
29742 return !operator==( rhs );
29743 }
29744
29745 private:
29746 StructureType sType = StructureType::eSwapchainCreateInfoKHR;
29747
29748 public:
29749 const void* pNext = nullptr;
29750 SwapchainCreateFlagsKHR flags;
29751 SurfaceKHR surface;
29752 uint32_t minImageCount;
29753 Format imageFormat;
29754 ColorSpaceKHR imageColorSpace;
29755 Extent2D imageExtent;
29756 uint32_t imageArrayLayers;
29757 ImageUsageFlags imageUsage;
29758 SharingMode imageSharingMode;
29759 uint32_t queueFamilyIndexCount;
29760 const uint32_t* pQueueFamilyIndices;
29761 SurfaceTransformFlagBitsKHR preTransform;
29762 CompositeAlphaFlagBitsKHR compositeAlpha;
29763 PresentModeKHR presentMode;
29764 Bool32 clipped;
29765 SwapchainKHR oldSwapchain;
29766 };
29767 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
29768
29769 enum class ViewportCoordinateSwizzleNV
29770 {
29771 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
29772 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
29773 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
29774 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
29775 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
29776 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
29777 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
29778 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
29779 };
29780
29781 struct ViewportSwizzleNV
29782 {
29783 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX,
29784 ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX,
29785 ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX,
29786 ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
29787 : x( x_ )
29788 , y( y_ )
29789 , z( z_ )
29790 , w( w_ )
29791 {
29792 }
29793
29794 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
29795 {
29796 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
29797 }
29798
29799 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
29800 {
29801 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
29802 return *this;
29803 }
29804 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
29805 {
29806 x = x_;
29807 return *this;
29808 }
29809
29810 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
29811 {
29812 y = y_;
29813 return *this;
29814 }
29815
29816 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
29817 {
29818 z = z_;
29819 return *this;
29820 }
29821
29822 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
29823 {
29824 w = w_;
29825 return *this;
29826 }
29827
29828 operator const VkViewportSwizzleNV&() const
29829 {
29830 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
29831 }
29832
29833 bool operator==( ViewportSwizzleNV const& rhs ) const
29834 {
29835 return ( x == rhs.x )
29836 && ( y == rhs.y )
29837 && ( z == rhs.z )
29838 && ( w == rhs.w );
29839 }
29840
29841 bool operator!=( ViewportSwizzleNV const& rhs ) const
29842 {
29843 return !operator==( rhs );
29844 }
29845
29846 ViewportCoordinateSwizzleNV x;
29847 ViewportCoordinateSwizzleNV y;
29848 ViewportCoordinateSwizzleNV z;
29849 ViewportCoordinateSwizzleNV w;
29850 };
29851 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
29852
29853 struct PipelineViewportSwizzleStateCreateInfoNV
29854 {
29855 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(),
29856 uint32_t viewportCount_ = 0,
29857 const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
29858 : flags( flags_ )
29859 , viewportCount( viewportCount_ )
29860 , pViewportSwizzles( pViewportSwizzles_ )
29861 {
29862 }
29863
29864 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
29865 {
29866 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
29867 }
29868
29869 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
29870 {
29871 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
29872 return *this;
29873 }
29874 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
29875 {
29876 pNext = pNext_;
29877 return *this;
29878 }
29879
29880 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
29881 {
29882 flags = flags_;
29883 return *this;
29884 }
29885
29886 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
29887 {
29888 viewportCount = viewportCount_;
29889 return *this;
29890 }
29891
29892 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
29893 {
29894 pViewportSwizzles = pViewportSwizzles_;
29895 return *this;
29896 }
29897
29898 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
29899 {
29900 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
29901 }
29902
29903 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
29904 {
29905 return ( sType == rhs.sType )
29906 && ( pNext == rhs.pNext )
29907 && ( flags == rhs.flags )
29908 && ( viewportCount == rhs.viewportCount )
29909 && ( pViewportSwizzles == rhs.pViewportSwizzles );
29910 }
29911
29912 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
29913 {
29914 return !operator==( rhs );
29915 }
29916
29917 private:
29918 StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
29919
29920 public:
29921 const void* pNext = nullptr;
29922 PipelineViewportSwizzleStateCreateFlagsNV flags;
29923 uint32_t viewportCount;
29924 const ViewportSwizzleNV* pViewportSwizzles;
29925 };
29926 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
29927
29928 enum class DiscardRectangleModeEXT
29929 {
29930 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
29931 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
29932 };
29933
29934 struct PipelineDiscardRectangleStateCreateInfoEXT
29935 {
29936 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(),
29937 DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive,
29938 uint32_t discardRectangleCount_ = 0,
29939 const Rect2D* pDiscardRectangles_ = nullptr )
29940 : flags( flags_ )
29941 , discardRectangleMode( discardRectangleMode_ )
29942 , discardRectangleCount( discardRectangleCount_ )
29943 , pDiscardRectangles( pDiscardRectangles_ )
29944 {
29945 }
29946
29947 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
29948 {
29949 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
29950 }
29951
29952 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
29953 {
29954 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
29955 return *this;
29956 }
29957 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
29958 {
29959 pNext = pNext_;
29960 return *this;
29961 }
29962
29963 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
29964 {
29965 flags = flags_;
29966 return *this;
29967 }
29968
29969 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
29970 {
29971 discardRectangleMode = discardRectangleMode_;
29972 return *this;
29973 }
29974
29975 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
29976 {
29977 discardRectangleCount = discardRectangleCount_;
29978 return *this;
29979 }
29980
29981 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
29982 {
29983 pDiscardRectangles = pDiscardRectangles_;
29984 return *this;
29985 }
29986
29987 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
29988 {
29989 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
29990 }
29991
29992 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
29993 {
29994 return ( sType == rhs.sType )
29995 && ( pNext == rhs.pNext )
29996 && ( flags == rhs.flags )
29997 && ( discardRectangleMode == rhs.discardRectangleMode )
29998 && ( discardRectangleCount == rhs.discardRectangleCount )
29999 && ( pDiscardRectangles == rhs.pDiscardRectangles );
30000 }
30001
30002 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
30003 {
30004 return !operator==( rhs );
30005 }
30006
30007 private:
30008 StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
30009
30010 public:
30011 const void* pNext = nullptr;
30012 PipelineDiscardRectangleStateCreateFlagsEXT flags;
30013 DiscardRectangleModeEXT discardRectangleMode;
30014 uint32_t discardRectangleCount;
30015 const Rect2D* pDiscardRectangles;
30016 };
30017 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
30018
30019 enum class SubpassDescriptionFlagBits
30020 {
30021 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
30022 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
30023 };
30024
30025 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
30026
30027 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
30028 {
30029 return SubpassDescriptionFlags( bit0 ) | bit1;
30030 }
30031
30032 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
30033 {
30034 return ~( SubpassDescriptionFlags( bits ) );
30035 }
30036
30037 template <> struct FlagTraits<SubpassDescriptionFlagBits>
30038 {
30039 enum
30040 {
30041 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
30042 };
30043 };
30044
30045 struct SubpassDescription
30046 {
30047 SubpassDescription( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(),
30048 PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
30049 uint32_t inputAttachmentCount_ = 0,
30050 const AttachmentReference* pInputAttachments_ = nullptr,
30051 uint32_t colorAttachmentCount_ = 0,
30052 const AttachmentReference* pColorAttachments_ = nullptr,
30053 const AttachmentReference* pResolveAttachments_ = nullptr,
30054 const AttachmentReference* pDepthStencilAttachment_ = nullptr,
30055 uint32_t preserveAttachmentCount_ = 0,
30056 const uint32_t* pPreserveAttachments_ = nullptr )
30057 : flags( flags_ )
30058 , pipelineBindPoint( pipelineBindPoint_ )
30059 , inputAttachmentCount( inputAttachmentCount_ )
30060 , pInputAttachments( pInputAttachments_ )
30061 , colorAttachmentCount( colorAttachmentCount_ )
30062 , pColorAttachments( pColorAttachments_ )
30063 , pResolveAttachments( pResolveAttachments_ )
30064 , pDepthStencilAttachment( pDepthStencilAttachment_ )
30065 , preserveAttachmentCount( preserveAttachmentCount_ )
30066 , pPreserveAttachments( pPreserveAttachments_ )
30067 {
30068 }
30069
30070 SubpassDescription( VkSubpassDescription const & rhs )
30071 {
30072 memcpy( this, &rhs, sizeof( SubpassDescription ) );
30073 }
30074
30075 SubpassDescription& operator=( VkSubpassDescription const & rhs )
30076 {
30077 memcpy( this, &rhs, sizeof( SubpassDescription ) );
30078 return *this;
30079 }
30080 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
30081 {
30082 flags = flags_;
30083 return *this;
30084 }
30085
30086 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
30087 {
30088 pipelineBindPoint = pipelineBindPoint_;
30089 return *this;
30090 }
30091
30092 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
30093 {
30094 inputAttachmentCount = inputAttachmentCount_;
30095 return *this;
30096 }
30097
30098 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
30099 {
30100 pInputAttachments = pInputAttachments_;
30101 return *this;
30102 }
30103
30104 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
30105 {
30106 colorAttachmentCount = colorAttachmentCount_;
30107 return *this;
30108 }
30109
30110 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
30111 {
30112 pColorAttachments = pColorAttachments_;
30113 return *this;
30114 }
30115
30116 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
30117 {
30118 pResolveAttachments = pResolveAttachments_;
30119 return *this;
30120 }
30121
30122 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
30123 {
30124 pDepthStencilAttachment = pDepthStencilAttachment_;
30125 return *this;
30126 }
30127
30128 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
30129 {
30130 preserveAttachmentCount = preserveAttachmentCount_;
30131 return *this;
30132 }
30133
30134 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
30135 {
30136 pPreserveAttachments = pPreserveAttachments_;
30137 return *this;
30138 }
30139
30140 operator const VkSubpassDescription&() const
30141 {
30142 return *reinterpret_cast<const VkSubpassDescription*>(this);
30143 }
30144
30145 bool operator==( SubpassDescription const& rhs ) const
30146 {
30147 return ( flags == rhs.flags )
30148 && ( pipelineBindPoint == rhs.pipelineBindPoint )
30149 && ( inputAttachmentCount == rhs.inputAttachmentCount )
30150 && ( pInputAttachments == rhs.pInputAttachments )
30151 && ( colorAttachmentCount == rhs.colorAttachmentCount )
30152 && ( pColorAttachments == rhs.pColorAttachments )
30153 && ( pResolveAttachments == rhs.pResolveAttachments )
30154 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
30155 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
30156 && ( pPreserveAttachments == rhs.pPreserveAttachments );
30157 }
30158
30159 bool operator!=( SubpassDescription const& rhs ) const
30160 {
30161 return !operator==( rhs );
30162 }
30163
30164 SubpassDescriptionFlags flags;
30165 PipelineBindPoint pipelineBindPoint;
30166 uint32_t inputAttachmentCount;
30167 const AttachmentReference* pInputAttachments;
30168 uint32_t colorAttachmentCount;
30169 const AttachmentReference* pColorAttachments;
30170 const AttachmentReference* pResolveAttachments;
30171 const AttachmentReference* pDepthStencilAttachment;
30172 uint32_t preserveAttachmentCount;
30173 const uint32_t* pPreserveAttachments;
30174 };
30175 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
30176
30177 struct RenderPassCreateInfo
30178 {
30179 RenderPassCreateInfo( RenderPassCreateFlags flags_ = RenderPassCreateFlags(),
30180 uint32_t attachmentCount_ = 0,
30181 const AttachmentDescription* pAttachments_ = nullptr,
30182 uint32_t subpassCount_ = 0,
30183 const SubpassDescription* pSubpasses_ = nullptr,
30184 uint32_t dependencyCount_ = 0,
30185 const SubpassDependency* pDependencies_ = nullptr )
30186 : flags( flags_ )
30187 , attachmentCount( attachmentCount_ )
30188 , pAttachments( pAttachments_ )
30189 , subpassCount( subpassCount_ )
30190 , pSubpasses( pSubpasses_ )
30191 , dependencyCount( dependencyCount_ )
30192 , pDependencies( pDependencies_ )
30193 {
30194 }
30195
30196 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
30197 {
30198 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
30199 }
30200
30201 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
30202 {
30203 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
30204 return *this;
30205 }
30206 RenderPassCreateInfo& setPNext( const void* pNext_ )
30207 {
30208 pNext = pNext_;
30209 return *this;
30210 }
30211
30212 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
30213 {
30214 flags = flags_;
30215 return *this;
30216 }
30217
30218 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
30219 {
30220 attachmentCount = attachmentCount_;
30221 return *this;
30222 }
30223
30224 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
30225 {
30226 pAttachments = pAttachments_;
30227 return *this;
30228 }
30229
30230 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
30231 {
30232 subpassCount = subpassCount_;
30233 return *this;
30234 }
30235
30236 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
30237 {
30238 pSubpasses = pSubpasses_;
30239 return *this;
30240 }
30241
30242 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
30243 {
30244 dependencyCount = dependencyCount_;
30245 return *this;
30246 }
30247
30248 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
30249 {
30250 pDependencies = pDependencies_;
30251 return *this;
30252 }
30253
30254 operator const VkRenderPassCreateInfo&() const
30255 {
30256 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
30257 }
30258
30259 bool operator==( RenderPassCreateInfo const& rhs ) const
30260 {
30261 return ( sType == rhs.sType )
30262 && ( pNext == rhs.pNext )
30263 && ( flags == rhs.flags )
30264 && ( attachmentCount == rhs.attachmentCount )
30265 && ( pAttachments == rhs.pAttachments )
30266 && ( subpassCount == rhs.subpassCount )
30267 && ( pSubpasses == rhs.pSubpasses )
30268 && ( dependencyCount == rhs.dependencyCount )
30269 && ( pDependencies == rhs.pDependencies );
30270 }
30271
30272 bool operator!=( RenderPassCreateInfo const& rhs ) const
30273 {
30274 return !operator==( rhs );
30275 }
30276
30277 private:
30278 StructureType sType = StructureType::eRenderPassCreateInfo;
30279
30280 public:
30281 const void* pNext = nullptr;
30282 RenderPassCreateFlags flags;
30283 uint32_t attachmentCount;
30284 const AttachmentDescription* pAttachments;
30285 uint32_t subpassCount;
30286 const SubpassDescription* pSubpasses;
30287 uint32_t dependencyCount;
30288 const SubpassDependency* pDependencies;
30289 };
30290 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
30291
30292 struct SubpassDescription2KHR
30293 {
30294 SubpassDescription2KHR( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(),
30295 PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics,
30296 uint32_t viewMask_ = 0,
30297 uint32_t inputAttachmentCount_ = 0,
30298 const AttachmentReference2KHR* pInputAttachments_ = nullptr,
30299 uint32_t colorAttachmentCount_ = 0,
30300 const AttachmentReference2KHR* pColorAttachments_ = nullptr,
30301 const AttachmentReference2KHR* pResolveAttachments_ = nullptr,
30302 const AttachmentReference2KHR* pDepthStencilAttachment_ = nullptr,
30303 uint32_t preserveAttachmentCount_ = 0,
30304 const uint32_t* pPreserveAttachments_ = nullptr )
30305 : flags( flags_ )
30306 , pipelineBindPoint( pipelineBindPoint_ )
30307 , viewMask( viewMask_ )
30308 , inputAttachmentCount( inputAttachmentCount_ )
30309 , pInputAttachments( pInputAttachments_ )
30310 , colorAttachmentCount( colorAttachmentCount_ )
30311 , pColorAttachments( pColorAttachments_ )
30312 , pResolveAttachments( pResolveAttachments_ )
30313 , pDepthStencilAttachment( pDepthStencilAttachment_ )
30314 , preserveAttachmentCount( preserveAttachmentCount_ )
30315 , pPreserveAttachments( pPreserveAttachments_ )
30316 {
30317 }
30318
30319 SubpassDescription2KHR( VkSubpassDescription2KHR const & rhs )
30320 {
30321 memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
30322 }
30323
30324 SubpassDescription2KHR& operator=( VkSubpassDescription2KHR const & rhs )
30325 {
30326 memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
30327 return *this;
30328 }
30329 SubpassDescription2KHR& setPNext( const void* pNext_ )
30330 {
30331 pNext = pNext_;
30332 return *this;
30333 }
30334
30335 SubpassDescription2KHR& setFlags( SubpassDescriptionFlags flags_ )
30336 {
30337 flags = flags_;
30338 return *this;
30339 }
30340
30341 SubpassDescription2KHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
30342 {
30343 pipelineBindPoint = pipelineBindPoint_;
30344 return *this;
30345 }
30346
30347 SubpassDescription2KHR& setViewMask( uint32_t viewMask_ )
30348 {
30349 viewMask = viewMask_;
30350 return *this;
30351 }
30352
30353 SubpassDescription2KHR& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
30354 {
30355 inputAttachmentCount = inputAttachmentCount_;
30356 return *this;
30357 }
30358
30359 SubpassDescription2KHR& setPInputAttachments( const AttachmentReference2KHR* pInputAttachments_ )
30360 {
30361 pInputAttachments = pInputAttachments_;
30362 return *this;
30363 }
30364
30365 SubpassDescription2KHR& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
30366 {
30367 colorAttachmentCount = colorAttachmentCount_;
30368 return *this;
30369 }
30370
30371 SubpassDescription2KHR& setPColorAttachments( const AttachmentReference2KHR* pColorAttachments_ )
30372 {
30373 pColorAttachments = pColorAttachments_;
30374 return *this;
30375 }
30376
30377 SubpassDescription2KHR& setPResolveAttachments( const AttachmentReference2KHR* pResolveAttachments_ )
30378 {
30379 pResolveAttachments = pResolveAttachments_;
30380 return *this;
30381 }
30382
30383 SubpassDescription2KHR& setPDepthStencilAttachment( const AttachmentReference2KHR* pDepthStencilAttachment_ )
30384 {
30385 pDepthStencilAttachment = pDepthStencilAttachment_;
30386 return *this;
30387 }
30388
30389 SubpassDescription2KHR& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
30390 {
30391 preserveAttachmentCount = preserveAttachmentCount_;
30392 return *this;
30393 }
30394
30395 SubpassDescription2KHR& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
30396 {
30397 pPreserveAttachments = pPreserveAttachments_;
30398 return *this;
30399 }
30400
30401 operator const VkSubpassDescription2KHR&() const
30402 {
30403 return *reinterpret_cast<const VkSubpassDescription2KHR*>(this);
30404 }
30405
30406 bool operator==( SubpassDescription2KHR const& rhs ) const
30407 {
30408 return ( sType == rhs.sType )
30409 && ( pNext == rhs.pNext )
30410 && ( flags == rhs.flags )
30411 && ( pipelineBindPoint == rhs.pipelineBindPoint )
30412 && ( viewMask == rhs.viewMask )
30413 && ( inputAttachmentCount == rhs.inputAttachmentCount )
30414 && ( pInputAttachments == rhs.pInputAttachments )
30415 && ( colorAttachmentCount == rhs.colorAttachmentCount )
30416 && ( pColorAttachments == rhs.pColorAttachments )
30417 && ( pResolveAttachments == rhs.pResolveAttachments )
30418 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
30419 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
30420 && ( pPreserveAttachments == rhs.pPreserveAttachments );
30421 }
30422
30423 bool operator!=( SubpassDescription2KHR const& rhs ) const
30424 {
30425 return !operator==( rhs );
30426 }
30427
30428 private:
30429 StructureType sType = StructureType::eSubpassDescription2KHR;
30430
30431 public:
30432 const void* pNext = nullptr;
30433 SubpassDescriptionFlags flags;
30434 PipelineBindPoint pipelineBindPoint;
30435 uint32_t viewMask;
30436 uint32_t inputAttachmentCount;
30437 const AttachmentReference2KHR* pInputAttachments;
30438 uint32_t colorAttachmentCount;
30439 const AttachmentReference2KHR* pColorAttachments;
30440 const AttachmentReference2KHR* pResolveAttachments;
30441 const AttachmentReference2KHR* pDepthStencilAttachment;
30442 uint32_t preserveAttachmentCount;
30443 const uint32_t* pPreserveAttachments;
30444 };
30445 static_assert( sizeof( SubpassDescription2KHR ) == sizeof( VkSubpassDescription2KHR ), "struct and wrapper have different size!" );
30446
30447 struct RenderPassCreateInfo2KHR
30448 {
30449 RenderPassCreateInfo2KHR( RenderPassCreateFlags flags_ = RenderPassCreateFlags(),
30450 uint32_t attachmentCount_ = 0,
30451 const AttachmentDescription2KHR* pAttachments_ = nullptr,
30452 uint32_t subpassCount_ = 0,
30453 const SubpassDescription2KHR* pSubpasses_ = nullptr,
30454 uint32_t dependencyCount_ = 0,
30455 const SubpassDependency2KHR* pDependencies_ = nullptr,
30456 uint32_t correlatedViewMaskCount_ = 0,
30457 const uint32_t* pCorrelatedViewMasks_ = nullptr )
30458 : flags( flags_ )
30459 , attachmentCount( attachmentCount_ )
30460 , pAttachments( pAttachments_ )
30461 , subpassCount( subpassCount_ )
30462 , pSubpasses( pSubpasses_ )
30463 , dependencyCount( dependencyCount_ )
30464 , pDependencies( pDependencies_ )
30465 , correlatedViewMaskCount( correlatedViewMaskCount_ )
30466 , pCorrelatedViewMasks( pCorrelatedViewMasks_ )
30467 {
30468 }
30469
30470 RenderPassCreateInfo2KHR( VkRenderPassCreateInfo2KHR const & rhs )
30471 {
30472 memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
30473 }
30474
30475 RenderPassCreateInfo2KHR& operator=( VkRenderPassCreateInfo2KHR const & rhs )
30476 {
30477 memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
30478 return *this;
30479 }
30480 RenderPassCreateInfo2KHR& setPNext( const void* pNext_ )
30481 {
30482 pNext = pNext_;
30483 return *this;
30484 }
30485
30486 RenderPassCreateInfo2KHR& setFlags( RenderPassCreateFlags flags_ )
30487 {
30488 flags = flags_;
30489 return *this;
30490 }
30491
30492 RenderPassCreateInfo2KHR& setAttachmentCount( uint32_t attachmentCount_ )
30493 {
30494 attachmentCount = attachmentCount_;
30495 return *this;
30496 }
30497
30498 RenderPassCreateInfo2KHR& setPAttachments( const AttachmentDescription2KHR* pAttachments_ )
30499 {
30500 pAttachments = pAttachments_;
30501 return *this;
30502 }
30503
30504 RenderPassCreateInfo2KHR& setSubpassCount( uint32_t subpassCount_ )
30505 {
30506 subpassCount = subpassCount_;
30507 return *this;
30508 }
30509
30510 RenderPassCreateInfo2KHR& setPSubpasses( const SubpassDescription2KHR* pSubpasses_ )
30511 {
30512 pSubpasses = pSubpasses_;
30513 return *this;
30514 }
30515
30516 RenderPassCreateInfo2KHR& setDependencyCount( uint32_t dependencyCount_ )
30517 {
30518 dependencyCount = dependencyCount_;
30519 return *this;
30520 }
30521
30522 RenderPassCreateInfo2KHR& setPDependencies( const SubpassDependency2KHR* pDependencies_ )
30523 {
30524 pDependencies = pDependencies_;
30525 return *this;
30526 }
30527
30528 RenderPassCreateInfo2KHR& setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ )
30529 {
30530 correlatedViewMaskCount = correlatedViewMaskCount_;
30531 return *this;
30532 }
30533
30534 RenderPassCreateInfo2KHR& setPCorrelatedViewMasks( const uint32_t* pCorrelatedViewMasks_ )
30535 {
30536 pCorrelatedViewMasks = pCorrelatedViewMasks_;
30537 return *this;
30538 }
30539
30540 operator const VkRenderPassCreateInfo2KHR&() const
30541 {
30542 return *reinterpret_cast<const VkRenderPassCreateInfo2KHR*>(this);
30543 }
30544
30545 bool operator==( RenderPassCreateInfo2KHR const& rhs ) const
30546 {
30547 return ( sType == rhs.sType )
30548 && ( pNext == rhs.pNext )
30549 && ( flags == rhs.flags )
30550 && ( attachmentCount == rhs.attachmentCount )
30551 && ( pAttachments == rhs.pAttachments )
30552 && ( subpassCount == rhs.subpassCount )
30553 && ( pSubpasses == rhs.pSubpasses )
30554 && ( dependencyCount == rhs.dependencyCount )
30555 && ( pDependencies == rhs.pDependencies )
30556 && ( correlatedViewMaskCount == rhs.correlatedViewMaskCount )
30557 && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks );
30558 }
30559
30560 bool operator!=( RenderPassCreateInfo2KHR const& rhs ) const
30561 {
30562 return !operator==( rhs );
30563 }
30564
30565 private:
30566 StructureType sType = StructureType::eRenderPassCreateInfo2KHR;
30567
30568 public:
30569 const void* pNext = nullptr;
30570 RenderPassCreateFlags flags;
30571 uint32_t attachmentCount;
30572 const AttachmentDescription2KHR* pAttachments;
30573 uint32_t subpassCount;
30574 const SubpassDescription2KHR* pSubpasses;
30575 uint32_t dependencyCount;
30576 const SubpassDependency2KHR* pDependencies;
30577 uint32_t correlatedViewMaskCount;
30578 const uint32_t* pCorrelatedViewMasks;
30579 };
30580 static_assert( sizeof( RenderPassCreateInfo2KHR ) == sizeof( VkRenderPassCreateInfo2KHR ), "struct and wrapper have different size!" );
30581
30582 enum class PointClippingBehavior
30583 {
30584 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
30585 eAllClipPlanesKHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
30586 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
30587 eUserClipPlanesOnlyKHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
30588 };
30589
30590 struct PhysicalDevicePointClippingProperties
30591 {
30592 operator const VkPhysicalDevicePointClippingProperties&() const
30593 {
30594 return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>(this);
30595 }
30596
30597 bool operator==( PhysicalDevicePointClippingProperties const& rhs ) const
30598 {
30599 return ( sType == rhs.sType )
30600 && ( pNext == rhs.pNext )
30601 && ( pointClippingBehavior == rhs.pointClippingBehavior );
30602 }
30603
30604 bool operator!=( PhysicalDevicePointClippingProperties const& rhs ) const
30605 {
30606 return !operator==( rhs );
30607 }
30608
30609 private:
30610 StructureType sType = StructureType::ePhysicalDevicePointClippingProperties;
30611
30612 public:
30613 void* pNext = nullptr;
30614 PointClippingBehavior pointClippingBehavior;
30615 };
30616 static_assert( sizeof( PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), "struct and wrapper have different size!" );
30617
30618 using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
30619
30620 enum class SamplerReductionModeEXT
30621 {
30622 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
30623 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
30624 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
30625 };
30626
30627 struct SamplerReductionModeCreateInfoEXT
30628 {
30629 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
30630 : reductionMode( reductionMode_ )
30631 {
30632 }
30633
30634 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
30635 {
30636 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
30637 }
30638
30639 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
30640 {
30641 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
30642 return *this;
30643 }
30644 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
30645 {
30646 pNext = pNext_;
30647 return *this;
30648 }
30649
30650 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
30651 {
30652 reductionMode = reductionMode_;
30653 return *this;
30654 }
30655
30656 operator const VkSamplerReductionModeCreateInfoEXT&() const
30657 {
30658 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
30659 }
30660
30661 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
30662 {
30663 return ( sType == rhs.sType )
30664 && ( pNext == rhs.pNext )
30665 && ( reductionMode == rhs.reductionMode );
30666 }
30667
30668 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
30669 {
30670 return !operator==( rhs );
30671 }
30672
30673 private:
30674 StructureType sType = StructureType::eSamplerReductionModeCreateInfoEXT;
30675
30676 public:
30677 const void* pNext = nullptr;
30678 SamplerReductionModeEXT reductionMode;
30679 };
30680 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
30681
30682 enum class TessellationDomainOrigin
30683 {
30684 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
30685 eUpperLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
30686 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
30687 eLowerLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
30688 };
30689
30690 struct PipelineTessellationDomainOriginStateCreateInfo
30691 {
30692 PipelineTessellationDomainOriginStateCreateInfo( TessellationDomainOrigin domainOrigin_ = TessellationDomainOrigin::eUpperLeft )
30693 : domainOrigin( domainOrigin_ )
30694 {
30695 }
30696
30697 PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
30698 {
30699 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
30700 }
30701
30702 PipelineTessellationDomainOriginStateCreateInfo& operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
30703 {
30704 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
30705 return *this;
30706 }
30707 PipelineTessellationDomainOriginStateCreateInfo& setPNext( const void* pNext_ )
30708 {
30709 pNext = pNext_;
30710 return *this;
30711 }
30712
30713 PipelineTessellationDomainOriginStateCreateInfo& setDomainOrigin( TessellationDomainOrigin domainOrigin_ )
30714 {
30715 domainOrigin = domainOrigin_;
30716 return *this;
30717 }
30718
30719 operator const VkPipelineTessellationDomainOriginStateCreateInfo&() const
30720 {
30721 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>(this);
30722 }
30723
30724 bool operator==( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const
30725 {
30726 return ( sType == rhs.sType )
30727 && ( pNext == rhs.pNext )
30728 && ( domainOrigin == rhs.domainOrigin );
30729 }
30730
30731 bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const
30732 {
30733 return !operator==( rhs );
30734 }
30735
30736 private:
30737 StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
30738
30739 public:
30740 const void* pNext = nullptr;
30741 TessellationDomainOrigin domainOrigin;
30742 };
30743 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfo ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), "struct and wrapper have different size!" );
30744
30745 using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
30746
30747 enum class SamplerYcbcrModelConversion
30748 {
30749 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
30750 eRgbIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
30751 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
30752 eYcbcrIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
30753 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
30754 eYcbcr709KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
30755 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
30756 eYcbcr601KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
30757 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
30758 eYcbcr2020KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
30759 };
30760
30761 enum class SamplerYcbcrRange
30762 {
30763 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
30764 eItuFullKHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
30765 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
30766 eItuNarrowKHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
30767 };
30768
30769 enum class ChromaLocation
30770 {
30771 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN,
30772 eCositedEvenKHR = VK_CHROMA_LOCATION_COSITED_EVEN,
30773 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT,
30774 eMidpointKHR = VK_CHROMA_LOCATION_MIDPOINT
30775 };
30776
30777 struct SamplerYcbcrConversionCreateInfo
30778 {
30779 SamplerYcbcrConversionCreateInfo( Format format_ = Format::eUndefined,
30780 SamplerYcbcrModelConversion ycbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity,
30781 SamplerYcbcrRange ycbcrRange_ = SamplerYcbcrRange::eItuFull,
30782 ComponentMapping components_ = ComponentMapping(),
30783 ChromaLocation xChromaOffset_ = ChromaLocation::eCositedEven,
30784 ChromaLocation yChromaOffset_ = ChromaLocation::eCositedEven,
30785 Filter chromaFilter_ = Filter::eNearest,
30786 Bool32 forceExplicitReconstruction_ = 0 )
30787 : format( format_ )
30788 , ycbcrModel( ycbcrModel_ )
30789 , ycbcrRange( ycbcrRange_ )
30790 , components( components_ )
30791 , xChromaOffset( xChromaOffset_ )
30792 , yChromaOffset( yChromaOffset_ )
30793 , chromaFilter( chromaFilter_ )
30794 , forceExplicitReconstruction( forceExplicitReconstruction_ )
30795 {
30796 }
30797
30798 SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs )
30799 {
30800 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
30801 }
30802
30803 SamplerYcbcrConversionCreateInfo& operator=( VkSamplerYcbcrConversionCreateInfo const & rhs )
30804 {
30805 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
30806 return *this;
30807 }
30808 SamplerYcbcrConversionCreateInfo& setPNext( const void* pNext_ )
30809 {
30810 pNext = pNext_;
30811 return *this;
30812 }
30813
30814 SamplerYcbcrConversionCreateInfo& setFormat( Format format_ )
30815 {
30816 format = format_;
30817 return *this;
30818 }
30819
30820 SamplerYcbcrConversionCreateInfo& setYcbcrModel( SamplerYcbcrModelConversion ycbcrModel_ )
30821 {
30822 ycbcrModel = ycbcrModel_;
30823 return *this;
30824 }
30825
30826 SamplerYcbcrConversionCreateInfo& setYcbcrRange( SamplerYcbcrRange ycbcrRange_ )
30827 {
30828 ycbcrRange = ycbcrRange_;
30829 return *this;
30830 }
30831
30832 SamplerYcbcrConversionCreateInfo& setComponents( ComponentMapping components_ )
30833 {
30834 components = components_;
30835 return *this;
30836 }
30837
30838 SamplerYcbcrConversionCreateInfo& setXChromaOffset( ChromaLocation xChromaOffset_ )
30839 {
30840 xChromaOffset = xChromaOffset_;
30841 return *this;
30842 }
30843
30844 SamplerYcbcrConversionCreateInfo& setYChromaOffset( ChromaLocation yChromaOffset_ )
30845 {
30846 yChromaOffset = yChromaOffset_;
30847 return *this;
30848 }
30849
30850 SamplerYcbcrConversionCreateInfo& setChromaFilter( Filter chromaFilter_ )
30851 {
30852 chromaFilter = chromaFilter_;
30853 return *this;
30854 }
30855
30856 SamplerYcbcrConversionCreateInfo& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
30857 {
30858 forceExplicitReconstruction = forceExplicitReconstruction_;
30859 return *this;
30860 }
30861
30862 operator const VkSamplerYcbcrConversionCreateInfo&() const
30863 {
30864 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>(this);
30865 }
30866
30867 bool operator==( SamplerYcbcrConversionCreateInfo const& rhs ) const
30868 {
30869 return ( sType == rhs.sType )
30870 && ( pNext == rhs.pNext )
30871 && ( format == rhs.format )
30872 && ( ycbcrModel == rhs.ycbcrModel )
30873 && ( ycbcrRange == rhs.ycbcrRange )
30874 && ( components == rhs.components )
30875 && ( xChromaOffset == rhs.xChromaOffset )
30876 && ( yChromaOffset == rhs.yChromaOffset )
30877 && ( chromaFilter == rhs.chromaFilter )
30878 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
30879 }
30880
30881 bool operator!=( SamplerYcbcrConversionCreateInfo const& rhs ) const
30882 {
30883 return !operator==( rhs );
30884 }
30885
30886 private:
30887 StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo;
30888
30889 public:
30890 const void* pNext = nullptr;
30891 Format format;
30892 SamplerYcbcrModelConversion ycbcrModel;
30893 SamplerYcbcrRange ycbcrRange;
30894 ComponentMapping components;
30895 ChromaLocation xChromaOffset;
30896 ChromaLocation yChromaOffset;
30897 Filter chromaFilter;
30898 Bool32 forceExplicitReconstruction;
30899 };
30900 static_assert( sizeof( SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), "struct and wrapper have different size!" );
30901
30902 using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
30903
30904#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
30905 struct AndroidHardwareBufferFormatPropertiesANDROID
30906 {
30907 operator const VkAndroidHardwareBufferFormatPropertiesANDROID&() const
30908 {
30909 return *reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID*>(this);
30910 }
30911
30912 bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const
30913 {
30914 return ( sType == rhs.sType )
30915 && ( pNext == rhs.pNext )
30916 && ( format == rhs.format )
30917 && ( externalFormat == rhs.externalFormat )
30918 && ( formatFeatures == rhs.formatFeatures )
30919 && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents )
30920 && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel )
30921 && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange )
30922 && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset )
30923 && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
30924 }
30925
30926 bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const
30927 {
30928 return !operator==( rhs );
30929 }
30930
30931 private:
30932 StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
30933
30934 public:
30935 void* pNext = nullptr;
30936 Format format;
30937 uint64_t externalFormat;
30938 FormatFeatureFlags formatFeatures;
30939 ComponentMapping samplerYcbcrConversionComponents;
30940 SamplerYcbcrModelConversion suggestedYcbcrModel;
30941 SamplerYcbcrRange suggestedYcbcrRange;
30942 ChromaLocation suggestedXChromaOffset;
30943 ChromaLocation suggestedYChromaOffset;
30944 };
30945 static_assert( sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), "struct and wrapper have different size!" );
30946#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
30947
30948 enum class BlendOverlapEXT
30949 {
30950 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
30951 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
30952 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
30953 };
30954
30955 struct PipelineColorBlendAdvancedStateCreateInfoEXT
30956 {
30957 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0,
30958 Bool32 dstPremultiplied_ = 0,
30959 BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
30960 : srcPremultiplied( srcPremultiplied_ )
30961 , dstPremultiplied( dstPremultiplied_ )
30962 , blendOverlap( blendOverlap_ )
30963 {
30964 }
30965
30966 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
30967 {
30968 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
30969 }
30970
30971 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
30972 {
30973 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
30974 return *this;
30975 }
30976 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
30977 {
30978 pNext = pNext_;
30979 return *this;
30980 }
30981
30982 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
30983 {
30984 srcPremultiplied = srcPremultiplied_;
30985 return *this;
30986 }
30987
30988 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
30989 {
30990 dstPremultiplied = dstPremultiplied_;
30991 return *this;
30992 }
30993
30994 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
30995 {
30996 blendOverlap = blendOverlap_;
30997 return *this;
30998 }
30999
31000 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
31001 {
31002 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
31003 }
31004
31005 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
31006 {
31007 return ( sType == rhs.sType )
31008 && ( pNext == rhs.pNext )
31009 && ( srcPremultiplied == rhs.srcPremultiplied )
31010 && ( dstPremultiplied == rhs.dstPremultiplied )
31011 && ( blendOverlap == rhs.blendOverlap );
31012 }
31013
31014 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
31015 {
31016 return !operator==( rhs );
31017 }
31018
31019 private:
31020 StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
31021
31022 public:
31023 const void* pNext = nullptr;
31024 Bool32 srcPremultiplied;
31025 Bool32 dstPremultiplied;
31026 BlendOverlapEXT blendOverlap;
31027 };
31028 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
31029
31030 enum class CoverageModulationModeNV
31031 {
31032 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
31033 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
31034 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
31035 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
31036 };
31037
31038 struct PipelineCoverageModulationStateCreateInfoNV
31039 {
31040 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(),
31041 CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone,
31042 Bool32 coverageModulationTableEnable_ = 0,
31043 uint32_t coverageModulationTableCount_ = 0,
31044 const float* pCoverageModulationTable_ = nullptr )
31045 : flags( flags_ )
31046 , coverageModulationMode( coverageModulationMode_ )
31047 , coverageModulationTableEnable( coverageModulationTableEnable_ )
31048 , coverageModulationTableCount( coverageModulationTableCount_ )
31049 , pCoverageModulationTable( pCoverageModulationTable_ )
31050 {
31051 }
31052
31053 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
31054 {
31055 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
31056 }
31057
31058 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
31059 {
31060 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
31061 return *this;
31062 }
31063 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
31064 {
31065 pNext = pNext_;
31066 return *this;
31067 }
31068
31069 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
31070 {
31071 flags = flags_;
31072 return *this;
31073 }
31074
31075 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
31076 {
31077 coverageModulationMode = coverageModulationMode_;
31078 return *this;
31079 }
31080
31081 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
31082 {
31083 coverageModulationTableEnable = coverageModulationTableEnable_;
31084 return *this;
31085 }
31086
31087 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
31088 {
31089 coverageModulationTableCount = coverageModulationTableCount_;
31090 return *this;
31091 }
31092
31093 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
31094 {
31095 pCoverageModulationTable = pCoverageModulationTable_;
31096 return *this;
31097 }
31098
31099 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
31100 {
31101 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
31102 }
31103
31104 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
31105 {
31106 return ( sType == rhs.sType )
31107 && ( pNext == rhs.pNext )
31108 && ( flags == rhs.flags )
31109 && ( coverageModulationMode == rhs.coverageModulationMode )
31110 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
31111 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
31112 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
31113 }
31114
31115 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
31116 {
31117 return !operator==( rhs );
31118 }
31119
31120 private:
31121 StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
31122
31123 public:
31124 const void* pNext = nullptr;
31125 PipelineCoverageModulationStateCreateFlagsNV flags;
31126 CoverageModulationModeNV coverageModulationMode;
31127 Bool32 coverageModulationTableEnable;
31128 uint32_t coverageModulationTableCount;
31129 const float* pCoverageModulationTable;
31130 };
31131 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
31132
31133 enum class ValidationCacheHeaderVersionEXT
31134 {
31135 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
31136 };
31137
31138 enum class ShaderInfoTypeAMD
31139 {
31140 eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
31141 eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD,
31142 eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
31143 };
31144
31145 enum class QueueGlobalPriorityEXT
31146 {
31147 eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
31148 eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
31149 eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
31150 eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
31151 };
31152
31153 struct DeviceQueueGlobalPriorityCreateInfoEXT
31154 {
31155 DeviceQueueGlobalPriorityCreateInfoEXT( QueueGlobalPriorityEXT globalPriority_ = QueueGlobalPriorityEXT::eLow )
31156 : globalPriority( globalPriority_ )
31157 {
31158 }
31159
31160 DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
31161 {
31162 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
31163 }
31164
31165 DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
31166 {
31167 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
31168 return *this;
31169 }
31170 DeviceQueueGlobalPriorityCreateInfoEXT& setPNext( const void* pNext_ )
31171 {
31172 pNext = pNext_;
31173 return *this;
31174 }
31175
31176 DeviceQueueGlobalPriorityCreateInfoEXT& setGlobalPriority( QueueGlobalPriorityEXT globalPriority_ )
31177 {
31178 globalPriority = globalPriority_;
31179 return *this;
31180 }
31181
31182 operator const VkDeviceQueueGlobalPriorityCreateInfoEXT&() const
31183 {
31184 return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
31185 }
31186
31187 bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
31188 {
31189 return ( sType == rhs.sType )
31190 && ( pNext == rhs.pNext )
31191 && ( globalPriority == rhs.globalPriority );
31192 }
31193
31194 bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
31195 {
31196 return !operator==( rhs );
31197 }
31198
31199 private:
31200 StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
31201
31202 public:
31203 const void* pNext = nullptr;
31204 QueueGlobalPriorityEXT globalPriority;
31205 };
31206 static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" );
31207
31208 enum class DebugUtilsMessageSeverityFlagBitsEXT
31209 {
31210 eVerbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,
31211 eInfo = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,
31212 eWarning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,
31213 eError = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
31214 };
31215
31216 using DebugUtilsMessageSeverityFlagsEXT = Flags<DebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageSeverityFlagsEXT>;
31217
31218 VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator|( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 )
31219 {
31220 return DebugUtilsMessageSeverityFlagsEXT( bit0 ) | bit1;
31221 }
31222
31223 VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator~( DebugUtilsMessageSeverityFlagBitsEXT bits )
31224 {
31225 return ~( DebugUtilsMessageSeverityFlagsEXT( bits ) );
31226 }
31227
31228 template <> struct FlagTraits<DebugUtilsMessageSeverityFlagBitsEXT>
31229 {
31230 enum
31231 {
31232 allFlags = VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eInfo) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eWarning) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eError)
31233 };
31234 };
31235
31236 enum class DebugUtilsMessageTypeFlagBitsEXT
31237 {
31238 eGeneral = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,
31239 eValidation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,
31240 ePerformance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT
31241 };
31242
31243 using DebugUtilsMessageTypeFlagsEXT = Flags<DebugUtilsMessageTypeFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT>;
31244
31245 VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator|( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 )
31246 {
31247 return DebugUtilsMessageTypeFlagsEXT( bit0 ) | bit1;
31248 }
31249
31250 VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator~( DebugUtilsMessageTypeFlagBitsEXT bits )
31251 {
31252 return ~( DebugUtilsMessageTypeFlagsEXT( bits ) );
31253 }
31254
31255 template <> struct FlagTraits<DebugUtilsMessageTypeFlagBitsEXT>
31256 {
31257 enum
31258 {
31259 allFlags = VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eGeneral) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eValidation) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::ePerformance)
31260 };
31261 };
31262
31263 struct DebugUtilsMessengerCreateInfoEXT
31264 {
31265 DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateFlagsEXT flags_ = DebugUtilsMessengerCreateFlagsEXT(),
31266 DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = DebugUtilsMessageSeverityFlagsEXT(),
31267 DebugUtilsMessageTypeFlagsEXT messageType_ = DebugUtilsMessageTypeFlagsEXT(),
31268 PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = nullptr,
31269 void* pUserData_ = nullptr )
31270 : flags( flags_ )
31271 , messageSeverity( messageSeverity_ )
31272 , messageType( messageType_ )
31273 , pfnUserCallback( pfnUserCallback_ )
31274 , pUserData( pUserData_ )
31275 {
31276 }
31277
31278 DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
31279 {
31280 memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
31281 }
31282
31283 DebugUtilsMessengerCreateInfoEXT& operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
31284 {
31285 memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
31286 return *this;
31287 }
31288 DebugUtilsMessengerCreateInfoEXT& setPNext( const void* pNext_ )
31289 {
31290 pNext = pNext_;
31291 return *this;
31292 }
31293
31294 DebugUtilsMessengerCreateInfoEXT& setFlags( DebugUtilsMessengerCreateFlagsEXT flags_ )
31295 {
31296 flags = flags_;
31297 return *this;
31298 }
31299
31300 DebugUtilsMessengerCreateInfoEXT& setMessageSeverity( DebugUtilsMessageSeverityFlagsEXT messageSeverity_ )
31301 {
31302 messageSeverity = messageSeverity_;
31303 return *this;
31304 }
31305
31306 DebugUtilsMessengerCreateInfoEXT& setMessageType( DebugUtilsMessageTypeFlagsEXT messageType_ )
31307 {
31308 messageType = messageType_;
31309 return *this;
31310 }
31311
31312 DebugUtilsMessengerCreateInfoEXT& setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ )
31313 {
31314 pfnUserCallback = pfnUserCallback_;
31315 return *this;
31316 }
31317
31318 DebugUtilsMessengerCreateInfoEXT& setPUserData( void* pUserData_ )
31319 {
31320 pUserData = pUserData_;
31321 return *this;
31322 }
31323
31324 operator const VkDebugUtilsMessengerCreateInfoEXT&() const
31325 {
31326 return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>(this);
31327 }
31328
31329 bool operator==( DebugUtilsMessengerCreateInfoEXT const& rhs ) const
31330 {
31331 return ( sType == rhs.sType )
31332 && ( pNext == rhs.pNext )
31333 && ( flags == rhs.flags )
31334 && ( messageSeverity == rhs.messageSeverity )
31335 && ( messageType == rhs.messageType )
31336 && ( pfnUserCallback == rhs.pfnUserCallback )
31337 && ( pUserData == rhs.pUserData );
31338 }
31339
31340 bool operator!=( DebugUtilsMessengerCreateInfoEXT const& rhs ) const
31341 {
31342 return !operator==( rhs );
31343 }
31344
31345 private:
31346 StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
31347
31348 public:
31349 const void* pNext = nullptr;
31350 DebugUtilsMessengerCreateFlagsEXT flags;
31351 DebugUtilsMessageSeverityFlagsEXT messageSeverity;
31352 DebugUtilsMessageTypeFlagsEXT messageType;
31353 PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
31354 void* pUserData;
31355 };
31356 static_assert( sizeof( DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), "struct and wrapper have different size!" );
31357
31358 enum class ConservativeRasterizationModeEXT
31359 {
31360 eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
31361 eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,
31362 eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
31363 };
31364
31365 struct PipelineRasterizationConservativeStateCreateInfoEXT
31366 {
31367 PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = PipelineRasterizationConservativeStateCreateFlagsEXT(),
31368 ConservativeRasterizationModeEXT conservativeRasterizationMode_ = ConservativeRasterizationModeEXT::eDisabled,
31369 float extraPrimitiveOverestimationSize_ = 0 )
31370 : flags( flags_ )
31371 , conservativeRasterizationMode( conservativeRasterizationMode_ )
31372 , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ )
31373 {
31374 }
31375
31376 PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
31377 {
31378 memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
31379 }
31380
31381 PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
31382 {
31383 memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
31384 return *this;
31385 }
31386 PipelineRasterizationConservativeStateCreateInfoEXT& setPNext( const void* pNext_ )
31387 {
31388 pNext = pNext_;
31389 return *this;
31390 }
31391
31392 PipelineRasterizationConservativeStateCreateInfoEXT& setFlags( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ )
31393 {
31394 flags = flags_;
31395 return *this;
31396 }
31397
31398 PipelineRasterizationConservativeStateCreateInfoEXT& setConservativeRasterizationMode( ConservativeRasterizationModeEXT conservativeRasterizationMode_ )
31399 {
31400 conservativeRasterizationMode = conservativeRasterizationMode_;
31401 return *this;
31402 }
31403
31404 PipelineRasterizationConservativeStateCreateInfoEXT& setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ )
31405 {
31406 extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
31407 return *this;
31408 }
31409
31410 operator const VkPipelineRasterizationConservativeStateCreateInfoEXT&() const
31411 {
31412 return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this);
31413 }
31414
31415 bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
31416 {
31417 return ( sType == rhs.sType )
31418 && ( pNext == rhs.pNext )
31419 && ( flags == rhs.flags )
31420 && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode )
31421 && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
31422 }
31423
31424 bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
31425 {
31426 return !operator==( rhs );
31427 }
31428
31429 private:
31430 StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
31431
31432 public:
31433 const void* pNext = nullptr;
31434 PipelineRasterizationConservativeStateCreateFlagsEXT flags;
31435 ConservativeRasterizationModeEXT conservativeRasterizationMode;
31436 float extraPrimitiveOverestimationSize;
31437 };
31438 static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "struct and wrapper have different size!" );
31439
31440 enum class DescriptorBindingFlagBitsEXT
31441 {
31442 eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,
31443 eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,
31444 ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,
31445 eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
31446 };
31447
31448 using DescriptorBindingFlagsEXT = Flags<DescriptorBindingFlagBitsEXT, VkDescriptorBindingFlagsEXT>;
31449
31450 VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator|( DescriptorBindingFlagBitsEXT bit0, DescriptorBindingFlagBitsEXT bit1 )
31451 {
31452 return DescriptorBindingFlagsEXT( bit0 ) | bit1;
31453 }
31454
31455 VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator~( DescriptorBindingFlagBitsEXT bits )
31456 {
31457 return ~( DescriptorBindingFlagsEXT( bits ) );
31458 }
31459
31460 template <> struct FlagTraits<DescriptorBindingFlagBitsEXT>
31461 {
31462 enum
31463 {
31464 allFlags = VkFlags(DescriptorBindingFlagBitsEXT::eUpdateAfterBind) | VkFlags(DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending) | VkFlags(DescriptorBindingFlagBitsEXT::ePartiallyBound) | VkFlags(DescriptorBindingFlagBitsEXT::eVariableDescriptorCount)
31465 };
31466 };
31467
31468 struct DescriptorSetLayoutBindingFlagsCreateInfoEXT
31469 {
31470 DescriptorSetLayoutBindingFlagsCreateInfoEXT( uint32_t bindingCount_ = 0,
31471 const DescriptorBindingFlagsEXT* pBindingFlags_ = nullptr )
31472 : bindingCount( bindingCount_ )
31473 , pBindingFlags( pBindingFlags_ )
31474 {
31475 }
31476
31477 DescriptorSetLayoutBindingFlagsCreateInfoEXT( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
31478 {
31479 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
31480 }
31481
31482 DescriptorSetLayoutBindingFlagsCreateInfoEXT& operator=( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
31483 {
31484 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
31485 return *this;
31486 }
31487 DescriptorSetLayoutBindingFlagsCreateInfoEXT& setPNext( const void* pNext_ )
31488 {
31489 pNext = pNext_;
31490 return *this;
31491 }
31492
31493 DescriptorSetLayoutBindingFlagsCreateInfoEXT& setBindingCount( uint32_t bindingCount_ )
31494 {
31495 bindingCount = bindingCount_;
31496 return *this;
31497 }
31498
31499 DescriptorSetLayoutBindingFlagsCreateInfoEXT& setPBindingFlags( const DescriptorBindingFlagsEXT* pBindingFlags_ )
31500 {
31501 pBindingFlags = pBindingFlags_;
31502 return *this;
31503 }
31504
31505 operator const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT&() const
31506 {
31507 return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*>(this);
31508 }
31509
31510 bool operator==( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const
31511 {
31512 return ( sType == rhs.sType )
31513 && ( pNext == rhs.pNext )
31514 && ( bindingCount == rhs.bindingCount )
31515 && ( pBindingFlags == rhs.pBindingFlags );
31516 }
31517
31518 bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const
31519 {
31520 return !operator==( rhs );
31521 }
31522
31523 private:
31524 StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT;
31525
31526 public:
31527 const void* pNext = nullptr;
31528 uint32_t bindingCount;
31529 const DescriptorBindingFlagsEXT* pBindingFlags;
31530 };
31531 static_assert( sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT ), "struct and wrapper have different size!" );
31532
31533 enum class VendorId
31534 {
31535 eViv = VK_VENDOR_ID_VIV,
31536 eVsi = VK_VENDOR_ID_VSI,
31537 eKazan = VK_VENDOR_ID_KAZAN
31538 };
31539
31540 enum class ConditionalRenderingFlagBitsEXT
31541 {
31542 eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT
31543 };
31544
31545 using ConditionalRenderingFlagsEXT = Flags<ConditionalRenderingFlagBitsEXT, VkConditionalRenderingFlagsEXT>;
31546
31547 VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator|( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 )
31548 {
31549 return ConditionalRenderingFlagsEXT( bit0 ) | bit1;
31550 }
31551
31552 VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator~( ConditionalRenderingFlagBitsEXT bits )
31553 {
31554 return ~( ConditionalRenderingFlagsEXT( bits ) );
31555 }
31556
31557 template <> struct FlagTraits<ConditionalRenderingFlagBitsEXT>
31558 {
31559 enum
31560 {
31561 allFlags = VkFlags(ConditionalRenderingFlagBitsEXT::eInverted)
31562 };
31563 };
31564
31565 struct ConditionalRenderingBeginInfoEXT
31566 {
31567 ConditionalRenderingBeginInfoEXT( Buffer buffer_ = Buffer(),
31568 DeviceSize offset_ = 0,
31569 ConditionalRenderingFlagsEXT flags_ = ConditionalRenderingFlagsEXT() )
31570 : buffer( buffer_ )
31571 , offset( offset_ )
31572 , flags( flags_ )
31573 {
31574 }
31575
31576 ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs )
31577 {
31578 memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
31579 }
31580
31581 ConditionalRenderingBeginInfoEXT& operator=( VkConditionalRenderingBeginInfoEXT const & rhs )
31582 {
31583 memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
31584 return *this;
31585 }
31586 ConditionalRenderingBeginInfoEXT& setPNext( const void* pNext_ )
31587 {
31588 pNext = pNext_;
31589 return *this;
31590 }
31591
31592 ConditionalRenderingBeginInfoEXT& setBuffer( Buffer buffer_ )
31593 {
31594 buffer = buffer_;
31595 return *this;
31596 }
31597
31598 ConditionalRenderingBeginInfoEXT& setOffset( DeviceSize offset_ )
31599 {
31600 offset = offset_;
31601 return *this;
31602 }
31603
31604 ConditionalRenderingBeginInfoEXT& setFlags( ConditionalRenderingFlagsEXT flags_ )
31605 {
31606 flags = flags_;
31607 return *this;
31608 }
31609
31610 operator const VkConditionalRenderingBeginInfoEXT&() const
31611 {
31612 return *reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>(this);
31613 }
31614
31615 bool operator==( ConditionalRenderingBeginInfoEXT const& rhs ) const
31616 {
31617 return ( sType == rhs.sType )
31618 && ( pNext == rhs.pNext )
31619 && ( buffer == rhs.buffer )
31620 && ( offset == rhs.offset )
31621 && ( flags == rhs.flags );
31622 }
31623
31624 bool operator!=( ConditionalRenderingBeginInfoEXT const& rhs ) const
31625 {
31626 return !operator==( rhs );
31627 }
31628
31629 private:
31630 StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT;
31631
31632 public:
31633 const void* pNext = nullptr;
31634 Buffer buffer;
31635 DeviceSize offset;
31636 ConditionalRenderingFlagsEXT flags;
31637 };
31638 static_assert( sizeof( ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), "struct and wrapper have different size!" );
31639
31640 template<typename Dispatch = DispatchLoaderStatic>
31641 Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d = Dispatch() );
31642#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31643 template<typename Dispatch = DispatchLoaderStatic>
31644 ResultValueType<uint32_t>::type enumerateInstanceVersion(Dispatch const &d = Dispatch() );
31645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31646
31647 template<typename Dispatch>
31648 VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d)
31649 {
31650 return static_cast<Result>( d.vkEnumerateInstanceVersion( pApiVersion ) );
31651 }
31652#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31653 template<typename Dispatch>
31654 VULKAN_HPP_INLINE ResultValueType<uint32_t>::type enumerateInstanceVersion(Dispatch const &d )
31655 {
31656 uint32_t apiVersion;
31657 Result result = static_cast<Result>( d.vkEnumerateInstanceVersion( &apiVersion ) );
31658 return createResultValue( result, apiVersion, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceVersion" );
31659 }
31660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31661
31662
31663 template<typename Dispatch = DispatchLoaderStatic>
31664 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d = Dispatch() );
31665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31666 template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
31667 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Dispatch const &d = Dispatch() );
31668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31669
31670 template<typename Dispatch>
31671 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d)
31672 {
31673 return static_cast<Result>( d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
31674 }
31675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31676 template <typename Allocator, typename Dispatch>
31677 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Dispatch const &d )
31678 {
31679 std::vector<LayerProperties,Allocator> properties;
31680 uint32_t propertyCount;
31681 Result result;
31682 do
31683 {
31684 result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
31685 if ( ( result == Result::eSuccess ) && propertyCount )
31686 {
31687 properties.resize( propertyCount );
31688 result = static_cast<Result>( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
31689 }
31690 } while ( result == Result::eIncomplete );
31691 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
31692 properties.resize( propertyCount );
31693 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" );
31694 }
31695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31696
31697
31698 template<typename Dispatch = DispatchLoaderStatic>
31699 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d = Dispatch() );
31700#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31701 template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
31702 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr, Dispatch const &d = Dispatch() );
31703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31704
31705 template<typename Dispatch>
31706 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d)
31707 {
31708 return static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
31709 }
31710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31711 template <typename Allocator, typename Dispatch>
31712 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName, Dispatch const &d )
31713 {
31714 std::vector<ExtensionProperties,Allocator> properties;
31715 uint32_t propertyCount;
31716 Result result;
31717 do
31718 {
31719 result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
31720 if ( ( result == Result::eSuccess ) && propertyCount )
31721 {
31722 properties.resize( propertyCount );
31723 result = static_cast<Result>( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
31724 }
31725 } while ( result == Result::eIncomplete );
31726 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
31727 properties.resize( propertyCount );
31728 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" );
31729 }
31730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31731
31732
31733 // forward declarations
31734 struct CmdProcessCommandsInfoNVX;
31735
31736 class CommandBuffer
31737 {
31738 public:
31739 VULKAN_HPP_CONSTEXPR CommandBuffer()
31740 : m_commandBuffer(VK_NULL_HANDLE)
31741 {}
31742
31743 VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t )
31744 : m_commandBuffer(VK_NULL_HANDLE)
31745 {}
31746
31747 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
31748 : m_commandBuffer( commandBuffer )
31749 {}
31750
31751#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
31752 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
31753 {
31754 m_commandBuffer = commandBuffer;
31755 return *this;
31756 }
31757#endif
31758
31759 CommandBuffer & operator=( std::nullptr_t )
31760 {
31761 m_commandBuffer = VK_NULL_HANDLE;
31762 return *this;
31763 }
31764
31765 bool operator==( CommandBuffer const & rhs ) const
31766 {
31767 return m_commandBuffer == rhs.m_commandBuffer;
31768 }
31769
31770 bool operator!=(CommandBuffer const & rhs ) const
31771 {
31772 return m_commandBuffer != rhs.m_commandBuffer;
31773 }
31774
31775 bool operator<(CommandBuffer const & rhs ) const
31776 {
31777 return m_commandBuffer < rhs.m_commandBuffer;
31778 }
31779
31780 template<typename Dispatch = DispatchLoaderStatic>
31781 Result begin( const CommandBufferBeginInfo* pBeginInfo, Dispatch const &d = Dispatch() ) const;
31782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31783 template<typename Dispatch = DispatchLoaderStatic>
31784 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d = Dispatch() ) const;
31785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31786
31787#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
31788 template<typename Dispatch = DispatchLoaderStatic>
31789 Result end(Dispatch const &d = Dispatch() ) const;
31790#else
31791 template<typename Dispatch = DispatchLoaderStatic>
31792 ResultValueType<void>::type end(Dispatch const &d = Dispatch() ) const;
31793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31794
31795#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
31796 template<typename Dispatch = DispatchLoaderStatic>
31797 Result reset( CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const;
31798#else
31799 template<typename Dispatch = DispatchLoaderStatic>
31800 ResultValueType<void>::type reset( CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const;
31801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31802
31803 template<typename Dispatch = DispatchLoaderStatic>
31804 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d = Dispatch() ) const;
31805
31806 template<typename Dispatch = DispatchLoaderStatic>
31807 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports, Dispatch const &d = Dispatch() ) const;
31808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31809 template<typename Dispatch = DispatchLoaderStatic>
31810 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports, Dispatch const &d = Dispatch() ) const;
31811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31812
31813 template<typename Dispatch = DispatchLoaderStatic>
31814 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors, Dispatch const &d = Dispatch() ) const;
31815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31816 template<typename Dispatch = DispatchLoaderStatic>
31817 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors, Dispatch const &d = Dispatch() ) const;
31818#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31819
31820 template<typename Dispatch = DispatchLoaderStatic>
31821 void setLineWidth( float lineWidth, Dispatch const &d = Dispatch() ) const;
31822
31823 template<typename Dispatch = DispatchLoaderStatic>
31824 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d = Dispatch() ) const;
31825
31826 template<typename Dispatch = DispatchLoaderStatic>
31827 void setBlendConstants( const float blendConstants[4], Dispatch const &d = Dispatch() ) const;
31828
31829 template<typename Dispatch = DispatchLoaderStatic>
31830 void setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d = Dispatch() ) const;
31831
31832 template<typename Dispatch = DispatchLoaderStatic>
31833 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d = Dispatch() ) const;
31834
31835 template<typename Dispatch = DispatchLoaderStatic>
31836 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d = Dispatch() ) const;
31837
31838 template<typename Dispatch = DispatchLoaderStatic>
31839 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d = Dispatch() ) const;
31840
31841 template<typename Dispatch = DispatchLoaderStatic>
31842 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets, Dispatch const &d = Dispatch() ) const;
31843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31844 template<typename Dispatch = DispatchLoaderStatic>
31845 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets, Dispatch const &d = Dispatch() ) const;
31846#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31847
31848 template<typename Dispatch = DispatchLoaderStatic>
31849 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d = Dispatch() ) const;
31850
31851 template<typename Dispatch = DispatchLoaderStatic>
31852 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, Dispatch const &d = Dispatch() ) const;
31853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31854 template<typename Dispatch = DispatchLoaderStatic>
31855 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, Dispatch const &d = Dispatch() ) const;
31856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31857
31858 template<typename Dispatch = DispatchLoaderStatic>
31859 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const;
31860
31861 template<typename Dispatch = DispatchLoaderStatic>
31862 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const;
31863
31864 template<typename Dispatch = DispatchLoaderStatic>
31865 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
31866
31867 template<typename Dispatch = DispatchLoaderStatic>
31868 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
31869
31870 template<typename Dispatch = DispatchLoaderStatic>
31871 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const;
31872
31873 template<typename Dispatch = DispatchLoaderStatic>
31874 void dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d = Dispatch() ) const;
31875
31876 template<typename Dispatch = DispatchLoaderStatic>
31877 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions, Dispatch const &d = Dispatch() ) const;
31878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31879 template<typename Dispatch = DispatchLoaderStatic>
31880 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions, Dispatch const &d = Dispatch() ) const;
31881#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31882
31883 template<typename Dispatch = DispatchLoaderStatic>
31884 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
31885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31886 template<typename Dispatch = DispatchLoaderStatic>
31887 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions, Dispatch const &d = Dispatch() ) const;
31888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31889
31890 template<typename Dispatch = DispatchLoaderStatic>
31891 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter, Dispatch const &d = Dispatch() ) const;
31892#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31893 template<typename Dispatch = DispatchLoaderStatic>
31894 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter, Dispatch const &d = Dispatch() ) const;
31895#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31896
31897 template<typename Dispatch = DispatchLoaderStatic>
31898 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
31899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31900 template<typename Dispatch = DispatchLoaderStatic>
31901 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d = Dispatch() ) const;
31902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31903
31904 template<typename Dispatch = DispatchLoaderStatic>
31905 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const;
31906#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31907 template<typename Dispatch = DispatchLoaderStatic>
31908 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d = Dispatch() ) const;
31909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31910
31911 template<typename Dispatch = DispatchLoaderStatic>
31912 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData, Dispatch const &d = Dispatch() ) const;
31913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31914 template <typename T, typename Dispatch = DispatchLoaderStatic>
31915 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data, Dispatch const &d = Dispatch() ) const;
31916#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31917
31918 template<typename Dispatch = DispatchLoaderStatic>
31919 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d = Dispatch() ) const;
31920
31921 template<typename Dispatch = DispatchLoaderStatic>
31922 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const;
31923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31924 template<typename Dispatch = DispatchLoaderStatic>
31925 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d = Dispatch() ) const;
31926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31927
31928 template<typename Dispatch = DispatchLoaderStatic>
31929 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const;
31930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31931 template<typename Dispatch = DispatchLoaderStatic>
31932 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d = Dispatch() ) const;
31933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31934
31935 template<typename Dispatch = DispatchLoaderStatic>
31936 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects, Dispatch const &d = Dispatch() ) const;
31937#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31938 template<typename Dispatch = DispatchLoaderStatic>
31939 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects, Dispatch const &d = Dispatch() ) const;
31940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31941
31942 template<typename Dispatch = DispatchLoaderStatic>
31943 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions, Dispatch const &d = Dispatch() ) const;
31944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31945 template<typename Dispatch = DispatchLoaderStatic>
31946 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions, Dispatch const &d = Dispatch() ) const;
31947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31948
31949 template<typename Dispatch = DispatchLoaderStatic>
31950 void setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const;
31951
31952 template<typename Dispatch = DispatchLoaderStatic>
31953 void resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const;
31954
31955 template<typename Dispatch = DispatchLoaderStatic>
31956 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, Dispatch const &d = Dispatch() ) const;
31957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31958 template<typename Dispatch = DispatchLoaderStatic>
31959 void waitEvents( ArrayProxy<const Event> events, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers, Dispatch const &d = Dispatch() ) const;
31960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31961
31962 template<typename Dispatch = DispatchLoaderStatic>
31963 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, Dispatch const &d = Dispatch() ) const;
31964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31965 template<typename Dispatch = DispatchLoaderStatic>
31966 void pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers, Dispatch const &d = Dispatch() ) const;
31967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31968
31969 template<typename Dispatch = DispatchLoaderStatic>
31970 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d = Dispatch() ) const;
31971
31972 template<typename Dispatch = DispatchLoaderStatic>
31973 void endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const;
31974
31975 template<typename Dispatch = DispatchLoaderStatic>
31976 void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d = Dispatch() ) const;
31977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31978 template<typename Dispatch = DispatchLoaderStatic>
31979 void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d = Dispatch() ) const;
31980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31981
31982 template<typename Dispatch = DispatchLoaderStatic>
31983 void endConditionalRenderingEXT(Dispatch const &d = Dispatch() ) const;
31984
31985 template<typename Dispatch = DispatchLoaderStatic>
31986 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d = Dispatch() ) const;
31987
31988 template<typename Dispatch = DispatchLoaderStatic>
31989 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const;
31990
31991 template<typename Dispatch = DispatchLoaderStatic>
31992 void copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
31993
31994 template<typename Dispatch = DispatchLoaderStatic>
31995 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d = Dispatch() ) const;
31996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31997 template <typename T, typename Dispatch = DispatchLoaderStatic>
31998 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values, Dispatch const &d = Dispatch() ) const;
31999#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32000
32001 template<typename Dispatch = DispatchLoaderStatic>
32002 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents, Dispatch const &d = Dispatch() ) const;
32003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32004 template<typename Dispatch = DispatchLoaderStatic>
32005 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents, Dispatch const &d = Dispatch() ) const;
32006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32007
32008 template<typename Dispatch = DispatchLoaderStatic>
32009 void nextSubpass( SubpassContents contents, Dispatch const &d = Dispatch() ) const;
32010
32011 template<typename Dispatch = DispatchLoaderStatic>
32012 void endRenderPass(Dispatch const &d = Dispatch() ) const;
32013
32014 template<typename Dispatch = DispatchLoaderStatic>
32015 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
32016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32017 template<typename Dispatch = DispatchLoaderStatic>
32018 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
32019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32020
32021 template<typename Dispatch = DispatchLoaderStatic>
32022 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const;
32023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32024 template<typename Dispatch = DispatchLoaderStatic>
32025 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const;
32026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32027
32028 template<typename Dispatch = DispatchLoaderStatic>
32029 void debugMarkerEndEXT(Dispatch const &d = Dispatch() ) const;
32030
32031 template<typename Dispatch = DispatchLoaderStatic>
32032 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const;
32033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32034 template<typename Dispatch = DispatchLoaderStatic>
32035 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const;
32036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32037
32038 template<typename Dispatch = DispatchLoaderStatic>
32039 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
32040
32041 template<typename Dispatch = DispatchLoaderStatic>
32042 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
32043
32044 template<typename Dispatch = DispatchLoaderStatic>
32045 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d = Dispatch() ) const;
32046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32047 template<typename Dispatch = DispatchLoaderStatic>
32048 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d = Dispatch() ) const;
32049#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32050
32051 template<typename Dispatch = DispatchLoaderStatic>
32052 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d = Dispatch() ) const;
32053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32054 template<typename Dispatch = DispatchLoaderStatic>
32055 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d = Dispatch() ) const;
32056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32057
32058 template<typename Dispatch = DispatchLoaderStatic>
32059 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, Dispatch const &d = Dispatch() ) const;
32060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32061 template<typename Dispatch = DispatchLoaderStatic>
32062 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites, Dispatch const &d = Dispatch() ) const;
32063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32064
32065 template<typename Dispatch = DispatchLoaderStatic>
32066 void setDeviceMask( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const;
32067
32068 template<typename Dispatch = DispatchLoaderStatic>
32069 void setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const;
32070
32071 template<typename Dispatch = DispatchLoaderStatic>
32072 void dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const;
32073
32074 template<typename Dispatch = DispatchLoaderStatic>
32075 void dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const;
32076
32077 template<typename Dispatch = DispatchLoaderStatic>
32078 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d = Dispatch() ) const;
32079
32080 template<typename Dispatch = DispatchLoaderStatic>
32081 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings, Dispatch const &d = Dispatch() ) const;
32082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32083 template<typename Dispatch = DispatchLoaderStatic>
32084 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings, Dispatch const &d = Dispatch() ) const;
32085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32086
32087 template<typename Dispatch = DispatchLoaderStatic>
32088 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles, Dispatch const &d = Dispatch() ) const;
32089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32090 template<typename Dispatch = DispatchLoaderStatic>
32091 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles, Dispatch const &d = Dispatch() ) const;
32092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32093
32094 template<typename Dispatch = DispatchLoaderStatic>
32095 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d = Dispatch() ) const;
32096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32097 template<typename Dispatch = DispatchLoaderStatic>
32098 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d = Dispatch() ) const;
32099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32100
32101 template<typename Dispatch = DispatchLoaderStatic>
32102 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
32103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32104 template<typename Dispatch = DispatchLoaderStatic>
32105 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
32106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32107
32108 template<typename Dispatch = DispatchLoaderStatic>
32109 void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const;
32110
32111 template<typename Dispatch = DispatchLoaderStatic>
32112 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
32113#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32114 template<typename Dispatch = DispatchLoaderStatic>
32115 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
32116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32117
32118 template<typename Dispatch = DispatchLoaderStatic>
32119 void writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d = Dispatch() ) const;
32120
32121 template<typename Dispatch = DispatchLoaderStatic>
32122 void beginRenderPass2KHR( const RenderPassBeginInfo* pRenderPassBegin, const SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d = Dispatch() ) const;
32123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32124 template<typename Dispatch = DispatchLoaderStatic>
32125 void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d = Dispatch() ) const;
32126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32127
32128 template<typename Dispatch = DispatchLoaderStatic>
32129 void nextSubpass2KHR( const SubpassBeginInfoKHR* pSubpassBeginInfo, const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const;
32130#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32131 template<typename Dispatch = DispatchLoaderStatic>
32132 void nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const;
32133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32134
32135 template<typename Dispatch = DispatchLoaderStatic>
32136 void endRenderPass2KHR( const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const;
32137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32138 template<typename Dispatch = DispatchLoaderStatic>
32139 void endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const;
32140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32141
32142 template<typename Dispatch = DispatchLoaderStatic>
32143 void drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
32144
32145 template<typename Dispatch = DispatchLoaderStatic>
32146 void drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const;
32147
32148 template<typename Dispatch = DispatchLoaderStatic>
32149 void setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d = Dispatch() ) const;
32150
32151
32152
32153 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
32154 {
32155 return m_commandBuffer;
32156 }
32157
32158 explicit operator bool() const
32159 {
32160 return m_commandBuffer != VK_NULL_HANDLE;
32161 }
32162
32163 bool operator!() const
32164 {
32165 return m_commandBuffer == VK_NULL_HANDLE;
32166 }
32167
32168 private:
32169 VkCommandBuffer m_commandBuffer;
32170 };
32171
32172 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
32173
32174 template<typename Dispatch>
32175 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo, Dispatch const &d) const
32176 {
32177 return static_cast<Result>( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
32178 }
32179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32180 template<typename Dispatch>
32181 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d ) const
32182 {
32183 Result result = static_cast<Result>( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
32184 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::begin" );
32185 }
32186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32187
32188#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32189 template<typename Dispatch>
32190 VULKAN_HPP_INLINE Result CommandBuffer::end(Dispatch const &d) const
32191 {
32192 return static_cast<Result>( d.vkEndCommandBuffer( m_commandBuffer ) );
32193 }
32194#else
32195 template<typename Dispatch>
32196 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end(Dispatch const &d ) const
32197 {
32198 Result result = static_cast<Result>( d.vkEndCommandBuffer( m_commandBuffer ) );
32199 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::end" );
32200 }
32201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32202
32203#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32204 template<typename Dispatch>
32205 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags, Dispatch const &d) const
32206 {
32207 return static_cast<Result>( d.vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
32208 }
32209#else
32210 template<typename Dispatch>
32211 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags, Dispatch const &d ) const
32212 {
32213 Result result = static_cast<Result>( d.vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
32214 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::reset" );
32215 }
32216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32217
32218#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32219 template<typename Dispatch>
32220 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d) const
32221 {
32222 d.vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
32223 }
32224#else
32225 template<typename Dispatch>
32226 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const &d ) const
32227 {
32228 d.vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
32229 }
32230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32231
32232 template<typename Dispatch>
32233 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports, Dispatch const &d) const
32234 {
32235 d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
32236 }
32237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32238 template<typename Dispatch>
32239 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports, Dispatch const &d ) const
32240 {
32241 d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
32242 }
32243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32244
32245 template<typename Dispatch>
32246 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors, Dispatch const &d) const
32247 {
32248 d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
32249 }
32250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32251 template<typename Dispatch>
32252 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors, Dispatch const &d ) const
32253 {
32254 d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
32255 }
32256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32257
32258#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32259 template<typename Dispatch>
32260 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d) const
32261 {
32262 d.vkCmdSetLineWidth( m_commandBuffer, lineWidth );
32263 }
32264#else
32265 template<typename Dispatch>
32266 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d ) const
32267 {
32268 d.vkCmdSetLineWidth( m_commandBuffer, lineWidth );
32269 }
32270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32271
32272#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32273 template<typename Dispatch>
32274 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d) const
32275 {
32276 d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
32277 }
32278#else
32279 template<typename Dispatch>
32280 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d ) const
32281 {
32282 d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
32283 }
32284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32285
32286#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32287 template<typename Dispatch>
32288 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d) const
32289 {
32290 d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
32291 }
32292#else
32293 template<typename Dispatch>
32294 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d ) const
32295 {
32296 d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
32297 }
32298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32299
32300#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32301 template<typename Dispatch>
32302 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d) const
32303 {
32304 d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
32305 }
32306#else
32307 template<typename Dispatch>
32308 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d ) const
32309 {
32310 d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
32311 }
32312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32313
32314#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32315 template<typename Dispatch>
32316 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d) const
32317 {
32318 d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
32319 }
32320#else
32321 template<typename Dispatch>
32322 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d ) const
32323 {
32324 d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
32325 }
32326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32327
32328#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32329 template<typename Dispatch>
32330 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d) const
32331 {
32332 d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
32333 }
32334#else
32335 template<typename Dispatch>
32336 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d ) const
32337 {
32338 d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
32339 }
32340#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32341
32342#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32343 template<typename Dispatch>
32344 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d) const
32345 {
32346 d.vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
32347 }
32348#else
32349 template<typename Dispatch>
32350 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d ) const
32351 {
32352 d.vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
32353 }
32354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32355
32356 template<typename Dispatch>
32357 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, Dispatch const &d) const
32358 {
32359 d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
32360 }
32361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32362 template<typename Dispatch>
32363 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets, Dispatch const &d ) const
32364 {
32365 d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
32366 }
32367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32368
32369#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32370 template<typename Dispatch>
32371 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d) const
32372 {
32373 d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
32374 }
32375#else
32376 template<typename Dispatch>
32377 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const &d ) const
32378 {
32379 d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
32380 }
32381#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32382
32383 template<typename Dispatch>
32384 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets, Dispatch const &d) const
32385 {
32386 d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
32387 }
32388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32389 template<typename Dispatch>
32390 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets, Dispatch const &d ) const
32391 {
32392#ifdef VULKAN_HPP_NO_EXCEPTIONS
32393 VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
32394#else
32395 if ( buffers.size() != offsets.size() )
32396 {
32397 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
32398 }
32399#endif // VULKAN_HPP_NO_EXCEPTIONS
32400 d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
32401 }
32402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32403
32404#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32405 template<typename Dispatch>
32406 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d) const
32407 {
32408 d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
32409 }
32410#else
32411 template<typename Dispatch>
32412 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d ) const
32413 {
32414 d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
32415 }
32416#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32417
32418#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32419 template<typename Dispatch>
32420 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d) const
32421 {
32422 d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
32423 }
32424#else
32425 template<typename Dispatch>
32426 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d ) const
32427 {
32428 d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
32429 }
32430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32431
32432#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32433 template<typename Dispatch>
32434 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const
32435 {
32436 d.vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
32437 }
32438#else
32439 template<typename Dispatch>
32440 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const
32441 {
32442 d.vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
32443 }
32444#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32445
32446#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32447 template<typename Dispatch>
32448 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const
32449 {
32450 d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
32451 }
32452#else
32453 template<typename Dispatch>
32454 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const
32455 {
32456 d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
32457 }
32458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32459
32460#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32461 template<typename Dispatch>
32462 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const
32463 {
32464 d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
32465 }
32466#else
32467 template<typename Dispatch>
32468 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const
32469 {
32470 d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
32471 }
32472#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32473
32474#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32475 template<typename Dispatch>
32476 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d) const
32477 {
32478 d.vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
32479 }
32480#else
32481 template<typename Dispatch>
32482 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const &d ) const
32483 {
32484 d.vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
32485 }
32486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32487
32488 template<typename Dispatch>
32489 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions, Dispatch const &d) const
32490 {
32491 d.vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
32492 }
32493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32494 template<typename Dispatch>
32495 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions, Dispatch const &d ) const
32496 {
32497 d.vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
32498 }
32499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32500
32501 template<typename Dispatch>
32502 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions, Dispatch const &d) const
32503 {
32504 d.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 ) );
32505 }
32506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32507 template<typename Dispatch>
32508 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions, Dispatch const &d ) const
32509 {
32510 d.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() ) );
32511 }
32512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32513
32514 template<typename Dispatch>
32515 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter, Dispatch const &d) const
32516 {
32517 d.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 ) );
32518 }
32519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32520 template<typename Dispatch>
32521 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter, Dispatch const &d ) const
32522 {
32523 d.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 ) );
32524 }
32525#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32526
32527 template<typename Dispatch>
32528 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d) const
32529 {
32530 d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
32531 }
32532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32533 template<typename Dispatch>
32534 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d ) const
32535 {
32536 d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
32537 }
32538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32539
32540 template<typename Dispatch>
32541 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions, Dispatch const &d) const
32542 {
32543 d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
32544 }
32545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32546 template<typename Dispatch>
32547 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions, Dispatch const &d ) const
32548 {
32549 d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
32550 }
32551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32552
32553 template<typename Dispatch>
32554 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData, Dispatch const &d) const
32555 {
32556 d.vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
32557 }
32558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32559 template <typename T, typename Dispatch>
32560 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data, Dispatch const &d ) const
32561 {
32562 d.vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
32563 }
32564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32565
32566#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32567 template<typename Dispatch>
32568 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d) const
32569 {
32570 d.vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
32571 }
32572#else
32573 template<typename Dispatch>
32574 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const &d ) const
32575 {
32576 d.vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
32577 }
32578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32579
32580 template<typename Dispatch>
32581 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d) const
32582 {
32583 d.vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
32584 }
32585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32586 template<typename Dispatch>
32587 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d ) const
32588 {
32589 d.vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
32590 }
32591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32592
32593 template<typename Dispatch>
32594 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges, Dispatch const &d) const
32595 {
32596 d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
32597 }
32598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32599 template<typename Dispatch>
32600 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges, Dispatch const &d ) const
32601 {
32602 d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
32603 }
32604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32605
32606 template<typename Dispatch>
32607 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects, Dispatch const &d) const
32608 {
32609 d.vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
32610 }
32611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32612 template<typename Dispatch>
32613 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects, Dispatch const &d ) const
32614 {
32615 d.vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
32616 }
32617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32618
32619 template<typename Dispatch>
32620 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions, Dispatch const &d) const
32621 {
32622 d.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 ) );
32623 }
32624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32625 template<typename Dispatch>
32626 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions, Dispatch const &d ) const
32627 {
32628 d.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() ) );
32629 }
32630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32631
32632#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32633 template<typename Dispatch>
32634 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d) const
32635 {
32636 d.vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
32637 }
32638#else
32639 template<typename Dispatch>
32640 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d ) const
32641 {
32642 d.vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
32643 }
32644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32645
32646#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32647 template<typename Dispatch>
32648 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d) const
32649 {
32650 d.vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
32651 }
32652#else
32653 template<typename Dispatch>
32654 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const &d ) const
32655 {
32656 d.vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
32657 }
32658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32659
32660 template<typename Dispatch>
32661 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, Dispatch const &d) const
32662 {
32663 d.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 ) );
32664 }
32665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32666 template<typename Dispatch>
32667 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, Dispatch const &d ) const
32668 {
32669 d.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() ) );
32670 }
32671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32672
32673 template<typename Dispatch>
32674 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, Dispatch const &d) const
32675 {
32676 d.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 ) );
32677 }
32678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32679 template<typename Dispatch>
32680 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers, Dispatch const &d ) const
32681 {
32682 d.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() ) );
32683 }
32684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32685
32686#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32687 template<typename Dispatch>
32688 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d) const
32689 {
32690 d.vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
32691 }
32692#else
32693 template<typename Dispatch>
32694 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const &d ) const
32695 {
32696 d.vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
32697 }
32698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32699
32700#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32701 template<typename Dispatch>
32702 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d) const
32703 {
32704 d.vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
32705 }
32706#else
32707 template<typename Dispatch>
32708 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query, Dispatch const &d ) const
32709 {
32710 d.vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
32711 }
32712#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32713
32714 template<typename Dispatch>
32715 VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d) const
32716 {
32717 d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>( pConditionalRenderingBegin ) );
32718 }
32719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32720 template<typename Dispatch>
32721 VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d ) const
32722 {
32723 d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast<const VkConditionalRenderingBeginInfoEXT*>( &conditionalRenderingBegin ) );
32724 }
32725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32726
32727#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32728 template<typename Dispatch>
32729 VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d) const
32730 {
32731 d.vkCmdEndConditionalRenderingEXT( m_commandBuffer );
32732 }
32733#else
32734 template<typename Dispatch>
32735 VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d ) const
32736 {
32737 d.vkCmdEndConditionalRenderingEXT( m_commandBuffer );
32738 }
32739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32740
32741#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32742 template<typename Dispatch>
32743 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d) const
32744 {
32745 d.vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
32746 }
32747#else
32748 template<typename Dispatch>
32749 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d ) const
32750 {
32751 d.vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
32752 }
32753#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32754
32755#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32756 template<typename Dispatch>
32757 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d) const
32758 {
32759 d.vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
32760 }
32761#else
32762 template<typename Dispatch>
32763 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const &d ) const
32764 {
32765 d.vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
32766 }
32767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32768
32769#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32770 template<typename Dispatch>
32771 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags, Dispatch const &d) const
32772 {
32773 d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
32774 }
32775#else
32776 template<typename Dispatch>
32777 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags, Dispatch const &d ) const
32778 {
32779 d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
32780 }
32781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32782
32783 template<typename Dispatch>
32784 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d) const
32785 {
32786 d.vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
32787 }
32788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32789 template <typename T, typename Dispatch>
32790 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values, Dispatch const &d ) const
32791 {
32792 d.vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
32793 }
32794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32795
32796 template<typename Dispatch>
32797 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents, Dispatch const &d) const
32798 {
32799 d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
32800 }
32801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32802 template<typename Dispatch>
32803 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents, Dispatch const &d ) const
32804 {
32805 d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
32806 }
32807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32808
32809#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32810 template<typename Dispatch>
32811 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents, Dispatch const &d) const
32812 {
32813 d.vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
32814 }
32815#else
32816 template<typename Dispatch>
32817 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents, Dispatch const &d ) const
32818 {
32819 d.vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
32820 }
32821#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32822
32823#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32824 template<typename Dispatch>
32825 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d) const
32826 {
32827 d.vkCmdEndRenderPass( m_commandBuffer );
32828 }
32829#else
32830 template<typename Dispatch>
32831 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d ) const
32832 {
32833 d.vkCmdEndRenderPass( m_commandBuffer );
32834 }
32835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32836
32837 template<typename Dispatch>
32838 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
32839 {
32840 d.vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
32841 }
32842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32843 template<typename Dispatch>
32844 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
32845 {
32846 d.vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
32847 }
32848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32849
32850 template<typename Dispatch>
32851 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const
32852 {
32853 d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
32854 }
32855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32856 template<typename Dispatch>
32857 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const
32858 {
32859 d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
32860 }
32861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32862
32863#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32864 template<typename Dispatch>
32865 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d) const
32866 {
32867 d.vkCmdDebugMarkerEndEXT( m_commandBuffer );
32868 }
32869#else
32870 template<typename Dispatch>
32871 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d ) const
32872 {
32873 d.vkCmdDebugMarkerEndEXT( m_commandBuffer );
32874 }
32875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32876
32877 template<typename Dispatch>
32878 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const
32879 {
32880 d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
32881 }
32882#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32883 template<typename Dispatch>
32884 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const
32885 {
32886 d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
32887 }
32888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32889
32890#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32891 template<typename Dispatch>
32892 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
32893 {
32894 d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
32895 }
32896#else
32897 template<typename Dispatch>
32898 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
32899 {
32900 d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
32901 }
32902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32903
32904#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32905 template<typename Dispatch>
32906 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
32907 {
32908 d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
32909 }
32910#else
32911 template<typename Dispatch>
32912 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
32913 {
32914 d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
32915 }
32916#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32917
32918 template<typename Dispatch>
32919 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d) const
32920 {
32921 d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
32922 }
32923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32924 template<typename Dispatch>
32925 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d ) const
32926 {
32927 d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
32928 }
32929#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32930
32931 template<typename Dispatch>
32932 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d) const
32933 {
32934 d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
32935 }
32936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32937 template<typename Dispatch>
32938 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d ) const
32939 {
32940 d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
32941 }
32942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32943
32944 template<typename Dispatch>
32945 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, Dispatch const &d) const
32946 {
32947 d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
32948 }
32949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32950 template<typename Dispatch>
32951 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites, Dispatch const &d ) const
32952 {
32953 d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
32954 }
32955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32956
32957#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32958 template<typename Dispatch>
32959 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d) const
32960 {
32961 d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask );
32962 }
32963#else
32964 template<typename Dispatch>
32965 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d ) const
32966 {
32967 d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask );
32968 }
32969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32970
32971#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32972 template<typename Dispatch>
32973 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d) const
32974 {
32975 d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask );
32976 }
32977#else
32978 template<typename Dispatch>
32979 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d ) const
32980 {
32981 d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask );
32982 }
32983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32984
32985#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
32986 template<typename Dispatch>
32987 VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const
32988 {
32989 d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
32990 }
32991#else
32992 template<typename Dispatch>
32993 VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const
32994 {
32995 d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
32996 }
32997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32998
32999#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33000 template<typename Dispatch>
33001 VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const
33002 {
33003 d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
33004 }
33005#else
33006 template<typename Dispatch>
33007 VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const
33008 {
33009 d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
33010 }
33011#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33012
33013#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33014 template<typename Dispatch>
33015 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d) const
33016 {
33017 d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
33018 }
33019#else
33020 template<typename Dispatch>
33021 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d ) const
33022 {
33023 d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
33024 }
33025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33026
33027 template<typename Dispatch>
33028 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings, Dispatch const &d) const
33029 {
33030 d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
33031 }
33032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33033 template<typename Dispatch>
33034 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings, Dispatch const &d ) const
33035 {
33036 d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
33037 }
33038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33039
33040 template<typename Dispatch>
33041 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles, Dispatch const &d) const
33042 {
33043 d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
33044 }
33045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33046 template<typename Dispatch>
33047 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles, Dispatch const &d ) const
33048 {
33049 d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
33050 }
33051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33052
33053 template<typename Dispatch>
33054 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d) const
33055 {
33056 d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
33057 }
33058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33059 template<typename Dispatch>
33060 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d ) const
33061 {
33062 d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
33063 }
33064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33065
33066 template<typename Dispatch>
33067 VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
33068 {
33069 d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
33070 }
33071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33072 template<typename Dispatch>
33073 VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
33074 {
33075 d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
33076 }
33077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33078
33079#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33080 template<typename Dispatch>
33081 VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d) const
33082 {
33083 d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer );
33084 }
33085#else
33086 template<typename Dispatch>
33087 VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d ) const
33088 {
33089 d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer );
33090 }
33091#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33092
33093 template<typename Dispatch>
33094 VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
33095 {
33096 d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
33097 }
33098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33099 template<typename Dispatch>
33100 VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
33101 {
33102 d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
33103 }
33104#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33105
33106#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33107 template<typename Dispatch>
33108 VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d) const
33109 {
33110 d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkBuffer>( dstBuffer ), dstOffset, marker );
33111 }
33112#else
33113 template<typename Dispatch>
33114 VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const &d ) const
33115 {
33116 d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkBuffer>( dstBuffer ), dstOffset, marker );
33117 }
33118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33119
33120 template<typename Dispatch>
33121 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo* pRenderPassBegin, const SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d) const
33122 {
33123 d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), reinterpret_cast<const VkSubpassBeginInfoKHR*>( pSubpassBeginInfo ) );
33124 }
33125#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33126 template<typename Dispatch>
33127 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d ) const
33128 {
33129 d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), reinterpret_cast<const VkSubpassBeginInfoKHR*>( &subpassBeginInfo ) );
33130 }
33131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33132
33133 template<typename Dispatch>
33134 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfoKHR* pSubpassBeginInfo, const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const
33135 {
33136 d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassBeginInfoKHR*>( pSubpassBeginInfo ), reinterpret_cast<const VkSubpassEndInfoKHR*>( pSubpassEndInfo ) );
33137 }
33138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33139 template<typename Dispatch>
33140 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const
33141 {
33142 d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassBeginInfoKHR*>( &subpassBeginInfo ), reinterpret_cast<const VkSubpassEndInfoKHR*>( &subpassEndInfo ) );
33143 }
33144#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33145
33146 template<typename Dispatch>
33147 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const
33148 {
33149 d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassEndInfoKHR*>( pSubpassEndInfo ) );
33150 }
33151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33152 template<typename Dispatch>
33153 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const
33154 {
33155 d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast<const VkSubpassEndInfoKHR*>( &subpassEndInfo ) );
33156 }
33157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33158
33159#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33160 template<typename Dispatch>
33161 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
33162 {
33163 d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
33164 }
33165#else
33166 template<typename Dispatch>
33167 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
33168 {
33169 d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
33170 }
33171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33172
33173#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33174 template<typename Dispatch>
33175 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const
33176 {
33177 d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
33178 }
33179#else
33180 template<typename Dispatch>
33181 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const
33182 {
33183 d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
33184 }
33185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33186
33187#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33188 template<typename Dispatch>
33189 VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d) const
33190 {
33191 d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker );
33192 }
33193#else
33194 template<typename Dispatch>
33195 VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d ) const
33196 {
33197 d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker );
33198 }
33199#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33200
33201 struct SubmitInfo
33202 {
33203 SubmitInfo( uint32_t waitSemaphoreCount_ = 0,
33204 const Semaphore* pWaitSemaphores_ = nullptr,
33205 const PipelineStageFlags* pWaitDstStageMask_ = nullptr,
33206 uint32_t commandBufferCount_ = 0,
33207 const CommandBuffer* pCommandBuffers_ = nullptr,
33208 uint32_t signalSemaphoreCount_ = 0,
33209 const Semaphore* pSignalSemaphores_ = nullptr )
33210 : waitSemaphoreCount( waitSemaphoreCount_ )
33211 , pWaitSemaphores( pWaitSemaphores_ )
33212 , pWaitDstStageMask( pWaitDstStageMask_ )
33213 , commandBufferCount( commandBufferCount_ )
33214 , pCommandBuffers( pCommandBuffers_ )
33215 , signalSemaphoreCount( signalSemaphoreCount_ )
33216 , pSignalSemaphores( pSignalSemaphores_ )
33217 {
33218 }
33219
33220 SubmitInfo( VkSubmitInfo const & rhs )
33221 {
33222 memcpy( this, &rhs, sizeof( SubmitInfo ) );
33223 }
33224
33225 SubmitInfo& operator=( VkSubmitInfo const & rhs )
33226 {
33227 memcpy( this, &rhs, sizeof( SubmitInfo ) );
33228 return *this;
33229 }
33230 SubmitInfo& setPNext( const void* pNext_ )
33231 {
33232 pNext = pNext_;
33233 return *this;
33234 }
33235
33236 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
33237 {
33238 waitSemaphoreCount = waitSemaphoreCount_;
33239 return *this;
33240 }
33241
33242 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
33243 {
33244 pWaitSemaphores = pWaitSemaphores_;
33245 return *this;
33246 }
33247
33248 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
33249 {
33250 pWaitDstStageMask = pWaitDstStageMask_;
33251 return *this;
33252 }
33253
33254 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
33255 {
33256 commandBufferCount = commandBufferCount_;
33257 return *this;
33258 }
33259
33260 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
33261 {
33262 pCommandBuffers = pCommandBuffers_;
33263 return *this;
33264 }
33265
33266 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
33267 {
33268 signalSemaphoreCount = signalSemaphoreCount_;
33269 return *this;
33270 }
33271
33272 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
33273 {
33274 pSignalSemaphores = pSignalSemaphores_;
33275 return *this;
33276 }
33277
33278 operator const VkSubmitInfo&() const
33279 {
33280 return *reinterpret_cast<const VkSubmitInfo*>(this);
33281 }
33282
33283 bool operator==( SubmitInfo const& rhs ) const
33284 {
33285 return ( sType == rhs.sType )
33286 && ( pNext == rhs.pNext )
33287 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
33288 && ( pWaitSemaphores == rhs.pWaitSemaphores )
33289 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
33290 && ( commandBufferCount == rhs.commandBufferCount )
33291 && ( pCommandBuffers == rhs.pCommandBuffers )
33292 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
33293 && ( pSignalSemaphores == rhs.pSignalSemaphores );
33294 }
33295
33296 bool operator!=( SubmitInfo const& rhs ) const
33297 {
33298 return !operator==( rhs );
33299 }
33300
33301 private:
33302 StructureType sType = StructureType::eSubmitInfo;
33303
33304 public:
33305 const void* pNext = nullptr;
33306 uint32_t waitSemaphoreCount;
33307 const Semaphore* pWaitSemaphores;
33308 const PipelineStageFlags* pWaitDstStageMask;
33309 uint32_t commandBufferCount;
33310 const CommandBuffer* pCommandBuffers;
33311 uint32_t signalSemaphoreCount;
33312 const Semaphore* pSignalSemaphores;
33313 };
33314 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
33315
33316 class Queue
33317 {
33318 public:
33319 VULKAN_HPP_CONSTEXPR Queue()
33320 : m_queue(VK_NULL_HANDLE)
33321 {}
33322
33323 VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t )
33324 : m_queue(VK_NULL_HANDLE)
33325 {}
33326
33327 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
33328 : m_queue( queue )
33329 {}
33330
33331#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
33332 Queue & operator=(VkQueue queue)
33333 {
33334 m_queue = queue;
33335 return *this;
33336 }
33337#endif
33338
33339 Queue & operator=( std::nullptr_t )
33340 {
33341 m_queue = VK_NULL_HANDLE;
33342 return *this;
33343 }
33344
33345 bool operator==( Queue const & rhs ) const
33346 {
33347 return m_queue == rhs.m_queue;
33348 }
33349
33350 bool operator!=(Queue const & rhs ) const
33351 {
33352 return m_queue != rhs.m_queue;
33353 }
33354
33355 bool operator<(Queue const & rhs ) const
33356 {
33357 return m_queue < rhs.m_queue;
33358 }
33359
33360 template<typename Dispatch = DispatchLoaderStatic>
33361 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence, Dispatch const &d = Dispatch() ) const;
33362#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33363 template<typename Dispatch = DispatchLoaderStatic>
33364 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence, Dispatch const &d = Dispatch() ) const;
33365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33366
33367#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33368 template<typename Dispatch = DispatchLoaderStatic>
33369 Result waitIdle(Dispatch const &d = Dispatch() ) const;
33370#else
33371 template<typename Dispatch = DispatchLoaderStatic>
33372 ResultValueType<void>::type waitIdle(Dispatch const &d = Dispatch() ) const;
33373#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33374
33375 template<typename Dispatch = DispatchLoaderStatic>
33376 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence, Dispatch const &d = Dispatch() ) const;
33377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33378 template<typename Dispatch = DispatchLoaderStatic>
33379 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence, Dispatch const &d = Dispatch() ) const;
33380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33381
33382 template<typename Dispatch = DispatchLoaderStatic>
33383 Result presentKHR( const PresentInfoKHR* pPresentInfo, Dispatch const &d = Dispatch() ) const;
33384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33385 template<typename Dispatch = DispatchLoaderStatic>
33386 Result presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d = Dispatch() ) const;
33387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33388
33389 template<typename Dispatch = DispatchLoaderStatic>
33390 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
33391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33392 template<typename Dispatch = DispatchLoaderStatic>
33393 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
33394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33395
33396 template<typename Dispatch = DispatchLoaderStatic>
33397 void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const;
33398
33399 template<typename Dispatch = DispatchLoaderStatic>
33400 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const;
33401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33402 template<typename Dispatch = DispatchLoaderStatic>
33403 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const;
33404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33405
33406 template<typename Dispatch = DispatchLoaderStatic>
33407 void getCheckpointDataNV( uint32_t* pCheckpointDataCount, CheckpointDataNV* pCheckpointData, Dispatch const &d = Dispatch() ) const;
33408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33409 template <typename Allocator = std::allocator<CheckpointDataNV>, typename Dispatch = DispatchLoaderStatic>
33410 std::vector<CheckpointDataNV,Allocator> getCheckpointDataNV(Dispatch const &d = Dispatch() ) const;
33411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33412
33413
33414
33415 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
33416 {
33417 return m_queue;
33418 }
33419
33420 explicit operator bool() const
33421 {
33422 return m_queue != VK_NULL_HANDLE;
33423 }
33424
33425 bool operator!() const
33426 {
33427 return m_queue == VK_NULL_HANDLE;
33428 }
33429
33430 private:
33431 VkQueue m_queue;
33432 };
33433
33434 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
33435
33436 template<typename Dispatch>
33437 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence, Dispatch const &d) const
33438 {
33439 return static_cast<Result>( d.vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
33440 }
33441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33442 template<typename Dispatch>
33443 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence, Dispatch const &d ) const
33444 {
33445 Result result = static_cast<Result>( d.vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
33446 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::submit" );
33447 }
33448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33449
33450#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33451 template<typename Dispatch>
33452 VULKAN_HPP_INLINE Result Queue::waitIdle(Dispatch const &d) const
33453 {
33454 return static_cast<Result>( d.vkQueueWaitIdle( m_queue ) );
33455 }
33456#else
33457 template<typename Dispatch>
33458 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle(Dispatch const &d ) const
33459 {
33460 Result result = static_cast<Result>( d.vkQueueWaitIdle( m_queue ) );
33461 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::waitIdle" );
33462 }
33463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33464
33465 template<typename Dispatch>
33466 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence, Dispatch const &d) const
33467 {
33468 return static_cast<Result>( d.vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
33469 }
33470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33471 template<typename Dispatch>
33472 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence, Dispatch const &d ) const
33473 {
33474 Result result = static_cast<Result>( d.vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
33475 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::bindSparse" );
33476 }
33477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33478
33479 template<typename Dispatch>
33480 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo, Dispatch const &d) const
33481 {
33482 return static_cast<Result>( d.vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
33483 }
33484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33485 template<typename Dispatch>
33486 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d ) const
33487 {
33488 Result result = static_cast<Result>( d.vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
33489 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
33490 }
33491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33492
33493 template<typename Dispatch>
33494 VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
33495 {
33496 d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
33497 }
33498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33499 template<typename Dispatch>
33500 VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
33501 {
33502 d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
33503 }
33504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33505
33506#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33507 template<typename Dispatch>
33508 VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d) const
33509 {
33510 d.vkQueueEndDebugUtilsLabelEXT( m_queue );
33511 }
33512#else
33513 template<typename Dispatch>
33514 VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d ) const
33515 {
33516 d.vkQueueEndDebugUtilsLabelEXT( m_queue );
33517 }
33518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33519
33520 template<typename Dispatch>
33521 VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const
33522 {
33523 d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( pLabelInfo ) );
33524 }
33525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33526 template<typename Dispatch>
33527 VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const
33528 {
33529 d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast<const VkDebugUtilsLabelEXT*>( &labelInfo ) );
33530 }
33531#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33532
33533 template<typename Dispatch>
33534 VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t* pCheckpointDataCount, CheckpointDataNV* pCheckpointData, Dispatch const &d) const
33535 {
33536 d.vkGetQueueCheckpointDataNV( m_queue, pCheckpointDataCount, reinterpret_cast<VkCheckpointDataNV*>( pCheckpointData ) );
33537 }
33538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33539 template <typename Allocator, typename Dispatch>
33540 VULKAN_HPP_INLINE std::vector<CheckpointDataNV,Allocator> Queue::getCheckpointDataNV(Dispatch const &d ) const
33541 {
33542 std::vector<CheckpointDataNV,Allocator> checkpointData;
33543 uint32_t checkpointDataCount;
33544 d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr );
33545 checkpointData.resize( checkpointDataCount );
33546 d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast<VkCheckpointDataNV*>( checkpointData.data() ) );
33547 return checkpointData;
33548 }
33549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33550
33551#ifndef VULKAN_HPP_NO_SMART_HANDLE
33552 class Device;
33553
33554 template <typename Dispatch> class UniqueHandleTraits<Buffer,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33555 using UniqueBuffer = UniqueHandle<Buffer,DispatchLoaderStatic>;
33556 template <typename Dispatch> class UniqueHandleTraits<BufferView,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33557 using UniqueBufferView = UniqueHandle<BufferView,DispatchLoaderStatic>;
33558 template <typename Dispatch> class UniqueHandleTraits<CommandBuffer,Dispatch> {public: using deleter = PoolFree<Device, CommandPool,Dispatch>; };
33559 using UniqueCommandBuffer = UniqueHandle<CommandBuffer,DispatchLoaderStatic>;
33560 template <typename Dispatch> class UniqueHandleTraits<CommandPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33561 using UniqueCommandPool = UniqueHandle<CommandPool,DispatchLoaderStatic>;
33562 template <typename Dispatch> class UniqueHandleTraits<DescriptorPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33563 using UniqueDescriptorPool = UniqueHandle<DescriptorPool,DispatchLoaderStatic>;
33564 template <typename Dispatch> class UniqueHandleTraits<DescriptorSet,Dispatch> {public: using deleter = PoolFree<Device, DescriptorPool,Dispatch>; };
33565 using UniqueDescriptorSet = UniqueHandle<DescriptorSet,DispatchLoaderStatic>;
33566 template <typename Dispatch> class UniqueHandleTraits<DescriptorSetLayout,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33567 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout,DispatchLoaderStatic>;
33568 template <typename Dispatch> class UniqueHandleTraits<DescriptorUpdateTemplate,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33569 using UniqueDescriptorUpdateTemplate = UniqueHandle<DescriptorUpdateTemplate,DispatchLoaderStatic>;
33570 template <typename Dispatch> class UniqueHandleTraits<DeviceMemory,Dispatch> {public: using deleter = ObjectFree<Device,Dispatch>; };
33571 using UniqueDeviceMemory = UniqueHandle<DeviceMemory,DispatchLoaderStatic>;
33572 template <typename Dispatch> class UniqueHandleTraits<Event,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33573 using UniqueEvent = UniqueHandle<Event,DispatchLoaderStatic>;
33574 template <typename Dispatch> class UniqueHandleTraits<Fence,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33575 using UniqueFence = UniqueHandle<Fence,DispatchLoaderStatic>;
33576 template <typename Dispatch> class UniqueHandleTraits<Framebuffer,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33577 using UniqueFramebuffer = UniqueHandle<Framebuffer,DispatchLoaderStatic>;
33578 template <typename Dispatch> class UniqueHandleTraits<Image,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33579 using UniqueImage = UniqueHandle<Image,DispatchLoaderStatic>;
33580 template <typename Dispatch> class UniqueHandleTraits<ImageView,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33581 using UniqueImageView = UniqueHandle<ImageView,DispatchLoaderStatic>;
33582 template <typename Dispatch> class UniqueHandleTraits<IndirectCommandsLayoutNVX,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33583 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX,DispatchLoaderStatic>;
33584 template <typename Dispatch> class UniqueHandleTraits<ObjectTableNVX,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33585 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX,DispatchLoaderStatic>;
33586 template <typename Dispatch> class UniqueHandleTraits<Pipeline,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33587 using UniquePipeline = UniqueHandle<Pipeline,DispatchLoaderStatic>;
33588 template <typename Dispatch> class UniqueHandleTraits<PipelineCache,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33589 using UniquePipelineCache = UniqueHandle<PipelineCache,DispatchLoaderStatic>;
33590 template <typename Dispatch> class UniqueHandleTraits<PipelineLayout,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33591 using UniquePipelineLayout = UniqueHandle<PipelineLayout,DispatchLoaderStatic>;
33592 template <typename Dispatch> class UniqueHandleTraits<QueryPool,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33593 using UniqueQueryPool = UniqueHandle<QueryPool,DispatchLoaderStatic>;
33594 template <typename Dispatch> class UniqueHandleTraits<RenderPass,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33595 using UniqueRenderPass = UniqueHandle<RenderPass,DispatchLoaderStatic>;
33596 template <typename Dispatch> class UniqueHandleTraits<Sampler,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33597 using UniqueSampler = UniqueHandle<Sampler,DispatchLoaderStatic>;
33598 template <typename Dispatch> class UniqueHandleTraits<SamplerYcbcrConversion,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33599 using UniqueSamplerYcbcrConversion = UniqueHandle<SamplerYcbcrConversion,DispatchLoaderStatic>;
33600 template <typename Dispatch> class UniqueHandleTraits<Semaphore,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33601 using UniqueSemaphore = UniqueHandle<Semaphore,DispatchLoaderStatic>;
33602 template <typename Dispatch> class UniqueHandleTraits<ShaderModule,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33603 using UniqueShaderModule = UniqueHandle<ShaderModule,DispatchLoaderStatic>;
33604 template <typename Dispatch> class UniqueHandleTraits<SwapchainKHR,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33605 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR,DispatchLoaderStatic>;
33606 template <typename Dispatch> class UniqueHandleTraits<ValidationCacheEXT,Dispatch> {public: using deleter = ObjectDestroy<Device,Dispatch>; };
33607 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT,DispatchLoaderStatic>;
33608#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33609
33610 class Device
33611 {
33612 public:
33613 VULKAN_HPP_CONSTEXPR Device()
33614 : m_device(VK_NULL_HANDLE)
33615 {}
33616
33617 VULKAN_HPP_CONSTEXPR Device( std::nullptr_t )
33618 : m_device(VK_NULL_HANDLE)
33619 {}
33620
33621 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
33622 : m_device( device )
33623 {}
33624
33625#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
33626 Device & operator=(VkDevice device)
33627 {
33628 m_device = device;
33629 return *this;
33630 }
33631#endif
33632
33633 Device & operator=( std::nullptr_t )
33634 {
33635 m_device = VK_NULL_HANDLE;
33636 return *this;
33637 }
33638
33639 bool operator==( Device const & rhs ) const
33640 {
33641 return m_device == rhs.m_device;
33642 }
33643
33644 bool operator!=(Device const & rhs ) const
33645 {
33646 return m_device != rhs.m_device;
33647 }
33648
33649 bool operator<(Device const & rhs ) const
33650 {
33651 return m_device < rhs.m_device;
33652 }
33653
33654 template<typename Dispatch = DispatchLoaderStatic>
33655 PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const;
33656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33657 template<typename Dispatch = DispatchLoaderStatic>
33658 PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const;
33659#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33660
33661 template<typename Dispatch = DispatchLoaderStatic>
33662 void destroy( const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33664 template<typename Dispatch = DispatchLoaderStatic>
33665 void destroy( Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33667
33668 template<typename Dispatch = DispatchLoaderStatic>
33669 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue, Dispatch const &d = Dispatch() ) const;
33670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33671 template<typename Dispatch = DispatchLoaderStatic>
33672 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d = Dispatch() ) const;
33673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33674
33675#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33676 template<typename Dispatch = DispatchLoaderStatic>
33677 Result waitIdle(Dispatch const &d = Dispatch() ) const;
33678#else
33679 template<typename Dispatch = DispatchLoaderStatic>
33680 ResultValueType<void>::type waitIdle(Dispatch const &d = Dispatch() ) const;
33681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33682
33683 template<typename Dispatch = DispatchLoaderStatic>
33684 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory, Dispatch const &d = Dispatch() ) const;
33685#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33686 template<typename Dispatch = DispatchLoaderStatic>
33687 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33688#ifndef VULKAN_HPP_NO_SMART_HANDLE
33689 template<typename Dispatch = DispatchLoaderStatic>
33690 typename ResultValueType<UniqueHandle<DeviceMemory,Dispatch>>::type allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33691#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33693
33694 template<typename Dispatch = DispatchLoaderStatic>
33695 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33697 template<typename Dispatch = DispatchLoaderStatic>
33698 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33699#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33700
33701 template<typename Dispatch = DispatchLoaderStatic>
33702 void free( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33704 template<typename Dispatch = DispatchLoaderStatic>
33705 void free( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33707
33708 template<typename Dispatch = DispatchLoaderStatic>
33709 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData, Dispatch const &d = Dispatch() ) const;
33710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33711 template<typename Dispatch = DispatchLoaderStatic>
33712 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags(), Dispatch const &d = Dispatch() ) const;
33713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33714
33715 template<typename Dispatch = DispatchLoaderStatic>
33716 void unmapMemory( DeviceMemory memory, Dispatch const &d = Dispatch() ) const;
33717
33718 template<typename Dispatch = DispatchLoaderStatic>
33719 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const;
33720#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33721 template<typename Dispatch = DispatchLoaderStatic>
33722 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d = Dispatch() ) const;
33723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33724
33725 template<typename Dispatch = DispatchLoaderStatic>
33726 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const;
33727#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33728 template<typename Dispatch = DispatchLoaderStatic>
33729 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d = Dispatch() ) const;
33730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33731
33732 template<typename Dispatch = DispatchLoaderStatic>
33733 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes, Dispatch const &d = Dispatch() ) const;
33734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33735 template<typename Dispatch = DispatchLoaderStatic>
33736 DeviceSize getMemoryCommitment( DeviceMemory memory, Dispatch const &d = Dispatch() ) const;
33737#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33738
33739 template<typename Dispatch = DispatchLoaderStatic>
33740 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
33741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33742 template<typename Dispatch = DispatchLoaderStatic>
33743 MemoryRequirements getBufferMemoryRequirements( Buffer buffer, Dispatch const &d = Dispatch() ) const;
33744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33745
33746#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33747 template<typename Dispatch = DispatchLoaderStatic>
33748 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
33749#else
33750 template<typename Dispatch = DispatchLoaderStatic>
33751 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
33752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33753
33754 template<typename Dispatch = DispatchLoaderStatic>
33755 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
33756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33757 template<typename Dispatch = DispatchLoaderStatic>
33758 MemoryRequirements getImageMemoryRequirements( Image image, Dispatch const &d = Dispatch() ) const;
33759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33760
33761#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33762 template<typename Dispatch = DispatchLoaderStatic>
33763 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
33764#else
33765 template<typename Dispatch = DispatchLoaderStatic>
33766 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const;
33767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33768
33769 template<typename Dispatch = DispatchLoaderStatic>
33770 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
33771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33772 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>, typename Dispatch = DispatchLoaderStatic>
33773 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image, Dispatch const &d = Dispatch() ) const;
33774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33775
33776 template<typename Dispatch = DispatchLoaderStatic>
33777 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
33778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33779 template<typename Dispatch = DispatchLoaderStatic>
33780 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33781#ifndef VULKAN_HPP_NO_SMART_HANDLE
33782 template<typename Dispatch = DispatchLoaderStatic>
33783 typename ResultValueType<UniqueHandle<Fence,Dispatch>>::type createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33784#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33786
33787 template<typename Dispatch = DispatchLoaderStatic>
33788 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33790 template<typename Dispatch = DispatchLoaderStatic>
33791 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33793
33794 template<typename Dispatch = DispatchLoaderStatic>
33795 void destroy( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33797 template<typename Dispatch = DispatchLoaderStatic>
33798 void destroy( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33800
33801 template<typename Dispatch = DispatchLoaderStatic>
33802 Result resetFences( uint32_t fenceCount, const Fence* pFences, Dispatch const &d = Dispatch() ) const;
33803#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33804 template<typename Dispatch = DispatchLoaderStatic>
33805 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences, Dispatch const &d = Dispatch() ) const;
33806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33807
33808 template<typename Dispatch = DispatchLoaderStatic>
33809 Result getFenceStatus( Fence fence, Dispatch const &d = Dispatch() ) const;
33810
33811 template<typename Dispatch = DispatchLoaderStatic>
33812 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const;
33813#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33814 template<typename Dispatch = DispatchLoaderStatic>
33815 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const;
33816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33817
33818 template<typename Dispatch = DispatchLoaderStatic>
33819 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore, Dispatch const &d = Dispatch() ) const;
33820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33821 template<typename Dispatch = DispatchLoaderStatic>
33822 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33823#ifndef VULKAN_HPP_NO_SMART_HANDLE
33824 template<typename Dispatch = DispatchLoaderStatic>
33825 typename ResultValueType<UniqueHandle<Semaphore,Dispatch>>::type createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33826#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33828
33829 template<typename Dispatch = DispatchLoaderStatic>
33830 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33832 template<typename Dispatch = DispatchLoaderStatic>
33833 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33835
33836 template<typename Dispatch = DispatchLoaderStatic>
33837 void destroy( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33838#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33839 template<typename Dispatch = DispatchLoaderStatic>
33840 void destroy( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33842
33843 template<typename Dispatch = DispatchLoaderStatic>
33844 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent, Dispatch const &d = Dispatch() ) const;
33845#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33846 template<typename Dispatch = DispatchLoaderStatic>
33847 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33848#ifndef VULKAN_HPP_NO_SMART_HANDLE
33849 template<typename Dispatch = DispatchLoaderStatic>
33850 typename ResultValueType<UniqueHandle<Event,Dispatch>>::type createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33851#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33853
33854 template<typename Dispatch = DispatchLoaderStatic>
33855 void destroyEvent( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33857 template<typename Dispatch = DispatchLoaderStatic>
33858 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33860
33861 template<typename Dispatch = DispatchLoaderStatic>
33862 void destroy( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33864 template<typename Dispatch = DispatchLoaderStatic>
33865 void destroy( Event event, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33867
33868 template<typename Dispatch = DispatchLoaderStatic>
33869 Result getEventStatus( Event event, Dispatch const &d = Dispatch() ) const;
33870
33871#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33872 template<typename Dispatch = DispatchLoaderStatic>
33873 Result setEvent( Event event, Dispatch const &d = Dispatch() ) const;
33874#else
33875 template<typename Dispatch = DispatchLoaderStatic>
33876 ResultValueType<void>::type setEvent( Event event, Dispatch const &d = Dispatch() ) const;
33877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33878
33879#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
33880 template<typename Dispatch = DispatchLoaderStatic>
33881 Result resetEvent( Event event, Dispatch const &d = Dispatch() ) const;
33882#else
33883 template<typename Dispatch = DispatchLoaderStatic>
33884 ResultValueType<void>::type resetEvent( Event event, Dispatch const &d = Dispatch() ) const;
33885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33886
33887 template<typename Dispatch = DispatchLoaderStatic>
33888 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool, Dispatch const &d = Dispatch() ) const;
33889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33890 template<typename Dispatch = DispatchLoaderStatic>
33891 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33892#ifndef VULKAN_HPP_NO_SMART_HANDLE
33893 template<typename Dispatch = DispatchLoaderStatic>
33894 typename ResultValueType<UniqueHandle<QueryPool,Dispatch>>::type createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33895#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33897
33898 template<typename Dispatch = DispatchLoaderStatic>
33899 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33900#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33901 template<typename Dispatch = DispatchLoaderStatic>
33902 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33903#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33904
33905 template<typename Dispatch = DispatchLoaderStatic>
33906 void destroy( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33908 template<typename Dispatch = DispatchLoaderStatic>
33909 void destroy( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33911
33912 template<typename Dispatch = DispatchLoaderStatic>
33913 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
33914#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33915 template <typename T, typename Dispatch = DispatchLoaderStatic>
33916 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags, Dispatch const &d = Dispatch() ) const;
33917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33918
33919 template<typename Dispatch = DispatchLoaderStatic>
33920 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer, Dispatch const &d = Dispatch() ) const;
33921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33922 template<typename Dispatch = DispatchLoaderStatic>
33923 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33924#ifndef VULKAN_HPP_NO_SMART_HANDLE
33925 template<typename Dispatch = DispatchLoaderStatic>
33926 typename ResultValueType<UniqueHandle<Buffer,Dispatch>>::type createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33927#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33929
33930 template<typename Dispatch = DispatchLoaderStatic>
33931 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33932#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33933 template<typename Dispatch = DispatchLoaderStatic>
33934 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33935#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33936
33937 template<typename Dispatch = DispatchLoaderStatic>
33938 void destroy( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33940 template<typename Dispatch = DispatchLoaderStatic>
33941 void destroy( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33943
33944 template<typename Dispatch = DispatchLoaderStatic>
33945 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView, Dispatch const &d = Dispatch() ) const;
33946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33947 template<typename Dispatch = DispatchLoaderStatic>
33948 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33949#ifndef VULKAN_HPP_NO_SMART_HANDLE
33950 template<typename Dispatch = DispatchLoaderStatic>
33951 typename ResultValueType<UniqueHandle<BufferView,Dispatch>>::type createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33952#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33953#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33954
33955 template<typename Dispatch = DispatchLoaderStatic>
33956 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33958 template<typename Dispatch = DispatchLoaderStatic>
33959 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33961
33962 template<typename Dispatch = DispatchLoaderStatic>
33963 void destroy( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33965 template<typename Dispatch = DispatchLoaderStatic>
33966 void destroy( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33968
33969 template<typename Dispatch = DispatchLoaderStatic>
33970 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage, Dispatch const &d = Dispatch() ) const;
33971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33972 template<typename Dispatch = DispatchLoaderStatic>
33973 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33974#ifndef VULKAN_HPP_NO_SMART_HANDLE
33975 template<typename Dispatch = DispatchLoaderStatic>
33976 typename ResultValueType<UniqueHandle<Image,Dispatch>>::type createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33977#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
33978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33979
33980 template<typename Dispatch = DispatchLoaderStatic>
33981 void destroyImage( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33982#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33983 template<typename Dispatch = DispatchLoaderStatic>
33984 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33986
33987 template<typename Dispatch = DispatchLoaderStatic>
33988 void destroy( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
33989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33990 template<typename Dispatch = DispatchLoaderStatic>
33991 void destroy( Image image, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
33992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33993
33994 template<typename Dispatch = DispatchLoaderStatic>
33995 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout, Dispatch const &d = Dispatch() ) const;
33996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33997 template<typename Dispatch = DispatchLoaderStatic>
33998 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource, Dispatch const &d = Dispatch() ) const;
33999#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34000
34001 template<typename Dispatch = DispatchLoaderStatic>
34002 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView, Dispatch const &d = Dispatch() ) const;
34003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34004 template<typename Dispatch = DispatchLoaderStatic>
34005 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34006#ifndef VULKAN_HPP_NO_SMART_HANDLE
34007 template<typename Dispatch = DispatchLoaderStatic>
34008 typename ResultValueType<UniqueHandle<ImageView,Dispatch>>::type createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34009#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34011
34012 template<typename Dispatch = DispatchLoaderStatic>
34013 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34015 template<typename Dispatch = DispatchLoaderStatic>
34016 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34017#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34018
34019 template<typename Dispatch = DispatchLoaderStatic>
34020 void destroy( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34022 template<typename Dispatch = DispatchLoaderStatic>
34023 void destroy( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34024#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34025
34026 template<typename Dispatch = DispatchLoaderStatic>
34027 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule, Dispatch const &d = Dispatch() ) const;
34028#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34029 template<typename Dispatch = DispatchLoaderStatic>
34030 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34031#ifndef VULKAN_HPP_NO_SMART_HANDLE
34032 template<typename Dispatch = DispatchLoaderStatic>
34033 typename ResultValueType<UniqueHandle<ShaderModule,Dispatch>>::type createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34034#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34036
34037 template<typename Dispatch = DispatchLoaderStatic>
34038 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34040 template<typename Dispatch = DispatchLoaderStatic>
34041 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34043
34044 template<typename Dispatch = DispatchLoaderStatic>
34045 void destroy( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34047 template<typename Dispatch = DispatchLoaderStatic>
34048 void destroy( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34049#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34050
34051 template<typename Dispatch = DispatchLoaderStatic>
34052 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache, Dispatch const &d = Dispatch() ) const;
34053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34054 template<typename Dispatch = DispatchLoaderStatic>
34055 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34056#ifndef VULKAN_HPP_NO_SMART_HANDLE
34057 template<typename Dispatch = DispatchLoaderStatic>
34058 typename ResultValueType<UniqueHandle<PipelineCache,Dispatch>>::type createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34059#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34061
34062 template<typename Dispatch = DispatchLoaderStatic>
34063 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34065 template<typename Dispatch = DispatchLoaderStatic>
34066 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34068
34069 template<typename Dispatch = DispatchLoaderStatic>
34070 void destroy( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34072 template<typename Dispatch = DispatchLoaderStatic>
34073 void destroy( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34075
34076 template<typename Dispatch = DispatchLoaderStatic>
34077 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const;
34078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34079 template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
34080 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache, Dispatch const &d = Dispatch() ) const;
34081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34082
34083 template<typename Dispatch = DispatchLoaderStatic>
34084 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches, Dispatch const &d = Dispatch() ) const;
34085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34086 template<typename Dispatch = DispatchLoaderStatic>
34087 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches, Dispatch const &d = Dispatch() ) const;
34088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34089
34090 template<typename Dispatch = DispatchLoaderStatic>
34091 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const;
34092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34093 template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
34094 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34095 template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
34096 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34097#ifndef VULKAN_HPP_NO_SMART_HANDLE
34098 template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
34099 typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34100 template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
34101 typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34102#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34104
34105 template<typename Dispatch = DispatchLoaderStatic>
34106 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const;
34107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34108 template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
34109 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34110 template <typename Allocator = std::allocator<Pipeline>, typename Dispatch = DispatchLoaderStatic>
34111 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34112#ifndef VULKAN_HPP_NO_SMART_HANDLE
34113 template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
34114 typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34115 template <typename Allocator = std::allocator<UniquePipeline>, typename Dispatch = DispatchLoaderStatic>
34116 typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34117#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34119
34120 template<typename Dispatch = DispatchLoaderStatic>
34121 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34123 template<typename Dispatch = DispatchLoaderStatic>
34124 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34126
34127 template<typename Dispatch = DispatchLoaderStatic>
34128 void destroy( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34130 template<typename Dispatch = DispatchLoaderStatic>
34131 void destroy( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34133
34134 template<typename Dispatch = DispatchLoaderStatic>
34135 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout, Dispatch const &d = Dispatch() ) const;
34136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34137 template<typename Dispatch = DispatchLoaderStatic>
34138 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34139#ifndef VULKAN_HPP_NO_SMART_HANDLE
34140 template<typename Dispatch = DispatchLoaderStatic>
34141 typename ResultValueType<UniqueHandle<PipelineLayout,Dispatch>>::type createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34142#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34144
34145 template<typename Dispatch = DispatchLoaderStatic>
34146 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34148 template<typename Dispatch = DispatchLoaderStatic>
34149 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34151
34152 template<typename Dispatch = DispatchLoaderStatic>
34153 void destroy( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34155 template<typename Dispatch = DispatchLoaderStatic>
34156 void destroy( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34158
34159 template<typename Dispatch = DispatchLoaderStatic>
34160 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler, Dispatch const &d = Dispatch() ) const;
34161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34162 template<typename Dispatch = DispatchLoaderStatic>
34163 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34164#ifndef VULKAN_HPP_NO_SMART_HANDLE
34165 template<typename Dispatch = DispatchLoaderStatic>
34166 typename ResultValueType<UniqueHandle<Sampler,Dispatch>>::type createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34167#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34169
34170 template<typename Dispatch = DispatchLoaderStatic>
34171 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34173 template<typename Dispatch = DispatchLoaderStatic>
34174 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34176
34177 template<typename Dispatch = DispatchLoaderStatic>
34178 void destroy( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34180 template<typename Dispatch = DispatchLoaderStatic>
34181 void destroy( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34183
34184 template<typename Dispatch = DispatchLoaderStatic>
34185 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout, Dispatch const &d = Dispatch() ) const;
34186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34187 template<typename Dispatch = DispatchLoaderStatic>
34188 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34189#ifndef VULKAN_HPP_NO_SMART_HANDLE
34190 template<typename Dispatch = DispatchLoaderStatic>
34191 typename ResultValueType<UniqueHandle<DescriptorSetLayout,Dispatch>>::type createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34192#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34194
34195 template<typename Dispatch = DispatchLoaderStatic>
34196 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34198 template<typename Dispatch = DispatchLoaderStatic>
34199 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34200#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34201
34202 template<typename Dispatch = DispatchLoaderStatic>
34203 void destroy( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34205 template<typename Dispatch = DispatchLoaderStatic>
34206 void destroy( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34208
34209 template<typename Dispatch = DispatchLoaderStatic>
34210 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool, Dispatch const &d = Dispatch() ) const;
34211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34212 template<typename Dispatch = DispatchLoaderStatic>
34213 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34214#ifndef VULKAN_HPP_NO_SMART_HANDLE
34215 template<typename Dispatch = DispatchLoaderStatic>
34216 typename ResultValueType<UniqueHandle<DescriptorPool,Dispatch>>::type createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34217#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34219
34220 template<typename Dispatch = DispatchLoaderStatic>
34221 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34222#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34223 template<typename Dispatch = DispatchLoaderStatic>
34224 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34226
34227 template<typename Dispatch = DispatchLoaderStatic>
34228 void destroy( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34230 template<typename Dispatch = DispatchLoaderStatic>
34231 void destroy( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34232#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34233
34234#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
34235 template<typename Dispatch = DispatchLoaderStatic>
34236 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const;
34237#else
34238 template<typename Dispatch = DispatchLoaderStatic>
34239 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const;
34240#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34241
34242 template<typename Dispatch = DispatchLoaderStatic>
34243 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
34244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34245 template <typename Allocator = std::allocator<DescriptorSet>, typename Dispatch = DispatchLoaderStatic>
34246 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
34247#ifndef VULKAN_HPP_NO_SMART_HANDLE
34248 template <typename Allocator = std::allocator<UniqueDescriptorSet>, typename Dispatch = DispatchLoaderStatic>
34249 typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
34250#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34252
34253 template<typename Dispatch = DispatchLoaderStatic>
34254 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
34255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34256 template<typename Dispatch = DispatchLoaderStatic>
34257 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d = Dispatch() ) const;
34258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34259
34260 template<typename Dispatch = DispatchLoaderStatic>
34261 Result free( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const;
34262#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34263 template<typename Dispatch = DispatchLoaderStatic>
34264 ResultValueType<void>::type free( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d = Dispatch() ) const;
34265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34266
34267 template<typename Dispatch = DispatchLoaderStatic>
34268 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies, Dispatch const &d = Dispatch() ) const;
34269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34270 template<typename Dispatch = DispatchLoaderStatic>
34271 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies, Dispatch const &d = Dispatch() ) const;
34272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34273
34274 template<typename Dispatch = DispatchLoaderStatic>
34275 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer, Dispatch const &d = Dispatch() ) const;
34276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34277 template<typename Dispatch = DispatchLoaderStatic>
34278 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34279#ifndef VULKAN_HPP_NO_SMART_HANDLE
34280 template<typename Dispatch = DispatchLoaderStatic>
34281 typename ResultValueType<UniqueHandle<Framebuffer,Dispatch>>::type createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34282#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34284
34285 template<typename Dispatch = DispatchLoaderStatic>
34286 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34288 template<typename Dispatch = DispatchLoaderStatic>
34289 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34291
34292 template<typename Dispatch = DispatchLoaderStatic>
34293 void destroy( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34295 template<typename Dispatch = DispatchLoaderStatic>
34296 void destroy( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34297#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34298
34299 template<typename Dispatch = DispatchLoaderStatic>
34300 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const;
34301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34302 template<typename Dispatch = DispatchLoaderStatic>
34303 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34304#ifndef VULKAN_HPP_NO_SMART_HANDLE
34305 template<typename Dispatch = DispatchLoaderStatic>
34306 typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34307#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34309
34310 template<typename Dispatch = DispatchLoaderStatic>
34311 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34313 template<typename Dispatch = DispatchLoaderStatic>
34314 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34316
34317 template<typename Dispatch = DispatchLoaderStatic>
34318 void destroy( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34320 template<typename Dispatch = DispatchLoaderStatic>
34321 void destroy( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34322#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34323
34324 template<typename Dispatch = DispatchLoaderStatic>
34325 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity, Dispatch const &d = Dispatch() ) const;
34326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34327 template<typename Dispatch = DispatchLoaderStatic>
34328 Extent2D getRenderAreaGranularity( RenderPass renderPass, Dispatch const &d = Dispatch() ) const;
34329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34330
34331 template<typename Dispatch = DispatchLoaderStatic>
34332 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool, Dispatch const &d = Dispatch() ) const;
34333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34334 template<typename Dispatch = DispatchLoaderStatic>
34335 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34336#ifndef VULKAN_HPP_NO_SMART_HANDLE
34337 template<typename Dispatch = DispatchLoaderStatic>
34338 typename ResultValueType<UniqueHandle<CommandPool,Dispatch>>::type createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34339#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34340#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34341
34342 template<typename Dispatch = DispatchLoaderStatic>
34343 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34345 template<typename Dispatch = DispatchLoaderStatic>
34346 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34348
34349 template<typename Dispatch = DispatchLoaderStatic>
34350 void destroy( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34352 template<typename Dispatch = DispatchLoaderStatic>
34353 void destroy( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34355
34356#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
34357 template<typename Dispatch = DispatchLoaderStatic>
34358 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const;
34359#else
34360 template<typename Dispatch = DispatchLoaderStatic>
34361 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const;
34362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34363
34364 template<typename Dispatch = DispatchLoaderStatic>
34365 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
34366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34367 template <typename Allocator = std::allocator<CommandBuffer>, typename Dispatch = DispatchLoaderStatic>
34368 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
34369#ifndef VULKAN_HPP_NO_SMART_HANDLE
34370 template <typename Allocator = std::allocator<UniqueCommandBuffer>, typename Dispatch = DispatchLoaderStatic>
34371 typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const;
34372#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34373#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34374
34375 template<typename Dispatch = DispatchLoaderStatic>
34376 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
34377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34378 template<typename Dispatch = DispatchLoaderStatic>
34379 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
34380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34381
34382 template<typename Dispatch = DispatchLoaderStatic>
34383 void free( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const;
34384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34385 template<typename Dispatch = DispatchLoaderStatic>
34386 void free( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d = Dispatch() ) const;
34387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34388
34389 template<typename Dispatch = DispatchLoaderStatic>
34390 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains, Dispatch const &d = Dispatch() ) const;
34391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34392 template <typename Allocator = std::allocator<SwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
34393 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34394 template <typename Allocator = std::allocator<SwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
34395 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34396#ifndef VULKAN_HPP_NO_SMART_HANDLE
34397 template <typename Allocator = std::allocator<UniqueSwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
34398 typename ResultValueType<std::vector<UniqueHandle<SwapchainKHR,Dispatch>,Allocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34399 template <typename Allocator = std::allocator<UniqueSwapchainKHR>, typename Dispatch = DispatchLoaderStatic>
34400 typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34401#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34403
34404 template<typename Dispatch = DispatchLoaderStatic>
34405 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain, Dispatch const &d = Dispatch() ) const;
34406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34407 template<typename Dispatch = DispatchLoaderStatic>
34408 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34409#ifndef VULKAN_HPP_NO_SMART_HANDLE
34410 template<typename Dispatch = DispatchLoaderStatic>
34411 typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34412#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34414
34415 template<typename Dispatch = DispatchLoaderStatic>
34416 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34417#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34418 template<typename Dispatch = DispatchLoaderStatic>
34419 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34421
34422 template<typename Dispatch = DispatchLoaderStatic>
34423 void destroy( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34425 template<typename Dispatch = DispatchLoaderStatic>
34426 void destroy( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34428
34429 template<typename Dispatch = DispatchLoaderStatic>
34430 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages, Dispatch const &d = Dispatch() ) const;
34431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34432 template <typename Allocator = std::allocator<Image>, typename Dispatch = DispatchLoaderStatic>
34433 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
34434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34435
34436 template<typename Dispatch = DispatchLoaderStatic>
34437 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const;
34438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34439 template<typename Dispatch = DispatchLoaderStatic>
34440 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, Dispatch const &d = Dispatch() ) const;
34441#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34442
34443 template<typename Dispatch = DispatchLoaderStatic>
34444 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const;
34445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34446 template<typename Dispatch = DispatchLoaderStatic>
34447 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const;
34448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34449
34450 template<typename Dispatch = DispatchLoaderStatic>
34451 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const;
34452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34453 template<typename Dispatch = DispatchLoaderStatic>
34454 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const;
34455#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34456
34457#ifdef VK_USE_PLATFORM_WIN32_NV
34458 template<typename Dispatch = DispatchLoaderStatic>
34459 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
34460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34461 template<typename Dispatch = DispatchLoaderStatic>
34462 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d = Dispatch() ) const;
34463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34464#endif /*VK_USE_PLATFORM_WIN32_NV*/
34465
34466 template<typename Dispatch = DispatchLoaderStatic>
34467 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d = Dispatch() ) const;
34468#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34469 template<typename Dispatch = DispatchLoaderStatic>
34470 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34471#ifndef VULKAN_HPP_NO_SMART_HANDLE
34472 template<typename Dispatch = DispatchLoaderStatic>
34473 typename ResultValueType<UniqueHandle<IndirectCommandsLayoutNVX,Dispatch>>::type createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34474#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34476
34477 template<typename Dispatch = DispatchLoaderStatic>
34478 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34480 template<typename Dispatch = DispatchLoaderStatic>
34481 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34483
34484 template<typename Dispatch = DispatchLoaderStatic>
34485 void destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34487 template<typename Dispatch = DispatchLoaderStatic>
34488 void destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34489#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34490
34491 template<typename Dispatch = DispatchLoaderStatic>
34492 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable, Dispatch const &d = Dispatch() ) const;
34493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34494 template<typename Dispatch = DispatchLoaderStatic>
34495 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34496#ifndef VULKAN_HPP_NO_SMART_HANDLE
34497 template<typename Dispatch = DispatchLoaderStatic>
34498 typename ResultValueType<UniqueHandle<ObjectTableNVX,Dispatch>>::type createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34499#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34501
34502 template<typename Dispatch = DispatchLoaderStatic>
34503 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34505 template<typename Dispatch = DispatchLoaderStatic>
34506 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34508
34509 template<typename Dispatch = DispatchLoaderStatic>
34510 void destroy( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34512 template<typename Dispatch = DispatchLoaderStatic>
34513 void destroy( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34515
34516 template<typename Dispatch = DispatchLoaderStatic>
34517 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const;
34518#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34519 template<typename Dispatch = DispatchLoaderStatic>
34520 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d = Dispatch() ) const;
34521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34522
34523 template<typename Dispatch = DispatchLoaderStatic>
34524 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const;
34525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34526 template<typename Dispatch = DispatchLoaderStatic>
34527 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d = Dispatch() ) const;
34528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34529
34530 template<typename Dispatch = DispatchLoaderStatic>
34531 void trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const;
34532
34533 template<typename Dispatch = DispatchLoaderStatic>
34534 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const;
34535
34536#ifdef VK_USE_PLATFORM_WIN32_KHR
34537 template<typename Dispatch = DispatchLoaderStatic>
34538 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
34539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34540 template<typename Dispatch = DispatchLoaderStatic>
34541 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34542#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34543#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34544
34545#ifdef VK_USE_PLATFORM_WIN32_KHR
34546 template<typename Dispatch = DispatchLoaderStatic>
34547 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d = Dispatch() ) const;
34548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34549 template<typename Dispatch = DispatchLoaderStatic>
34550 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d = Dispatch() ) const;
34551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34552#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34553
34554 template<typename Dispatch = DispatchLoaderStatic>
34555 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
34556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34557 template<typename Dispatch = DispatchLoaderStatic>
34558 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
34559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34560
34561 template<typename Dispatch = DispatchLoaderStatic>
34562 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d = Dispatch() ) const;
34563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34564 template<typename Dispatch = DispatchLoaderStatic>
34565 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d = Dispatch() ) const;
34566#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34567
34568#ifdef VK_USE_PLATFORM_WIN32_KHR
34569 template<typename Dispatch = DispatchLoaderStatic>
34570 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
34571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34572 template<typename Dispatch = DispatchLoaderStatic>
34573 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34575#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34576
34577#ifdef VK_USE_PLATFORM_WIN32_KHR
34578 template<typename Dispatch = DispatchLoaderStatic>
34579 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34580#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34581 template<typename Dispatch = DispatchLoaderStatic>
34582 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34584#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34585
34586 template<typename Dispatch = DispatchLoaderStatic>
34587 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
34588#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34589 template<typename Dispatch = DispatchLoaderStatic>
34590 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
34591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34592
34593 template<typename Dispatch = DispatchLoaderStatic>
34594 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const;
34595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34596 template<typename Dispatch = DispatchLoaderStatic>
34597 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const;
34598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34599
34600#ifdef VK_USE_PLATFORM_WIN32_KHR
34601 template<typename Dispatch = DispatchLoaderStatic>
34602 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const;
34603#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34604 template<typename Dispatch = DispatchLoaderStatic>
34605 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34606#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34607#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34608
34609#ifdef VK_USE_PLATFORM_WIN32_KHR
34610 template<typename Dispatch = DispatchLoaderStatic>
34611 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34613 template<typename Dispatch = DispatchLoaderStatic>
34614 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const;
34615#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34616#endif /*VK_USE_PLATFORM_WIN32_KHR*/
34617
34618 template<typename Dispatch = DispatchLoaderStatic>
34619 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const;
34620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34621 template<typename Dispatch = DispatchLoaderStatic>
34622 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const;
34623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34624
34625 template<typename Dispatch = DispatchLoaderStatic>
34626 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d = Dispatch() ) const;
34627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34628 template<typename Dispatch = DispatchLoaderStatic>
34629 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d = Dispatch() ) const;
34630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34631
34632 template<typename Dispatch = DispatchLoaderStatic>
34633 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d = Dispatch() ) const;
34634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34635 template<typename Dispatch = DispatchLoaderStatic>
34636 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d = Dispatch() ) const;
34637#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34638
34639 template<typename Dispatch = DispatchLoaderStatic>
34640 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
34641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34642 template<typename Dispatch = DispatchLoaderStatic>
34643 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34645
34646 template<typename Dispatch = DispatchLoaderStatic>
34647 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d = Dispatch() ) const;
34648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34649 template<typename Dispatch = DispatchLoaderStatic>
34650 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34652
34653 template<typename Dispatch = DispatchLoaderStatic>
34654 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d = Dispatch() ) const;
34655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34656 template<typename Dispatch = DispatchLoaderStatic>
34657 ResultValueType<uint64_t>::type getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const &d = Dispatch() ) const;
34658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34659
34660 template<typename Dispatch = DispatchLoaderStatic>
34661 void getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const;
34662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34663 template<typename Dispatch = DispatchLoaderStatic>
34664 PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const;
34665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34666
34667 template<typename Dispatch = DispatchLoaderStatic>
34668 void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const;
34669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34670 template<typename Dispatch = DispatchLoaderStatic>
34671 PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const;
34672#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34673
34674 template<typename Dispatch = DispatchLoaderStatic>
34675 Result bindBufferMemory2( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
34676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34677 template<typename Dispatch = DispatchLoaderStatic>
34678 ResultValueType<void>::type bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
34679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34680
34681 template<typename Dispatch = DispatchLoaderStatic>
34682 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
34683#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34684 template<typename Dispatch = DispatchLoaderStatic>
34685 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
34686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34687
34688 template<typename Dispatch = DispatchLoaderStatic>
34689 Result bindImageMemory2( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
34690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34691 template<typename Dispatch = DispatchLoaderStatic>
34692 ResultValueType<void>::type bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
34693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34694
34695 template<typename Dispatch = DispatchLoaderStatic>
34696 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const;
34697#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34698 template<typename Dispatch = DispatchLoaderStatic>
34699 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d = Dispatch() ) const;
34700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34701
34702 template<typename Dispatch = DispatchLoaderStatic>
34703 Result getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d = Dispatch() ) const;
34704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34705 template<typename Dispatch = DispatchLoaderStatic>
34706 ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type getGroupPresentCapabilitiesKHR(Dispatch const &d = Dispatch() ) const;
34707#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34708
34709 template<typename Dispatch = DispatchLoaderStatic>
34710 Result getGroupSurfacePresentModesKHR( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d = Dispatch() ) const;
34711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34712 template<typename Dispatch = DispatchLoaderStatic>
34713 ResultValueType<DeviceGroupPresentModeFlagsKHR>::type getGroupSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
34714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34715
34716 template<typename Dispatch = DispatchLoaderStatic>
34717 Result acquireNextImage2KHR( const AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const;
34718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34719 template<typename Dispatch = DispatchLoaderStatic>
34720 ResultValue<uint32_t> acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d = Dispatch() ) const;
34721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34722
34723 template<typename Dispatch = DispatchLoaderStatic>
34724 Result createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const;
34725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34726 template<typename Dispatch = DispatchLoaderStatic>
34727 ResultValueType<DescriptorUpdateTemplate>::type createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34728#ifndef VULKAN_HPP_NO_SMART_HANDLE
34729 template<typename Dispatch = DispatchLoaderStatic>
34730 typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34731#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34732#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34733
34734 template<typename Dispatch = DispatchLoaderStatic>
34735 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const;
34736#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34737 template<typename Dispatch = DispatchLoaderStatic>
34738 ResultValueType<DescriptorUpdateTemplate>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34739#ifndef VULKAN_HPP_NO_SMART_HANDLE
34740 template<typename Dispatch = DispatchLoaderStatic>
34741 typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34742#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34744
34745 template<typename Dispatch = DispatchLoaderStatic>
34746 void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34748 template<typename Dispatch = DispatchLoaderStatic>
34749 void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34751
34752 template<typename Dispatch = DispatchLoaderStatic>
34753 void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34755 template<typename Dispatch = DispatchLoaderStatic>
34756 void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34758
34759 template<typename Dispatch = DispatchLoaderStatic>
34760 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34762 template<typename Dispatch = DispatchLoaderStatic>
34763 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34765
34766 template<typename Dispatch = DispatchLoaderStatic>
34767 void updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const;
34768
34769 template<typename Dispatch = DispatchLoaderStatic>
34770 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const;
34771
34772 template<typename Dispatch = DispatchLoaderStatic>
34773 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata, Dispatch const &d = Dispatch() ) const;
34774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34775 template<typename Dispatch = DispatchLoaderStatic>
34776 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata, Dispatch const &d = Dispatch() ) const;
34777#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34778
34779 template<typename Dispatch = DispatchLoaderStatic>
34780 Result getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
34781
34782 template<typename Dispatch = DispatchLoaderStatic>
34783 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d = Dispatch() ) const;
34784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34785 template<typename Dispatch = DispatchLoaderStatic>
34786 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
34787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34788
34789 template<typename Dispatch = DispatchLoaderStatic>
34790 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d = Dispatch() ) const;
34791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34792 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>, typename Dispatch = DispatchLoaderStatic>
34793 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const;
34794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34795
34796 template<typename Dispatch = DispatchLoaderStatic>
34797 void getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34799 template<typename Dispatch = DispatchLoaderStatic>
34800 MemoryRequirements2 getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34801 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34802 StructureChain<T...> getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34804
34805 template<typename Dispatch = DispatchLoaderStatic>
34806 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34808 template<typename Dispatch = DispatchLoaderStatic>
34809 MemoryRequirements2 getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34810 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34811 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34813
34814 template<typename Dispatch = DispatchLoaderStatic>
34815 void getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34816#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34817 template<typename Dispatch = DispatchLoaderStatic>
34818 MemoryRequirements2 getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34819 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34820 StructureChain<T...> getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34821#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34822
34823 template<typename Dispatch = DispatchLoaderStatic>
34824 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34826 template<typename Dispatch = DispatchLoaderStatic>
34827 MemoryRequirements2 getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34828 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34829 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34831
34832 template<typename Dispatch = DispatchLoaderStatic>
34833 void getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34834#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34835 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
34836 std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34838
34839 template<typename Dispatch = DispatchLoaderStatic>
34840 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const;
34841#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34842 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2>, typename Dispatch = DispatchLoaderStatic>
34843 std::vector<SparseImageMemoryRequirements2,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const;
34844#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34845
34846 template<typename Dispatch = DispatchLoaderStatic>
34847 Result createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const;
34848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34849 template<typename Dispatch = DispatchLoaderStatic>
34850 ResultValueType<SamplerYcbcrConversion>::type createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34851#ifndef VULKAN_HPP_NO_SMART_HANDLE
34852 template<typename Dispatch = DispatchLoaderStatic>
34853 typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34854#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34856
34857 template<typename Dispatch = DispatchLoaderStatic>
34858 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const;
34859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34860 template<typename Dispatch = DispatchLoaderStatic>
34861 ResultValueType<SamplerYcbcrConversion>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34862#ifndef VULKAN_HPP_NO_SMART_HANDLE
34863 template<typename Dispatch = DispatchLoaderStatic>
34864 typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34865#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34867
34868 template<typename Dispatch = DispatchLoaderStatic>
34869 void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34871 template<typename Dispatch = DispatchLoaderStatic>
34872 void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34874
34875 template<typename Dispatch = DispatchLoaderStatic>
34876 void destroy( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34878 template<typename Dispatch = DispatchLoaderStatic>
34879 void destroy( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34881
34882 template<typename Dispatch = DispatchLoaderStatic>
34883 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34884#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34885 template<typename Dispatch = DispatchLoaderStatic>
34886 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34888
34889 template<typename Dispatch = DispatchLoaderStatic>
34890 void getQueue2( const DeviceQueueInfo2* pQueueInfo, Queue* pQueue, Dispatch const &d = Dispatch() ) const;
34891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34892 template<typename Dispatch = DispatchLoaderStatic>
34893 Queue getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d = Dispatch() ) const;
34894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34895
34896 template<typename Dispatch = DispatchLoaderStatic>
34897 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache, Dispatch const &d = Dispatch() ) const;
34898#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34899 template<typename Dispatch = DispatchLoaderStatic>
34900 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34901#ifndef VULKAN_HPP_NO_SMART_HANDLE
34902 template<typename Dispatch = DispatchLoaderStatic>
34903 typename ResultValueType<UniqueHandle<ValidationCacheEXT,Dispatch>>::type createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34904#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34906
34907 template<typename Dispatch = DispatchLoaderStatic>
34908 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34910 template<typename Dispatch = DispatchLoaderStatic>
34911 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34913
34914 template<typename Dispatch = DispatchLoaderStatic>
34915 void destroy( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
34916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34917 template<typename Dispatch = DispatchLoaderStatic>
34918 void destroy( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34920
34921 template<typename Dispatch = DispatchLoaderStatic>
34922 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const;
34923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34924 template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
34925 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache, Dispatch const &d = Dispatch() ) const;
34926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34927
34928 template<typename Dispatch = DispatchLoaderStatic>
34929 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches, Dispatch const &d = Dispatch() ) const;
34930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34931 template<typename Dispatch = DispatchLoaderStatic>
34932 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches, Dispatch const &d = Dispatch() ) const;
34933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34934
34935 template<typename Dispatch = DispatchLoaderStatic>
34936 void getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const;
34937#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34938 template<typename Dispatch = DispatchLoaderStatic>
34939 DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
34940 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34941 StructureChain<T...> getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
34942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34943
34944 template<typename Dispatch = DispatchLoaderStatic>
34945 void getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const;
34946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34947 template<typename Dispatch = DispatchLoaderStatic>
34948 DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
34949 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34950 StructureChain<T...> getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const;
34951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34952
34953 template<typename Dispatch = DispatchLoaderStatic>
34954 Result getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d = Dispatch() ) const;
34955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34956 template <typename Allocator = std::allocator<uint8_t>, typename Dispatch = DispatchLoaderStatic>
34957 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const &d = Dispatch() ) const;
34958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34959
34960 template<typename Dispatch = DispatchLoaderStatic>
34961 Result setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const;
34962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34963 template<typename Dispatch = DispatchLoaderStatic>
34964 ResultValueType<void>::type setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const;
34965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34966
34967 template<typename Dispatch = DispatchLoaderStatic>
34968 Result setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const;
34969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34970 template<typename Dispatch = DispatchLoaderStatic>
34971 ResultValueType<void>::type setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const;
34972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34973
34974 template<typename Dispatch = DispatchLoaderStatic>
34975 Result getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d = Dispatch() ) const;
34976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34977 template<typename Dispatch = DispatchLoaderStatic>
34978 ResultValueType<MemoryHostPointerPropertiesEXT>::type getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d = Dispatch() ) const;
34979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34980
34981 template<typename Dispatch = DispatchLoaderStatic>
34982 Result createRenderPass2KHR( const RenderPassCreateInfo2KHR* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const;
34983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34984 template<typename Dispatch = DispatchLoaderStatic>
34985 ResultValueType<RenderPass>::type createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34986#ifndef VULKAN_HPP_NO_SMART_HANDLE
34987 template<typename Dispatch = DispatchLoaderStatic>
34988 typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
34989#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
34990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
34991
34992#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
34993 template<typename Dispatch = DispatchLoaderStatic>
34994 Result getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d = Dispatch() ) const;
34995#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
34996 template<typename Dispatch = DispatchLoaderStatic>
34997 ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const;
34998 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
34999 typename ResultValueType<StructureChain<T...>>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const;
35000#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35001#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
35002
35003#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
35004 template<typename Dispatch = DispatchLoaderStatic>
35005 Result getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d = Dispatch() ) const;
35006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35007 template<typename Dispatch = DispatchLoaderStatic>
35008 ResultValueType<struct AHardwareBuffer*>::type getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d = Dispatch() ) const;
35009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35010#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
35011
35012
35013
35014 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
35015 {
35016 return m_device;
35017 }
35018
35019 explicit operator bool() const
35020 {
35021 return m_device != VK_NULL_HANDLE;
35022 }
35023
35024 bool operator!() const
35025 {
35026 return m_device == VK_NULL_HANDLE;
35027 }
35028
35029 private:
35030 VkDevice m_device;
35031 };
35032
35033 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
35034
35035 template<typename Dispatch>
35036 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName, Dispatch const &d) const
35037 {
35038 return d.vkGetDeviceProcAddr( m_device, pName );
35039 }
35040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35041 template<typename Dispatch>
35042 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name, Dispatch const &d ) const
35043 {
35044 return d.vkGetDeviceProcAddr( m_device, name.c_str() );
35045 }
35046#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35047
35048 template<typename Dispatch>
35049 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator, Dispatch const &d) const
35050 {
35051 d.vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35052 }
35053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35054 template<typename Dispatch>
35055 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35056 {
35057 d.vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35058 }
35059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35060
35061 template<typename Dispatch>
35062 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue, Dispatch const &d) const
35063 {
35064 d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
35065 }
35066#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35067 template<typename Dispatch>
35068 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d ) const
35069 {
35070 Queue queue;
35071 d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
35072 return queue;
35073 }
35074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35075
35076#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35077 template<typename Dispatch>
35078 VULKAN_HPP_INLINE Result Device::waitIdle(Dispatch const &d) const
35079 {
35080 return static_cast<Result>( d.vkDeviceWaitIdle( m_device ) );
35081 }
35082#else
35083 template<typename Dispatch>
35084 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle(Dispatch const &d ) const
35085 {
35086 Result result = static_cast<Result>( d.vkDeviceWaitIdle( m_device ) );
35087 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitIdle" );
35088 }
35089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35090
35091 template<typename Dispatch>
35092 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory, Dispatch const &d) const
35093 {
35094 return static_cast<Result>( d.vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
35095 }
35096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35097 template<typename Dispatch>
35098 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35099 {
35100 DeviceMemory memory;
35101 Result result = static_cast<Result>( d.vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( &allocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDeviceMemory*>( &memory ) ) );
35102 return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemory" );
35103 }
35104#ifndef VULKAN_HPP_NO_SMART_HANDLE
35105 template<typename Dispatch>
35106 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DeviceMemory,Dispatch>>::type Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35107 {
35108 DeviceMemory memory;
35109 Result result = static_cast<Result>( d.vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( &allocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDeviceMemory*>( &memory ) ) );
35110
35111 ObjectFree<Device,Dispatch> deleter( *this, allocator, d );
35112 return createResultValue<DeviceMemory,Dispatch>( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemoryUnique", deleter );
35113 }
35114#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35116
35117 template<typename Dispatch>
35118 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35119 {
35120 d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35121 }
35122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35123 template<typename Dispatch>
35124 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35125 {
35126 d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35127 }
35128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35129
35130 template<typename Dispatch>
35131 VULKAN_HPP_INLINE void Device::free( DeviceMemory memory, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35132 {
35133 d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35134 }
35135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35136 template<typename Dispatch>
35137 VULKAN_HPP_INLINE void Device::free( DeviceMemory memory, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35138 {
35139 d.vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35140 }
35141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35142
35143 template<typename Dispatch>
35144 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData, Dispatch const &d) const
35145 {
35146 return static_cast<Result>( d.vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
35147 }
35148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35149 template<typename Dispatch>
35150 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, Dispatch const &d ) const
35151 {
35152 void* pData;
35153 Result result = static_cast<Result>( d.vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
35154 return createResultValue( result, pData, VULKAN_HPP_NAMESPACE_STRING"::Device::mapMemory" );
35155 }
35156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35157
35158#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35159 template<typename Dispatch>
35160 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory, Dispatch const &d) const
35161 {
35162 d.vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
35163 }
35164#else
35165 template<typename Dispatch>
35166 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory, Dispatch const &d ) const
35167 {
35168 d.vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
35169 }
35170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35171
35172 template<typename Dispatch>
35173 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d) const
35174 {
35175 return static_cast<Result>( d.vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
35176 }
35177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35178 template<typename Dispatch>
35179 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d ) const
35180 {
35181 Result result = static_cast<Result>( d.vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
35182 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::flushMappedMemoryRanges" );
35183 }
35184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35185
35186 template<typename Dispatch>
35187 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges, Dispatch const &d) const
35188 {
35189 return static_cast<Result>( d.vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
35190 }
35191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35192 template<typename Dispatch>
35193 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges, Dispatch const &d ) const
35194 {
35195 Result result = static_cast<Result>( d.vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
35196 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::invalidateMappedMemoryRanges" );
35197 }
35198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35199
35200 template<typename Dispatch>
35201 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes, Dispatch const &d) const
35202 {
35203 d.vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
35204 }
35205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35206 template<typename Dispatch>
35207 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory, Dispatch const &d ) const
35208 {
35209 DeviceSize committedMemoryInBytes;
35210 d.vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
35211 return committedMemoryInBytes;
35212 }
35213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35214
35215 template<typename Dispatch>
35216 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements, Dispatch const &d) const
35217 {
35218 d.vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
35219 }
35220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35221 template<typename Dispatch>
35222 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer, Dispatch const &d ) const
35223 {
35224 MemoryRequirements memoryRequirements;
35225 d.vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
35226 return memoryRequirements;
35227 }
35228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35229
35230#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35231 template<typename Dispatch>
35232 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d) const
35233 {
35234 return static_cast<Result>( d.vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
35235 }
35236#else
35237 template<typename Dispatch>
35238 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d ) const
35239 {
35240 Result result = static_cast<Result>( d.vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
35241 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory" );
35242 }
35243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35244
35245 template<typename Dispatch>
35246 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements, Dispatch const &d) const
35247 {
35248 d.vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
35249 }
35250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35251 template<typename Dispatch>
35252 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image, Dispatch const &d ) const
35253 {
35254 MemoryRequirements memoryRequirements;
35255 d.vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
35256 return memoryRequirements;
35257 }
35258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35259
35260#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35261 template<typename Dispatch>
35262 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d) const
35263 {
35264 return static_cast<Result>( d.vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
35265 }
35266#else
35267 template<typename Dispatch>
35268 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const &d ) const
35269 {
35270 Result result = static_cast<Result>( d.vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
35271 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory" );
35272 }
35273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35274
35275 template<typename Dispatch>
35276 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d) const
35277 {
35278 d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
35279 }
35280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35281 template <typename Allocator, typename Dispatch>
35282 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image, Dispatch const &d ) const
35283 {
35284 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
35285 uint32_t sparseMemoryRequirementCount;
35286 d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
35287 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
35288 d.vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
35289 return sparseMemoryRequirements;
35290 }
35291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35292
35293 template<typename Dispatch>
35294 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
35295 {
35296 return static_cast<Result>( d.vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
35297 }
35298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35299 template<typename Dispatch>
35300 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35301 {
35302 Fence fence;
35303 Result result = static_cast<Result>( d.vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
35304 return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFence" );
35305 }
35306#ifndef VULKAN_HPP_NO_SMART_HANDLE
35307 template<typename Dispatch>
35308 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Fence,Dispatch>>::type Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35309 {
35310 Fence fence;
35311 Result result = static_cast<Result>( d.vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
35312
35313 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35314 return createResultValue<Fence,Dispatch>( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFenceUnique", deleter );
35315 }
35316#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35317#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35318
35319 template<typename Dispatch>
35320 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35321 {
35322 d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35323 }
35324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35325 template<typename Dispatch>
35326 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35327 {
35328 d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35329 }
35330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35331
35332 template<typename Dispatch>
35333 VULKAN_HPP_INLINE void Device::destroy( Fence fence, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35334 {
35335 d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35336 }
35337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35338 template<typename Dispatch>
35339 VULKAN_HPP_INLINE void Device::destroy( Fence fence, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35340 {
35341 d.vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35342 }
35343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35344
35345 template<typename Dispatch>
35346 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences, Dispatch const &d) const
35347 {
35348 return static_cast<Result>( d.vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
35349 }
35350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35351 template<typename Dispatch>
35352 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences, Dispatch const &d ) const
35353 {
35354 Result result = static_cast<Result>( d.vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
35355 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetFences" );
35356 }
35357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35358
35359#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35360 template<typename Dispatch>
35361 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const &d) const
35362 {
35363 return static_cast<Result>( d.vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
35364 }
35365#else
35366 template<typename Dispatch>
35367 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const &d ) const
35368 {
35369 Result result = static_cast<Result>( d.vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
35370 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
35371 }
35372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35373
35374 template<typename Dispatch>
35375 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout, Dispatch const &d) const
35376 {
35377 return static_cast<Result>( d.vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
35378 }
35379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35380 template<typename Dispatch>
35381 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout, Dispatch const &d ) const
35382 {
35383 Result result = static_cast<Result>( d.vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
35384 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
35385 }
35386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35387
35388 template<typename Dispatch>
35389 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore, Dispatch const &d) const
35390 {
35391 return static_cast<Result>( d.vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
35392 }
35393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35394 template<typename Dispatch>
35395 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35396 {
35397 Semaphore semaphore;
35398 Result result = static_cast<Result>( d.vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSemaphore*>( &semaphore ) ) );
35399 return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphore" );
35400 }
35401#ifndef VULKAN_HPP_NO_SMART_HANDLE
35402 template<typename Dispatch>
35403 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Semaphore,Dispatch>>::type Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35404 {
35405 Semaphore semaphore;
35406 Result result = static_cast<Result>( d.vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSemaphore*>( &semaphore ) ) );
35407
35408 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35409 return createResultValue<Semaphore,Dispatch>( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphoreUnique", deleter );
35410 }
35411#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35413
35414 template<typename Dispatch>
35415 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35416 {
35417 d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35418 }
35419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35420 template<typename Dispatch>
35421 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35422 {
35423 d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35424 }
35425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35426
35427 template<typename Dispatch>
35428 VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35429 {
35430 d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35431 }
35432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35433 template<typename Dispatch>
35434 VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35435 {
35436 d.vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35437 }
35438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35439
35440 template<typename Dispatch>
35441 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent, Dispatch const &d) const
35442 {
35443 return static_cast<Result>( d.vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
35444 }
35445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35446 template<typename Dispatch>
35447 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35448 {
35449 Event event;
35450 Result result = static_cast<Result>( d.vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkEvent*>( &event ) ) );
35451 return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEvent" );
35452 }
35453#ifndef VULKAN_HPP_NO_SMART_HANDLE
35454 template<typename Dispatch>
35455 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Event,Dispatch>>::type Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35456 {
35457 Event event;
35458 Result result = static_cast<Result>( d.vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkEvent*>( &event ) ) );
35459
35460 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35461 return createResultValue<Event,Dispatch>( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEventUnique", deleter );
35462 }
35463#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35465
35466 template<typename Dispatch>
35467 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35468 {
35469 d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35470 }
35471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35472 template<typename Dispatch>
35473 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35474 {
35475 d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35476 }
35477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35478
35479 template<typename Dispatch>
35480 VULKAN_HPP_INLINE void Device::destroy( Event event, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35481 {
35482 d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35483 }
35484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35485 template<typename Dispatch>
35486 VULKAN_HPP_INLINE void Device::destroy( Event event, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35487 {
35488 d.vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35489 }
35490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35491
35492#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35493 template<typename Dispatch>
35494 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const &d) const
35495 {
35496 return static_cast<Result>( d.vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
35497 }
35498#else
35499 template<typename Dispatch>
35500 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const &d ) const
35501 {
35502 Result result = static_cast<Result>( d.vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
35503 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
35504 }
35505#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35506
35507#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35508 template<typename Dispatch>
35509 VULKAN_HPP_INLINE Result Device::setEvent( Event event, Dispatch const &d) const
35510 {
35511 return static_cast<Result>( d.vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
35512 }
35513#else
35514 template<typename Dispatch>
35515 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event, Dispatch const &d ) const
35516 {
35517 Result result = static_cast<Result>( d.vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
35518 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setEvent" );
35519 }
35520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35521
35522#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
35523 template<typename Dispatch>
35524 VULKAN_HPP_INLINE Result Device::resetEvent( Event event, Dispatch const &d) const
35525 {
35526 return static_cast<Result>( d.vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
35527 }
35528#else
35529 template<typename Dispatch>
35530 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event, Dispatch const &d ) const
35531 {
35532 Result result = static_cast<Result>( d.vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
35533 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetEvent" );
35534 }
35535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35536
35537 template<typename Dispatch>
35538 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool, Dispatch const &d) const
35539 {
35540 return static_cast<Result>( d.vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
35541 }
35542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35543 template<typename Dispatch>
35544 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35545 {
35546 QueryPool queryPool;
35547 Result result = static_cast<Result>( d.vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkQueryPool*>( &queryPool ) ) );
35548 return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPool" );
35549 }
35550#ifndef VULKAN_HPP_NO_SMART_HANDLE
35551 template<typename Dispatch>
35552 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<QueryPool,Dispatch>>::type Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35553 {
35554 QueryPool queryPool;
35555 Result result = static_cast<Result>( d.vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkQueryPool*>( &queryPool ) ) );
35556
35557 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35558 return createResultValue<QueryPool,Dispatch>( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPoolUnique", deleter );
35559 }
35560#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35562
35563 template<typename Dispatch>
35564 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35565 {
35566 d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35567 }
35568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35569 template<typename Dispatch>
35570 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35571 {
35572 d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35573 }
35574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35575
35576 template<typename Dispatch>
35577 VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35578 {
35579 d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35580 }
35581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35582 template<typename Dispatch>
35583 VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35584 {
35585 d.vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35586 }
35587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35588
35589 template<typename Dispatch>
35590 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags, Dispatch const &d) const
35591 {
35592 return static_cast<Result>( d.vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
35593 }
35594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35595 template <typename T, typename Dispatch>
35596 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags, Dispatch const &d ) const
35597 {
35598 Result result = static_cast<Result>( d.vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ) , reinterpret_cast<void*>( data.data() ), stride, static_cast<VkQueryResultFlags>( flags ) ) );
35599 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
35600 }
35601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35602
35603 template<typename Dispatch>
35604 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer, Dispatch const &d) const
35605 {
35606 return static_cast<Result>( d.vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
35607 }
35608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35609 template<typename Dispatch>
35610 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35611 {
35612 Buffer buffer;
35613 Result result = static_cast<Result>( d.vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBuffer*>( &buffer ) ) );
35614 return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBuffer" );
35615 }
35616#ifndef VULKAN_HPP_NO_SMART_HANDLE
35617 template<typename Dispatch>
35618 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Buffer,Dispatch>>::type Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35619 {
35620 Buffer buffer;
35621 Result result = static_cast<Result>( d.vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBuffer*>( &buffer ) ) );
35622
35623 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35624 return createResultValue<Buffer,Dispatch>( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferUnique", deleter );
35625 }
35626#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35628
35629 template<typename Dispatch>
35630 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35631 {
35632 d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35633 }
35634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35635 template<typename Dispatch>
35636 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35637 {
35638 d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35639 }
35640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35641
35642 template<typename Dispatch>
35643 VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35644 {
35645 d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35646 }
35647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35648 template<typename Dispatch>
35649 VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35650 {
35651 d.vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35652 }
35653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35654
35655 template<typename Dispatch>
35656 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView, Dispatch const &d) const
35657 {
35658 return static_cast<Result>( d.vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
35659 }
35660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35661 template<typename Dispatch>
35662 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35663 {
35664 BufferView view;
35665 Result result = static_cast<Result>( d.vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBufferView*>( &view ) ) );
35666 return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferView" );
35667 }
35668#ifndef VULKAN_HPP_NO_SMART_HANDLE
35669 template<typename Dispatch>
35670 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<BufferView,Dispatch>>::type Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35671 {
35672 BufferView view;
35673 Result result = static_cast<Result>( d.vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBufferView*>( &view ) ) );
35674
35675 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35676 return createResultValue<BufferView,Dispatch>( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferViewUnique", deleter );
35677 }
35678#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35680
35681 template<typename Dispatch>
35682 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35683 {
35684 d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35685 }
35686#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35687 template<typename Dispatch>
35688 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35689 {
35690 d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35691 }
35692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35693
35694 template<typename Dispatch>
35695 VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35696 {
35697 d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35698 }
35699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35700 template<typename Dispatch>
35701 VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35702 {
35703 d.vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35704 }
35705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35706
35707 template<typename Dispatch>
35708 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage, Dispatch const &d) const
35709 {
35710 return static_cast<Result>( d.vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
35711 }
35712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35713 template<typename Dispatch>
35714 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35715 {
35716 Image image;
35717 Result result = static_cast<Result>( d.vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImage*>( &image ) ) );
35718 return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImage" );
35719 }
35720#ifndef VULKAN_HPP_NO_SMART_HANDLE
35721 template<typename Dispatch>
35722 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Image,Dispatch>>::type Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35723 {
35724 Image image;
35725 Result result = static_cast<Result>( d.vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImage*>( &image ) ) );
35726
35727 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35728 return createResultValue<Image,Dispatch>( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageUnique", deleter );
35729 }
35730#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35731#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35732
35733 template<typename Dispatch>
35734 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35735 {
35736 d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35737 }
35738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35739 template<typename Dispatch>
35740 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35741 {
35742 d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35743 }
35744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35745
35746 template<typename Dispatch>
35747 VULKAN_HPP_INLINE void Device::destroy( Image image, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35748 {
35749 d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35750 }
35751#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35752 template<typename Dispatch>
35753 VULKAN_HPP_INLINE void Device::destroy( Image image, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35754 {
35755 d.vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35756 }
35757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35758
35759 template<typename Dispatch>
35760 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout, Dispatch const &d) const
35761 {
35762 d.vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
35763 }
35764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35765 template<typename Dispatch>
35766 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource, Dispatch const &d ) const
35767 {
35768 SubresourceLayout layout;
35769 d.vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
35770 return layout;
35771 }
35772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35773
35774 template<typename Dispatch>
35775 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView, Dispatch const &d) const
35776 {
35777 return static_cast<Result>( d.vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
35778 }
35779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35780 template<typename Dispatch>
35781 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35782 {
35783 ImageView view;
35784 Result result = static_cast<Result>( d.vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImageView*>( &view ) ) );
35785 return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageView" );
35786 }
35787#ifndef VULKAN_HPP_NO_SMART_HANDLE
35788 template<typename Dispatch>
35789 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ImageView,Dispatch>>::type Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35790 {
35791 ImageView view;
35792 Result result = static_cast<Result>( d.vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImageView*>( &view ) ) );
35793
35794 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35795 return createResultValue<ImageView,Dispatch>( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageViewUnique", deleter );
35796 }
35797#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35799
35800 template<typename Dispatch>
35801 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35802 {
35803 d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35804 }
35805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35806 template<typename Dispatch>
35807 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35808 {
35809 d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35810 }
35811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35812
35813 template<typename Dispatch>
35814 VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35815 {
35816 d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35817 }
35818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35819 template<typename Dispatch>
35820 VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35821 {
35822 d.vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35823 }
35824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35825
35826 template<typename Dispatch>
35827 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule, Dispatch const &d) const
35828 {
35829 return static_cast<Result>( d.vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
35830 }
35831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35832 template<typename Dispatch>
35833 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35834 {
35835 ShaderModule shaderModule;
35836 Result result = static_cast<Result>( d.vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkShaderModule*>( &shaderModule ) ) );
35837 return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModule" );
35838 }
35839#ifndef VULKAN_HPP_NO_SMART_HANDLE
35840 template<typename Dispatch>
35841 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ShaderModule,Dispatch>>::type Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35842 {
35843 ShaderModule shaderModule;
35844 Result result = static_cast<Result>( d.vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkShaderModule*>( &shaderModule ) ) );
35845
35846 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35847 return createResultValue<ShaderModule,Dispatch>( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModuleUnique", deleter );
35848 }
35849#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35851
35852 template<typename Dispatch>
35853 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35854 {
35855 d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35856 }
35857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35858 template<typename Dispatch>
35859 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35860 {
35861 d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35862 }
35863#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35864
35865 template<typename Dispatch>
35866 VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35867 {
35868 d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35869 }
35870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35871 template<typename Dispatch>
35872 VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35873 {
35874 d.vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35875 }
35876#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35877
35878 template<typename Dispatch>
35879 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache, Dispatch const &d) const
35880 {
35881 return static_cast<Result>( d.vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
35882 }
35883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35884 template<typename Dispatch>
35885 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35886 {
35887 PipelineCache pipelineCache;
35888 Result result = static_cast<Result>( d.vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineCache*>( &pipelineCache ) ) );
35889 return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCache" );
35890 }
35891#ifndef VULKAN_HPP_NO_SMART_HANDLE
35892 template<typename Dispatch>
35893 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<PipelineCache,Dispatch>>::type Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35894 {
35895 PipelineCache pipelineCache;
35896 Result result = static_cast<Result>( d.vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineCache*>( &pipelineCache ) ) );
35897
35898 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
35899 return createResultValue<PipelineCache,Dispatch>( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCacheUnique", deleter );
35900 }
35901#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
35902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35903
35904 template<typename Dispatch>
35905 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35906 {
35907 d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35908 }
35909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35910 template<typename Dispatch>
35911 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35912 {
35913 d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35914 }
35915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35916
35917 template<typename Dispatch>
35918 VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
35919 {
35920 d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
35921 }
35922#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35923 template<typename Dispatch>
35924 VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35925 {
35926 d.vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
35927 }
35928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35929
35930 template<typename Dispatch>
35931 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d) const
35932 {
35933 return static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
35934 }
35935#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35936 template <typename Allocator, typename Dispatch>
35937 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache, Dispatch const &d ) const
35938 {
35939 std::vector<uint8_t,Allocator> data;
35940 size_t dataSize;
35941 Result result;
35942 do
35943 {
35944 result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
35945 if ( ( result == Result::eSuccess ) && dataSize )
35946 {
35947 data.resize( dataSize );
35948 result = static_cast<Result>( d.vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
35949 }
35950 } while ( result == Result::eIncomplete );
35951 VULKAN_HPP_ASSERT( dataSize <= data.size() );
35952 data.resize( dataSize );
35953 return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" );
35954 }
35955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35956
35957 template<typename Dispatch>
35958 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches, Dispatch const &d) const
35959 {
35960 return static_cast<Result>( d.vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
35961 }
35962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35963 template<typename Dispatch>
35964 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches, Dispatch const &d ) const
35965 {
35966 Result result = static_cast<Result>( d.vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
35967 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergePipelineCaches" );
35968 }
35969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35970
35971 template<typename Dispatch>
35972 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d) const
35973 {
35974 return static_cast<Result>( d.vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
35975 }
35976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
35977 template <typename Allocator, typename Dispatch>
35978 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35979 {
35980 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
35981 Result result = static_cast<Result>( d.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() ) ) );
35982 return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelines" );
35983 }
35984 template <typename Allocator, typename Dispatch>
35985 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35986 {
35987 Pipeline pipeline;
35988 Result result = static_cast<Result>( d.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 ) ) );
35989 return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipeline" );
35990 }
35991#ifndef VULKAN_HPP_NO_SMART_HANDLE
35992 template <typename Allocator, typename Dispatch>
35993 VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
35994 {
35995 static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
35996 std::vector<UniquePipeline, Allocator> pipelines;
35997 pipelines.reserve( createInfos.size() );
35998 Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
35999 Result result = static_cast<Result>(d.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*>( buffer ) ) );
36000
36001 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36002 for ( size_t i=0 ; i<createInfos.size() ; i++ )
36003 {
36004 pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
36005 }
36006
36007 return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique" );
36008 }
36009 template <typename Allocator, typename Dispatch>
36010 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36011 {
36012 Pipeline pipeline;
36013 Result result = static_cast<Result>( d.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 ) ) );
36014
36015 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36016 return createResultValue<Pipeline,Dispatch>( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelineUnique", deleter );
36017 }
36018#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36020
36021 template<typename Dispatch>
36022 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines, Dispatch const &d) const
36023 {
36024 return static_cast<Result>( d.vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkComputePipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
36025 }
36026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36027 template <typename Allocator, typename Dispatch>
36028 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36029 {
36030 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
36031 Result result = static_cast<Result>( d.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() ) ) );
36032 return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelines" );
36033 }
36034 template <typename Allocator, typename Dispatch>
36035 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36036 {
36037 Pipeline pipeline;
36038 Result result = static_cast<Result>( d.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 ) ) );
36039 return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipeline" );
36040 }
36041#ifndef VULKAN_HPP_NO_SMART_HANDLE
36042 template <typename Allocator, typename Dispatch>
36043 VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<Pipeline,Dispatch>,Allocator>>::type Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36044 {
36045 static_assert( sizeof( Pipeline ) <= sizeof( UniquePipeline ), "Pipeline is greater than UniquePipeline!" );
36046 std::vector<UniquePipeline, Allocator> pipelines;
36047 pipelines.reserve( createInfos.size() );
36048 Pipeline* buffer = reinterpret_cast<Pipeline*>( reinterpret_cast<char*>( pipelines.data() ) + createInfos.size() * ( sizeof( UniquePipeline ) - sizeof( Pipeline ) ) );
36049 Result result = static_cast<Result>(d.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*>( buffer ) ) );
36050
36051 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36052 for ( size_t i=0 ; i<createInfos.size() ; i++ )
36053 {
36054 pipelines.push_back( UniquePipeline( buffer[i], deleter ) );
36055 }
36056
36057 return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique" );
36058 }
36059 template <typename Allocator, typename Dispatch>
36060 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Pipeline,Dispatch>>::type Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36061 {
36062 Pipeline pipeline;
36063 Result result = static_cast<Result>( d.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 ) ) );
36064
36065 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36066 return createResultValue<Pipeline,Dispatch>( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelineUnique", deleter );
36067 }
36068#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36070
36071 template<typename Dispatch>
36072 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36073 {
36074 d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36075 }
36076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36077 template<typename Dispatch>
36078 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36079 {
36080 d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36081 }
36082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36083
36084 template<typename Dispatch>
36085 VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36086 {
36087 d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36088 }
36089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36090 template<typename Dispatch>
36091 VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36092 {
36093 d.vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36094 }
36095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36096
36097 template<typename Dispatch>
36098 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout, Dispatch const &d) const
36099 {
36100 return static_cast<Result>( d.vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
36101 }
36102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36103 template<typename Dispatch>
36104 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36105 {
36106 PipelineLayout pipelineLayout;
36107 Result result = static_cast<Result>( d.vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineLayout*>( &pipelineLayout ) ) );
36108 return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayout" );
36109 }
36110#ifndef VULKAN_HPP_NO_SMART_HANDLE
36111 template<typename Dispatch>
36112 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<PipelineLayout,Dispatch>>::type Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36113 {
36114 PipelineLayout pipelineLayout;
36115 Result result = static_cast<Result>( d.vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineLayout*>( &pipelineLayout ) ) );
36116
36117 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36118 return createResultValue<PipelineLayout,Dispatch>( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayoutUnique", deleter );
36119 }
36120#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36122
36123 template<typename Dispatch>
36124 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36125 {
36126 d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36127 }
36128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36129 template<typename Dispatch>
36130 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36131 {
36132 d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36133 }
36134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36135
36136 template<typename Dispatch>
36137 VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36138 {
36139 d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36140 }
36141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36142 template<typename Dispatch>
36143 VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36144 {
36145 d.vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36146 }
36147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36148
36149 template<typename Dispatch>
36150 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler, Dispatch const &d) const
36151 {
36152 return static_cast<Result>( d.vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
36153 }
36154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36155 template<typename Dispatch>
36156 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36157 {
36158 Sampler sampler;
36159 Result result = static_cast<Result>( d.vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSampler*>( &sampler ) ) );
36160 return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSampler" );
36161 }
36162#ifndef VULKAN_HPP_NO_SMART_HANDLE
36163 template<typename Dispatch>
36164 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Sampler,Dispatch>>::type Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36165 {
36166 Sampler sampler;
36167 Result result = static_cast<Result>( d.vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSampler*>( &sampler ) ) );
36168
36169 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36170 return createResultValue<Sampler,Dispatch>( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerUnique", deleter );
36171 }
36172#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36174
36175 template<typename Dispatch>
36176 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36177 {
36178 d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36179 }
36180#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36181 template<typename Dispatch>
36182 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36183 {
36184 d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36185 }
36186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36187
36188 template<typename Dispatch>
36189 VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36190 {
36191 d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36192 }
36193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36194 template<typename Dispatch>
36195 VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36196 {
36197 d.vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36198 }
36199#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36200
36201 template<typename Dispatch>
36202 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout, Dispatch const &d) const
36203 {
36204 return static_cast<Result>( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
36205 }
36206#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36207 template<typename Dispatch>
36208 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36209 {
36210 DescriptorSetLayout setLayout;
36211 Result result = static_cast<Result>( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorSetLayout*>( &setLayout ) ) );
36212 return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayout" );
36213 }
36214#ifndef VULKAN_HPP_NO_SMART_HANDLE
36215 template<typename Dispatch>
36216 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorSetLayout,Dispatch>>::type Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36217 {
36218 DescriptorSetLayout setLayout;
36219 Result result = static_cast<Result>( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorSetLayout*>( &setLayout ) ) );
36220
36221 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36222 return createResultValue<DescriptorSetLayout,Dispatch>( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayoutUnique", deleter );
36223 }
36224#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36226
36227 template<typename Dispatch>
36228 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36229 {
36230 d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36231 }
36232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36233 template<typename Dispatch>
36234 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36235 {
36236 d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36237 }
36238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36239
36240 template<typename Dispatch>
36241 VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36242 {
36243 d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36244 }
36245#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36246 template<typename Dispatch>
36247 VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36248 {
36249 d.vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36250 }
36251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36252
36253 template<typename Dispatch>
36254 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool, Dispatch const &d) const
36255 {
36256 return static_cast<Result>( d.vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
36257 }
36258#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36259 template<typename Dispatch>
36260 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36261 {
36262 DescriptorPool descriptorPool;
36263 Result result = static_cast<Result>( d.vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorPool*>( &descriptorPool ) ) );
36264 return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPool" );
36265 }
36266#ifndef VULKAN_HPP_NO_SMART_HANDLE
36267 template<typename Dispatch>
36268 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorPool,Dispatch>>::type Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36269 {
36270 DescriptorPool descriptorPool;
36271 Result result = static_cast<Result>( d.vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorPool*>( &descriptorPool ) ) );
36272
36273 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36274 return createResultValue<DescriptorPool,Dispatch>( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPoolUnique", deleter );
36275 }
36276#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36278
36279 template<typename Dispatch>
36280 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36281 {
36282 d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36283 }
36284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36285 template<typename Dispatch>
36286 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36287 {
36288 d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36289 }
36290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36291
36292 template<typename Dispatch>
36293 VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36294 {
36295 d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36296 }
36297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36298 template<typename Dispatch>
36299 VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36300 {
36301 d.vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36302 }
36303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36304
36305#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
36306 template<typename Dispatch>
36307 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const &d) const
36308 {
36309 return static_cast<Result>( d.vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
36310 }
36311#else
36312 template<typename Dispatch>
36313 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const &d ) const
36314 {
36315 Result result = static_cast<Result>( d.vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
36316 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetDescriptorPool" );
36317 }
36318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36319
36320 template<typename Dispatch>
36321 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets, Dispatch const &d) const
36322 {
36323 return static_cast<Result>( d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
36324 }
36325#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36326 template <typename Allocator, typename Dispatch>
36327 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const
36328 {
36329 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
36330 Result result = static_cast<Result>( d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
36331 return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateDescriptorSets" );
36332 }
36333#ifndef VULKAN_HPP_NO_SMART_HANDLE
36334 template <typename Allocator, typename Dispatch>
36335 VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<DescriptorSet,Dispatch>,Allocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const
36336 {
36337 static_assert( sizeof( DescriptorSet ) <= sizeof( UniqueDescriptorSet ), "DescriptorSet is greater than UniqueDescriptorSet!" );
36338 std::vector<UniqueDescriptorSet, Allocator> descriptorSets;
36339 descriptorSets.reserve( allocateInfo.descriptorSetCount );
36340 DescriptorSet* buffer = reinterpret_cast<DescriptorSet*>( reinterpret_cast<char*>( descriptorSets.data() ) + allocateInfo.descriptorSetCount * ( sizeof( UniqueDescriptorSet ) - sizeof( DescriptorSet ) ) );
36341 Result result = static_cast<Result>(d.vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( buffer ) ) );
36342
36343 PoolFree<Device,DescriptorPool,Dispatch> deleter( *this, allocateInfo.descriptorPool, d );
36344 for ( size_t i=0 ; i<allocateInfo.descriptorSetCount ; i++ )
36345 {
36346 descriptorSets.push_back( UniqueDescriptorSet( buffer[i], deleter ) );
36347 }
36348
36349 return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" );
36350 }
36351#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36353
36354 template<typename Dispatch>
36355 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d) const
36356 {
36357 return static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
36358 }
36359#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36360 template<typename Dispatch>
36361 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d ) const
36362 {
36363 Result result = static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
36364 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::freeDescriptorSets" );
36365 }
36366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36367
36368 template<typename Dispatch>
36369 VULKAN_HPP_INLINE Result Device::free( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, Dispatch const &d) const
36370 {
36371 return static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
36372 }
36373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36374 template<typename Dispatch>
36375 VULKAN_HPP_INLINE ResultValueType<void>::type Device::free( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets, Dispatch const &d ) const
36376 {
36377 Result result = static_cast<Result>( d.vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
36378 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::free" );
36379 }
36380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36381
36382 template<typename Dispatch>
36383 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies, Dispatch const &d) const
36384 {
36385 d.vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
36386 }
36387#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36388 template<typename Dispatch>
36389 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies, Dispatch const &d ) const
36390 {
36391 d.vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
36392 }
36393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36394
36395 template<typename Dispatch>
36396 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer, Dispatch const &d) const
36397 {
36398 return static_cast<Result>( d.vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
36399 }
36400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36401 template<typename Dispatch>
36402 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36403 {
36404 Framebuffer framebuffer;
36405 Result result = static_cast<Result>( d.vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFramebuffer*>( &framebuffer ) ) );
36406 return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebuffer" );
36407 }
36408#ifndef VULKAN_HPP_NO_SMART_HANDLE
36409 template<typename Dispatch>
36410 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Framebuffer,Dispatch>>::type Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36411 {
36412 Framebuffer framebuffer;
36413 Result result = static_cast<Result>( d.vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFramebuffer*>( &framebuffer ) ) );
36414
36415 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36416 return createResultValue<Framebuffer,Dispatch>( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebufferUnique", deleter );
36417 }
36418#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36420
36421 template<typename Dispatch>
36422 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36423 {
36424 d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36425 }
36426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36427 template<typename Dispatch>
36428 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36429 {
36430 d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36431 }
36432#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36433
36434 template<typename Dispatch>
36435 VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36436 {
36437 d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36438 }
36439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36440 template<typename Dispatch>
36441 VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36442 {
36443 d.vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36444 }
36445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36446
36447 template<typename Dispatch>
36448 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d) const
36449 {
36450 return static_cast<Result>( d.vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
36451 }
36452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36453 template<typename Dispatch>
36454 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36455 {
36456 RenderPass renderPass;
36457 Result result = static_cast<Result>( d.vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
36458 return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass" );
36459 }
36460#ifndef VULKAN_HPP_NO_SMART_HANDLE
36461 template<typename Dispatch>
36462 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36463 {
36464 RenderPass renderPass;
36465 Result result = static_cast<Result>( d.vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
36466
36467 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36468 return createResultValue<RenderPass,Dispatch>( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPassUnique", deleter );
36469 }
36470#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36471#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36472
36473 template<typename Dispatch>
36474 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36475 {
36476 d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36477 }
36478#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36479 template<typename Dispatch>
36480 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36481 {
36482 d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36483 }
36484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36485
36486 template<typename Dispatch>
36487 VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36488 {
36489 d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36490 }
36491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36492 template<typename Dispatch>
36493 VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36494 {
36495 d.vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36496 }
36497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36498
36499 template<typename Dispatch>
36500 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity, Dispatch const &d) const
36501 {
36502 d.vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
36503 }
36504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36505 template<typename Dispatch>
36506 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass, Dispatch const &d ) const
36507 {
36508 Extent2D granularity;
36509 d.vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
36510 return granularity;
36511 }
36512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36513
36514 template<typename Dispatch>
36515 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool, Dispatch const &d) const
36516 {
36517 return static_cast<Result>( d.vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
36518 }
36519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36520 template<typename Dispatch>
36521 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36522 {
36523 CommandPool commandPool;
36524 Result result = static_cast<Result>( d.vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkCommandPool*>( &commandPool ) ) );
36525 return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPool" );
36526 }
36527#ifndef VULKAN_HPP_NO_SMART_HANDLE
36528 template<typename Dispatch>
36529 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<CommandPool,Dispatch>>::type Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36530 {
36531 CommandPool commandPool;
36532 Result result = static_cast<Result>( d.vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkCommandPool*>( &commandPool ) ) );
36533
36534 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36535 return createResultValue<CommandPool,Dispatch>( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPoolUnique", deleter );
36536 }
36537#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36539
36540 template<typename Dispatch>
36541 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36542 {
36543 d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36544 }
36545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36546 template<typename Dispatch>
36547 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36548 {
36549 d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36550 }
36551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36552
36553 template<typename Dispatch>
36554 VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36555 {
36556 d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36557 }
36558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36559 template<typename Dispatch>
36560 VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36561 {
36562 d.vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36563 }
36564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36565
36566#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
36567 template<typename Dispatch>
36568 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d) const
36569 {
36570 return static_cast<Result>( d.vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
36571 }
36572#else
36573 template<typename Dispatch>
36574 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const &d ) const
36575 {
36576 Result result = static_cast<Result>( d.vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
36577 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetCommandPool" );
36578 }
36579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36580
36581 template<typename Dispatch>
36582 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers, Dispatch const &d) const
36583 {
36584 return static_cast<Result>( d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
36585 }
36586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36587 template <typename Allocator, typename Dispatch>
36588 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const
36589 {
36590 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
36591 Result result = static_cast<Result>( d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
36592 return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateCommandBuffers" );
36593 }
36594#ifndef VULKAN_HPP_NO_SMART_HANDLE
36595 template <typename Allocator, typename Dispatch>
36596 VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<CommandBuffer,Dispatch>,Allocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const
36597 {
36598 static_assert( sizeof( CommandBuffer ) <= sizeof( UniqueCommandBuffer ), "CommandBuffer is greater than UniqueCommandBuffer!" );
36599 std::vector<UniqueCommandBuffer, Allocator> commandBuffers;
36600 commandBuffers.reserve( allocateInfo.commandBufferCount );
36601 CommandBuffer* buffer = reinterpret_cast<CommandBuffer*>( reinterpret_cast<char*>( commandBuffers.data() ) + allocateInfo.commandBufferCount * ( sizeof( UniqueCommandBuffer ) - sizeof( CommandBuffer ) ) );
36602 Result result = static_cast<Result>(d.vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( buffer ) ) );
36603
36604 PoolFree<Device,CommandPool,Dispatch> deleter( *this, allocateInfo.commandPool, d );
36605 for ( size_t i=0 ; i<allocateInfo.commandBufferCount ; i++ )
36606 {
36607 commandBuffers.push_back( UniqueCommandBuffer( buffer[i], deleter ) );
36608 }
36609
36610 return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" );
36611 }
36612#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36614
36615 template<typename Dispatch>
36616 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
36617 {
36618 d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
36619 }
36620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36621 template<typename Dispatch>
36622 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
36623 {
36624 d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
36625 }
36626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36627
36628 template<typename Dispatch>
36629 VULKAN_HPP_INLINE void Device::free( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers, Dispatch const &d) const
36630 {
36631 d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
36632 }
36633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36634 template<typename Dispatch>
36635 VULKAN_HPP_INLINE void Device::free( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers, Dispatch const &d ) const
36636 {
36637 d.vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
36638 }
36639#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36640
36641 template<typename Dispatch>
36642 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains, Dispatch const &d) const
36643 {
36644 return static_cast<Result>( d.vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
36645 }
36646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36647 template <typename Allocator, typename Dispatch>
36648 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36649 {
36650 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
36651 Result result = static_cast<Result>( d.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() ) ) );
36652 return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainsKHR" );
36653 }
36654 template <typename Allocator, typename Dispatch>
36655 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36656 {
36657 SwapchainKHR swapchain;
36658 Result result = static_cast<Result>( d.vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
36659 return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHR" );
36660 }
36661#ifndef VULKAN_HPP_NO_SMART_HANDLE
36662 template <typename Allocator, typename Dispatch>
36663 VULKAN_HPP_INLINE typename ResultValueType<std::vector<UniqueHandle<SwapchainKHR,Dispatch>,Allocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36664 {
36665 static_assert( sizeof( SwapchainKHR ) <= sizeof( UniqueSwapchainKHR ), "SwapchainKHR is greater than UniqueSwapchainKHR!" );
36666 std::vector<UniqueSwapchainKHR, Allocator> swapchainKHRs;
36667 swapchainKHRs.reserve( createInfos.size() );
36668 SwapchainKHR* buffer = reinterpret_cast<SwapchainKHR*>( reinterpret_cast<char*>( swapchainKHRs.data() ) + createInfos.size() * ( sizeof( UniqueSwapchainKHR ) - sizeof( SwapchainKHR ) ) );
36669 Result result = static_cast<Result>(d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( buffer ) ) );
36670
36671 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36672 for ( size_t i=0 ; i<createInfos.size() ; i++ )
36673 {
36674 swapchainKHRs.push_back( UniqueSwapchainKHR( buffer[i], deleter ) );
36675 }
36676
36677 return createResultValue( result, swapchainKHRs, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" );
36678 }
36679 template <typename Allocator, typename Dispatch>
36680 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36681 {
36682 SwapchainKHR swapchain;
36683 Result result = static_cast<Result>( d.vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
36684
36685 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36686 return createResultValue<SwapchainKHR,Dispatch>( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHRUnique", deleter );
36687 }
36688#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36690
36691 template<typename Dispatch>
36692 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain, Dispatch const &d) const
36693 {
36694 return static_cast<Result>( d.vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
36695 }
36696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36697 template<typename Dispatch>
36698 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36699 {
36700 SwapchainKHR swapchain;
36701 Result result = static_cast<Result>( d.vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
36702 return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHR" );
36703 }
36704#ifndef VULKAN_HPP_NO_SMART_HANDLE
36705 template<typename Dispatch>
36706 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SwapchainKHR,Dispatch>>::type Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36707 {
36708 SwapchainKHR swapchain;
36709 Result result = static_cast<Result>( d.vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
36710
36711 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36712 return createResultValue<SwapchainKHR,Dispatch>( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHRUnique", deleter );
36713 }
36714#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36715#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36716
36717 template<typename Dispatch>
36718 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36719 {
36720 d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36721 }
36722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36723 template<typename Dispatch>
36724 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36725 {
36726 d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36727 }
36728#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36729
36730 template<typename Dispatch>
36731 VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36732 {
36733 d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36734 }
36735#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36736 template<typename Dispatch>
36737 VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36738 {
36739 d.vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36740 }
36741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36742
36743 template<typename Dispatch>
36744 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages, Dispatch const &d) const
36745 {
36746 return static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
36747 }
36748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36749 template <typename Allocator, typename Dispatch>
36750 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain, Dispatch const &d ) const
36751 {
36752 std::vector<Image,Allocator> swapchainImages;
36753 uint32_t swapchainImageCount;
36754 Result result;
36755 do
36756 {
36757 result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
36758 if ( ( result == Result::eSuccess ) && swapchainImageCount )
36759 {
36760 swapchainImages.resize( swapchainImageCount );
36761 result = static_cast<Result>( d.vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
36762 }
36763 } while ( result == Result::eIncomplete );
36764 VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
36765 swapchainImages.resize( swapchainImageCount );
36766 return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" );
36767 }
36768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36769
36770 template<typename Dispatch>
36771 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex, Dispatch const &d) const
36772 {
36773 return static_cast<Result>( d.vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
36774 }
36775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36776 template<typename Dispatch>
36777 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, Dispatch const &d ) const
36778 {
36779 uint32_t imageIndex;
36780 Result result = static_cast<Result>( d.vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
36781 return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
36782 }
36783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36784
36785 template<typename Dispatch>
36786 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d) const
36787 {
36788 return static_cast<Result>( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
36789 }
36790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36791 template<typename Dispatch>
36792 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d ) const
36793 {
36794 Result result = static_cast<Result>( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
36795 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectNameEXT" );
36796 }
36797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36798
36799 template<typename Dispatch>
36800 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d) const
36801 {
36802 return static_cast<Result>( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
36803 }
36804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36805 template<typename Dispatch>
36806 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d ) const
36807 {
36808 Result result = static_cast<Result>( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
36809 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectTagEXT" );
36810 }
36811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36812
36813#ifdef VK_USE_PLATFORM_WIN32_NV
36814 template<typename Dispatch>
36815 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d) const
36816 {
36817 return static_cast<Result>( d.vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
36818 }
36819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36820 template<typename Dispatch>
36821 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d ) const
36822 {
36823 HANDLE handle;
36824 Result result = static_cast<Result>( d.vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
36825 return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleNV" );
36826 }
36827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36828#endif /*VK_USE_PLATFORM_WIN32_NV*/
36829
36830 template<typename Dispatch>
36831 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d) const
36832 {
36833 return static_cast<Result>( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
36834 }
36835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36836 template<typename Dispatch>
36837 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36838 {
36839 IndirectCommandsLayoutNVX indirectCommandsLayout;
36840 Result result = static_cast<Result>( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( &indirectCommandsLayout ) ) );
36841 return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVX" );
36842 }
36843#ifndef VULKAN_HPP_NO_SMART_HANDLE
36844 template<typename Dispatch>
36845 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<IndirectCommandsLayoutNVX,Dispatch>>::type Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36846 {
36847 IndirectCommandsLayoutNVX indirectCommandsLayout;
36848 Result result = static_cast<Result>( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( &indirectCommandsLayout ) ) );
36849
36850 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36851 return createResultValue<IndirectCommandsLayoutNVX,Dispatch>( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVXUnique", deleter );
36852 }
36853#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36855
36856 template<typename Dispatch>
36857 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36858 {
36859 d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36860 }
36861#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36862 template<typename Dispatch>
36863 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36864 {
36865 d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36866 }
36867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36868
36869 template<typename Dispatch>
36870 VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36871 {
36872 d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36873 }
36874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36875 template<typename Dispatch>
36876 VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36877 {
36878 d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36879 }
36880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36881
36882 template<typename Dispatch>
36883 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable, Dispatch const &d) const
36884 {
36885 return static_cast<Result>( d.vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
36886 }
36887#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36888 template<typename Dispatch>
36889 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36890 {
36891 ObjectTableNVX objectTable;
36892 Result result = static_cast<Result>( d.vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkObjectTableNVX*>( &objectTable ) ) );
36893 return createResultValue( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVX" );
36894 }
36895#ifndef VULKAN_HPP_NO_SMART_HANDLE
36896 template<typename Dispatch>
36897 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ObjectTableNVX,Dispatch>>::type Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36898 {
36899 ObjectTableNVX objectTable;
36900 Result result = static_cast<Result>( d.vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkObjectTableNVX*>( &objectTable ) ) );
36901
36902 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
36903 return createResultValue<ObjectTableNVX,Dispatch>( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVXUnique", deleter );
36904 }
36905#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
36906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36907
36908 template<typename Dispatch>
36909 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36910 {
36911 d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36912 }
36913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36914 template<typename Dispatch>
36915 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36916 {
36917 d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36918 }
36919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36920
36921 template<typename Dispatch>
36922 VULKAN_HPP_INLINE void Device::destroy( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator, Dispatch const &d) const
36923 {
36924 d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
36925 }
36926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36927 template<typename Dispatch>
36928 VULKAN_HPP_INLINE void Device::destroy( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
36929 {
36930 d.vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
36931 }
36932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36933
36934 template<typename Dispatch>
36935 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d) const
36936 {
36937 return static_cast<Result>( d.vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
36938 }
36939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36940 template<typename Dispatch>
36941 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d ) const
36942 {
36943#ifdef VULKAN_HPP_NO_EXCEPTIONS
36944 VULKAN_HPP_ASSERT( pObjectTableEntries.size() == objectIndices.size() );
36945#else
36946 if ( pObjectTableEntries.size() != objectIndices.size() )
36947 {
36948 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
36949 }
36950#endif // VULKAN_HPP_NO_EXCEPTIONS
36951 Result result = static_cast<Result>( d.vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
36952 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::registerObjectsNVX" );
36953 }
36954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36955
36956 template<typename Dispatch>
36957 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d) const
36958 {
36959 return static_cast<Result>( d.vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
36960 }
36961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
36962 template<typename Dispatch>
36963 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices, Dispatch const &d ) const
36964 {
36965#ifdef VULKAN_HPP_NO_EXCEPTIONS
36966 VULKAN_HPP_ASSERT( objectEntryTypes.size() == objectIndices.size() );
36967#else
36968 if ( objectEntryTypes.size() != objectIndices.size() )
36969 {
36970 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
36971 }
36972#endif // VULKAN_HPP_NO_EXCEPTIONS
36973 Result result = static_cast<Result>( d.vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
36974 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::unregisterObjectsNVX" );
36975 }
36976#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36977
36978#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
36979 template<typename Dispatch>
36980 VULKAN_HPP_INLINE void Device::trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d) const
36981 {
36982 d.vkTrimCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
36983 }
36984#else
36985 template<typename Dispatch>
36986 VULKAN_HPP_INLINE void Device::trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d ) const
36987 {
36988 d.vkTrimCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
36989 }
36990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
36991
36992#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
36993 template<typename Dispatch>
36994 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d) const
36995 {
36996 d.vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
36997 }
36998#else
36999 template<typename Dispatch>
37000 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const &d ) const
37001 {
37002 d.vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
37003 }
37004#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37005
37006#ifdef VK_USE_PLATFORM_WIN32_KHR
37007 template<typename Dispatch>
37008 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
37009 {
37010 return static_cast<Result>( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
37011 }
37012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37013 template<typename Dispatch>
37014 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
37015 {
37016 HANDLE handle;
37017 Result result = static_cast<Result>( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
37018 return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleKHR" );
37019 }
37020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37021#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37022
37023#ifdef VK_USE_PLATFORM_WIN32_KHR
37024 template<typename Dispatch>
37025 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d) const
37026 {
37027 return static_cast<Result>( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
37028 }
37029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37030 template<typename Dispatch>
37031 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d ) const
37032 {
37033 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
37034 Result result = static_cast<Result>( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
37035 return createResultValue( result, memoryWin32HandleProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandlePropertiesKHR" );
37036 }
37037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37038#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37039
37040 template<typename Dispatch>
37041 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
37042 {
37043 return static_cast<Result>( d.vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
37044 }
37045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37046 template<typename Dispatch>
37047 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
37048 {
37049 int fd;
37050 Result result = static_cast<Result>( d.vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
37051 return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdKHR" );
37052 }
37053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37054
37055 template<typename Dispatch>
37056 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d) const
37057 {
37058 return static_cast<Result>( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
37059 }
37060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37061 template<typename Dispatch>
37062 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d ) const
37063 {
37064 MemoryFdPropertiesKHR memoryFdProperties;
37065 Result result = static_cast<Result>( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
37066 return createResultValue( result, memoryFdProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdPropertiesKHR" );
37067 }
37068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37069
37070#ifdef VK_USE_PLATFORM_WIN32_KHR
37071 template<typename Dispatch>
37072 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
37073 {
37074 return static_cast<Result>( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
37075 }
37076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37077 template<typename Dispatch>
37078 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
37079 {
37080 HANDLE handle;
37081 Result result = static_cast<Result>( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
37082 return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreWin32HandleKHR" );
37083 }
37084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37085#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37086
37087#ifdef VK_USE_PLATFORM_WIN32_KHR
37088 template<typename Dispatch>
37089 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d) const
37090 {
37091 return static_cast<Result>( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
37092 }
37093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37094 template<typename Dispatch>
37095 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d ) const
37096 {
37097 Result result = static_cast<Result>( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
37098 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreWin32HandleKHR" );
37099 }
37100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37101#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37102
37103 template<typename Dispatch>
37104 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
37105 {
37106 return static_cast<Result>( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
37107 }
37108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37109 template<typename Dispatch>
37110 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
37111 {
37112 int fd;
37113 Result result = static_cast<Result>( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
37114 return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreFdKHR" );
37115 }
37116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37117
37118 template<typename Dispatch>
37119 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d) const
37120 {
37121 return static_cast<Result>( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
37122 }
37123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37124 template<typename Dispatch>
37125 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d ) const
37126 {
37127 Result result = static_cast<Result>( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
37128 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreFdKHR" );
37129 }
37130#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37131
37132#ifdef VK_USE_PLATFORM_WIN32_KHR
37133 template<typename Dispatch>
37134 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const
37135 {
37136 return static_cast<Result>( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
37137 }
37138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37139 template<typename Dispatch>
37140 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const
37141 {
37142 HANDLE handle;
37143 Result result = static_cast<Result>( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
37144 return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceWin32HandleKHR" );
37145 }
37146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37147#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37148
37149#ifdef VK_USE_PLATFORM_WIN32_KHR
37150 template<typename Dispatch>
37151 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d) const
37152 {
37153 return static_cast<Result>( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
37154 }
37155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37156 template<typename Dispatch>
37157 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d ) const
37158 {
37159 Result result = static_cast<Result>( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
37160 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceWin32HandleKHR" );
37161 }
37162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37163#endif /*VK_USE_PLATFORM_WIN32_KHR*/
37164
37165 template<typename Dispatch>
37166 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const
37167 {
37168 return static_cast<Result>( d.vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
37169 }
37170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37171 template<typename Dispatch>
37172 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d ) const
37173 {
37174 int fd;
37175 Result result = static_cast<Result>( d.vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
37176 return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceFdKHR" );
37177 }
37178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37179
37180 template<typename Dispatch>
37181 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d) const
37182 {
37183 return static_cast<Result>( d.vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
37184 }
37185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37186 template<typename Dispatch>
37187 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d ) const
37188 {
37189 Result result = static_cast<Result>( d.vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
37190 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceFdKHR" );
37191 }
37192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37193
37194 template<typename Dispatch>
37195 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d) const
37196 {
37197 return static_cast<Result>( d.vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
37198 }
37199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37200 template<typename Dispatch>
37201 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d ) const
37202 {
37203 Result result = static_cast<Result>( d.vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
37204 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::displayPowerControlEXT" );
37205 }
37206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37207
37208 template<typename Dispatch>
37209 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
37210 {
37211 return static_cast<Result>( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
37212 }
37213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37214 template<typename Dispatch>
37215 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37216 {
37217 Fence fence;
37218 Result result = static_cast<Result>( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
37219 return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerEventEXT" );
37220 }
37221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37222
37223 template<typename Dispatch>
37224 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence, Dispatch const &d) const
37225 {
37226 return static_cast<Result>( d.vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( pDisplayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
37227 }
37228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37229 template<typename Dispatch>
37230 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37231 {
37232 Fence fence;
37233 Result result = static_cast<Result>( d.vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
37234 return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerDisplayEventEXT" );
37235 }
37236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37237
37238 template<typename Dispatch>
37239 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d) const
37240 {
37241 return static_cast<Result>( d.vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
37242 }
37243#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37244 template<typename Dispatch>
37245 VULKAN_HPP_INLINE ResultValueType<uint64_t>::type Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const &d ) const
37246 {
37247 uint64_t counterValue;
37248 Result result = static_cast<Result>( d.vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
37249 return createResultValue( result, counterValue, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainCounterEXT" );
37250 }
37251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37252
37253 template<typename Dispatch>
37254 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const
37255 {
37256 d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( pPeerMemoryFeatures ) );
37257 }
37258#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37259 template<typename Dispatch>
37260 VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const
37261 {
37262 PeerMemoryFeatureFlags peerMemoryFeatures;
37263 d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( &peerMemoryFeatures ) );
37264 return peerMemoryFeatures;
37265 }
37266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37267
37268 template<typename Dispatch>
37269 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const
37270 {
37271 d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( pPeerMemoryFeatures ) );
37272 }
37273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37274 template<typename Dispatch>
37275 VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const
37276 {
37277 PeerMemoryFeatureFlags peerMemoryFeatures;
37278 d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlags*>( &peerMemoryFeatures ) );
37279 return peerMemoryFeatures;
37280 }
37281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37282
37283 template<typename Dispatch>
37284 VULKAN_HPP_INLINE Result Device::bindBufferMemory2( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const
37285 {
37286 return static_cast<Result>( d.vkBindBufferMemory2( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfo*>( pBindInfos ) ) );
37287 }
37288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37289 template<typename Dispatch>
37290 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d ) const
37291 {
37292 Result result = static_cast<Result>( d.vkBindBufferMemory2( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfo*>( bindInfos.data() ) ) );
37293 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2" );
37294 }
37295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37296
37297 template<typename Dispatch>
37298 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const
37299 {
37300 return static_cast<Result>( d.vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfo*>( pBindInfos ) ) );
37301 }
37302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37303 template<typename Dispatch>
37304 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> bindInfos, Dispatch const &d ) const
37305 {
37306 Result result = static_cast<Result>( d.vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfo*>( bindInfos.data() ) ) );
37307 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2KHR" );
37308 }
37309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37310
37311 template<typename Dispatch>
37312 VULKAN_HPP_INLINE Result Device::bindImageMemory2( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d) const
37313 {
37314 return static_cast<Result>( d.vkBindImageMemory2( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfo*>( pBindInfos ) ) );
37315 }
37316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37317 template<typename Dispatch>
37318 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d ) const
37319 {
37320 Result result = static_cast<Result>( d.vkBindImageMemory2( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfo*>( bindInfos.data() ) ) );
37321 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2" );
37322 }
37323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37324
37325 template<typename Dispatch>
37326 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfo* pBindInfos, Dispatch const &d) const
37327 {
37328 return static_cast<Result>( d.vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfo*>( pBindInfos ) ) );
37329 }
37330#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37331 template<typename Dispatch>
37332 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> bindInfos, Dispatch const &d ) const
37333 {
37334 Result result = static_cast<Result>( d.vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfo*>( bindInfos.data() ) ) );
37335 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2KHR" );
37336 }
37337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37338
37339 template<typename Dispatch>
37340 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d) const
37341 {
37342 return static_cast<Result>( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>( pDeviceGroupPresentCapabilities ) ) );
37343 }
37344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37345 template<typename Dispatch>
37346 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type Device::getGroupPresentCapabilitiesKHR(Dispatch const &d ) const
37347 {
37348 DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
37349 Result result = static_cast<Result>( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>( &deviceGroupPresentCapabilities ) ) );
37350 return createResultValue( result, deviceGroupPresentCapabilities, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupPresentCapabilitiesKHR" );
37351 }
37352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37353
37354 template<typename Dispatch>
37355 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHR( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d) const
37356 {
37357 return static_cast<Result>( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR*>( pModes ) ) );
37358 }
37359#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37360 template<typename Dispatch>
37361 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHR>::type Device::getGroupSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d ) const
37362 {
37363 DeviceGroupPresentModeFlagsKHR modes;
37364 Result result = static_cast<Result>( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR*>( &modes ) ) );
37365 return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupSurfacePresentModesKHR" );
37366 }
37367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37368
37369 template<typename Dispatch>
37370 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d) const
37371 {
37372 return static_cast<Result>( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHR*>( pAcquireInfo ), pImageIndex ) );
37373 }
37374#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37375 template<typename Dispatch>
37376 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d ) const
37377 {
37378 uint32_t imageIndex;
37379 Result result = static_cast<Result>( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHR*>( &acquireInfo ), &imageIndex ) );
37380 return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImage2KHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
37381 }
37382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37383
37384 template<typename Dispatch>
37385 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const
37386 {
37387 return static_cast<Result>( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplate*>( pDescriptorUpdateTemplate ) ) );
37388 }
37389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37390 template<typename Dispatch>
37391 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplate>::type Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37392 {
37393 DescriptorUpdateTemplate descriptorUpdateTemplate;
37394 Result result = static_cast<Result>( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplate*>( &descriptorUpdateTemplate ) ) );
37395 return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplate" );
37396 }
37397#ifndef VULKAN_HPP_NO_SMART_HANDLE
37398 template<typename Dispatch>
37399 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type Device::createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37400 {
37401 DescriptorUpdateTemplate descriptorUpdateTemplate;
37402 Result result = static_cast<Result>( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplate*>( &descriptorUpdateTemplate ) ) );
37403
37404 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
37405 return createResultValue<DescriptorUpdateTemplate,Dispatch>( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateUnique", deleter );
37406 }
37407#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
37408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37409
37410 template<typename Dispatch>
37411 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const
37412 {
37413 return static_cast<Result>( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplate*>( pDescriptorUpdateTemplate ) ) );
37414 }
37415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37416 template<typename Dispatch>
37417 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplate>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37418 {
37419 DescriptorUpdateTemplate descriptorUpdateTemplate;
37420 Result result = static_cast<Result>( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplate*>( &descriptorUpdateTemplate ) ) );
37421 return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHR" );
37422 }
37423#ifndef VULKAN_HPP_NO_SMART_HANDLE
37424 template<typename Dispatch>
37425 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DescriptorUpdateTemplate,Dispatch>>::type Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37426 {
37427 DescriptorUpdateTemplate descriptorUpdateTemplate;
37428 Result result = static_cast<Result>( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplate*>( &descriptorUpdateTemplate ) ) );
37429
37430 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
37431 return createResultValue<DescriptorUpdateTemplate,Dispatch>( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHRUnique", deleter );
37432 }
37433#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
37434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37435
37436 template<typename Dispatch>
37437 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37438 {
37439 d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37440 }
37441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37442 template<typename Dispatch>
37443 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37444 {
37445 d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37446 }
37447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37448
37449 template<typename Dispatch>
37450 VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37451 {
37452 d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37453 }
37454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37455 template<typename Dispatch>
37456 VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37457 {
37458 d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37459 }
37460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37461
37462 template<typename Dispatch>
37463 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37464 {
37465 d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37466 }
37467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37468 template<typename Dispatch>
37469 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37470 {
37471 d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37472 }
37473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37474
37475#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
37476 template<typename Dispatch>
37477 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const
37478 {
37479 d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
37480 }
37481#else
37482 template<typename Dispatch>
37483 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const
37484 {
37485 d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
37486 }
37487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37488
37489#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
37490 template<typename Dispatch>
37491 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const
37492 {
37493 d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
37494 }
37495#else
37496 template<typename Dispatch>
37497 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const
37498 {
37499 d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ), pData );
37500 }
37501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37502
37503 template<typename Dispatch>
37504 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata, Dispatch const &d) const
37505 {
37506 d.vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
37507 }
37508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37509 template<typename Dispatch>
37510 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata, Dispatch const &d ) const
37511 {
37512#ifdef VULKAN_HPP_NO_EXCEPTIONS
37513 VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
37514#else
37515 if ( swapchains.size() != metadata.size() )
37516 {
37517 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
37518 }
37519#endif // VULKAN_HPP_NO_EXCEPTIONS
37520 d.vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
37521 }
37522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37523
37524#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
37525 template<typename Dispatch>
37526 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d) const
37527 {
37528 return static_cast<Result>( d.vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
37529 }
37530#else
37531 template<typename Dispatch>
37532 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const &d ) const
37533 {
37534 Result result = static_cast<Result>( d.vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
37535 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
37536 }
37537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37538
37539 template<typename Dispatch>
37540 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d) const
37541 {
37542 return static_cast<Result>( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
37543 }
37544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37545 template<typename Dispatch>
37546 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, Dispatch const &d ) const
37547 {
37548 RefreshCycleDurationGOOGLE displayTimingProperties;
37549 Result result = static_cast<Result>( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
37550 return createResultValue( result, displayTimingProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getRefreshCycleDurationGOOGLE" );
37551 }
37552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37553
37554 template<typename Dispatch>
37555 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d) const
37556 {
37557 return static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
37558 }
37559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37560 template <typename Allocator, typename Dispatch>
37561 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const &d ) const
37562 {
37563 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
37564 uint32_t presentationTimingCount;
37565 Result result;
37566 do
37567 {
37568 result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
37569 if ( ( result == Result::eSuccess ) && presentationTimingCount )
37570 {
37571 presentationTimings.resize( presentationTimingCount );
37572 result = static_cast<Result>( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
37573 }
37574 } while ( result == Result::eIncomplete );
37575 VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
37576 presentationTimings.resize( presentationTimingCount );
37577 return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" );
37578 }
37579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37580
37581 template<typename Dispatch>
37582 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
37583 {
37584 d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
37585 }
37586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37587 template<typename Dispatch>
37588 VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37589 {
37590 MemoryRequirements2 memoryRequirements;
37591 d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37592 return memoryRequirements;
37593 }
37594 template <typename ...T, typename Dispatch>
37595 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37596 {
37597 StructureChain<T...> structureChain;
37598 MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
37599 d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37600 return structureChain;
37601 }
37602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37603
37604 template<typename Dispatch>
37605 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
37606 {
37607 d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
37608 }
37609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37610 template<typename Dispatch>
37611 VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37612 {
37613 MemoryRequirements2 memoryRequirements;
37614 d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37615 return memoryRequirements;
37616 }
37617 template <typename ...T, typename Dispatch>
37618 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37619 {
37620 StructureChain<T...> structureChain;
37621 MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
37622 d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37623 return structureChain;
37624 }
37625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37626
37627 template<typename Dispatch>
37628 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
37629 {
37630 d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
37631 }
37632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37633 template<typename Dispatch>
37634 VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37635 {
37636 MemoryRequirements2 memoryRequirements;
37637 d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37638 return memoryRequirements;
37639 }
37640 template <typename ...T, typename Dispatch>
37641 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37642 {
37643 StructureChain<T...> structureChain;
37644 MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
37645 d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37646 return structureChain;
37647 }
37648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37649
37650 template<typename Dispatch>
37651 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2* pInfo, MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const
37652 {
37653 d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( pInfo ), reinterpret_cast<VkMemoryRequirements2*>( pMemoryRequirements ) );
37654 }
37655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37656 template<typename Dispatch>
37657 VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37658 {
37659 MemoryRequirements2 memoryRequirements;
37660 d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37661 return memoryRequirements;
37662 }
37663 template <typename ...T, typename Dispatch>
37664 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37665 {
37666 StructureChain<T...> structureChain;
37667 MemoryRequirements2& memoryRequirements = structureChain.template get<MemoryRequirements2>();
37668 d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( &info ), reinterpret_cast<VkMemoryRequirements2*>( &memoryRequirements ) );
37669 return structureChain;
37670 }
37671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37672
37673 template<typename Dispatch>
37674 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const
37675 {
37676 d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( pSparseMemoryRequirements ) );
37677 }
37678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37679 template <typename Allocator, typename Dispatch>
37680 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37681 {
37682 std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements;
37683 uint32_t sparseMemoryRequirementCount;
37684 d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
37685 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
37686 d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
37687 return sparseMemoryRequirements;
37688 }
37689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37690
37691 template<typename Dispatch>
37692 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const
37693 {
37694 d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( pSparseMemoryRequirements ) );
37695 }
37696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37697 template <typename Allocator, typename Dispatch>
37698 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const
37699 {
37700 std::vector<SparseImageMemoryRequirements2,Allocator> sparseMemoryRequirements;
37701 uint32_t sparseMemoryRequirementCount;
37702 d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, nullptr );
37703 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
37704 d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2*>( sparseMemoryRequirements.data() ) );
37705 return sparseMemoryRequirements;
37706 }
37707#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37708
37709 template<typename Dispatch>
37710 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const
37711 {
37712 return static_cast<Result>( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversion*>( pYcbcrConversion ) ) );
37713 }
37714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37715 template<typename Dispatch>
37716 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversion>::type Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37717 {
37718 SamplerYcbcrConversion ycbcrConversion;
37719 Result result = static_cast<Result>( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversion*>( &ycbcrConversion ) ) );
37720 return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversion" );
37721 }
37722#ifndef VULKAN_HPP_NO_SMART_HANDLE
37723 template<typename Dispatch>
37724 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type Device::createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37725 {
37726 SamplerYcbcrConversion ycbcrConversion;
37727 Result result = static_cast<Result>( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversion*>( &ycbcrConversion ) ) );
37728
37729 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
37730 return createResultValue<SamplerYcbcrConversion,Dispatch>( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionUnique", deleter );
37731 }
37732#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
37733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37734
37735 template<typename Dispatch>
37736 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const
37737 {
37738 return static_cast<Result>( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversion*>( pYcbcrConversion ) ) );
37739 }
37740#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37741 template<typename Dispatch>
37742 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversion>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37743 {
37744 SamplerYcbcrConversion ycbcrConversion;
37745 Result result = static_cast<Result>( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversion*>( &ycbcrConversion ) ) );
37746 return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHR" );
37747 }
37748#ifndef VULKAN_HPP_NO_SMART_HANDLE
37749 template<typename Dispatch>
37750 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SamplerYcbcrConversion,Dispatch>>::type Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37751 {
37752 SamplerYcbcrConversion ycbcrConversion;
37753 Result result = static_cast<Result>( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversion*>( &ycbcrConversion ) ) );
37754
37755 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
37756 return createResultValue<SamplerYcbcrConversion,Dispatch>( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHRUnique", deleter );
37757 }
37758#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
37759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37760
37761 template<typename Dispatch>
37762 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37763 {
37764 d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37765 }
37766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37767 template<typename Dispatch>
37768 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37769 {
37770 d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37771 }
37772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37773
37774 template<typename Dispatch>
37775 VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37776 {
37777 d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37778 }
37779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37780 template<typename Dispatch>
37781 VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37782 {
37783 d.vkDestroySamplerYcbcrConversion( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37784 }
37785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37786
37787 template<typename Dispatch>
37788 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37789 {
37790 d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37791 }
37792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37793 template<typename Dispatch>
37794 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37795 {
37796 d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37797 }
37798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37799
37800 template<typename Dispatch>
37801 VULKAN_HPP_INLINE void Device::getQueue2( const DeviceQueueInfo2* pQueueInfo, Queue* pQueue, Dispatch const &d) const
37802 {
37803 d.vkGetDeviceQueue2( m_device, reinterpret_cast<const VkDeviceQueueInfo2*>( pQueueInfo ), reinterpret_cast<VkQueue*>( pQueue ) );
37804 }
37805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37806 template<typename Dispatch>
37807 VULKAN_HPP_INLINE Queue Device::getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d ) const
37808 {
37809 Queue queue;
37810 d.vkGetDeviceQueue2( m_device, reinterpret_cast<const VkDeviceQueueInfo2*>( &queueInfo ), reinterpret_cast<VkQueue*>( &queue ) );
37811 return queue;
37812 }
37813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37814
37815 template<typename Dispatch>
37816 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache, Dispatch const &d) const
37817 {
37818 return static_cast<Result>( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
37819 }
37820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37821 template<typename Dispatch>
37822 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37823 {
37824 ValidationCacheEXT validationCache;
37825 Result result = static_cast<Result>( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkValidationCacheEXT*>( &validationCache ) ) );
37826 return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXT" );
37827 }
37828#ifndef VULKAN_HPP_NO_SMART_HANDLE
37829 template<typename Dispatch>
37830 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<ValidationCacheEXT,Dispatch>>::type Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37831 {
37832 ValidationCacheEXT validationCache;
37833 Result result = static_cast<Result>( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkValidationCacheEXT*>( &validationCache ) ) );
37834
37835 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
37836 return createResultValue<ValidationCacheEXT,Dispatch>( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXTUnique", deleter );
37837 }
37838#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
37839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37840
37841 template<typename Dispatch>
37842 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37843 {
37844 d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37845 }
37846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37847 template<typename Dispatch>
37848 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37849 {
37850 d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37851 }
37852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37853
37854 template<typename Dispatch>
37855 VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator, Dispatch const &d) const
37856 {
37857 d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
37858 }
37859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37860 template<typename Dispatch>
37861 VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
37862 {
37863 d.vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
37864 }
37865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37866
37867 template<typename Dispatch>
37868 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d) const
37869 {
37870 return static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
37871 }
37872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37873 template <typename Allocator, typename Dispatch>
37874 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, Dispatch const &d ) const
37875 {
37876 std::vector<uint8_t,Allocator> data;
37877 size_t dataSize;
37878 Result result;
37879 do
37880 {
37881 result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
37882 if ( ( result == Result::eSuccess ) && dataSize )
37883 {
37884 data.resize( dataSize );
37885 result = static_cast<Result>( d.vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
37886 }
37887 } while ( result == Result::eIncomplete );
37888 VULKAN_HPP_ASSERT( dataSize <= data.size() );
37889 data.resize( dataSize );
37890 return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" );
37891 }
37892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37893
37894 template<typename Dispatch>
37895 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches, Dispatch const &d) const
37896 {
37897 return static_cast<Result>( d.vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
37898 }
37899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37900 template<typename Dispatch>
37901 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches, Dispatch const &d ) const
37902 {
37903 Result result = static_cast<Result>( d.vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
37904 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergeValidationCachesEXT" );
37905 }
37906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37907
37908 template<typename Dispatch>
37909 VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const
37910 {
37911 d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( pSupport ) );
37912 }
37913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37914 template<typename Dispatch>
37915 VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
37916 {
37917 DescriptorSetLayoutSupport support;
37918 d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
37919 return support;
37920 }
37921 template <typename ...T, typename Dispatch>
37922 VULKAN_HPP_INLINE StructureChain<T...> Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
37923 {
37924 StructureChain<T...> structureChain;
37925 DescriptorSetLayoutSupport& support = structureChain.template get<DescriptorSetLayoutSupport>();
37926 d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
37927 return structureChain;
37928 }
37929#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37930
37931 template<typename Dispatch>
37932 VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo* pCreateInfo, DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const
37933 {
37934 d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( pSupport ) );
37935 }
37936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37937 template<typename Dispatch>
37938 VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
37939 {
37940 DescriptorSetLayoutSupport support;
37941 d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
37942 return support;
37943 }
37944 template <typename ...T, typename Dispatch>
37945 VULKAN_HPP_INLINE StructureChain<T...> Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const
37946 {
37947 StructureChain<T...> structureChain;
37948 DescriptorSetLayoutSupport& support = structureChain.template get<DescriptorSetLayoutSupport>();
37949 d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<VkDescriptorSetLayoutSupport*>( &support ) );
37950 return structureChain;
37951 }
37952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37953
37954 template<typename Dispatch>
37955 VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d) const
37956 {
37957 return static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), pInfoSize, pInfo ) );
37958 }
37959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37960 template <typename Allocator, typename Dispatch>
37961 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const &d ) const
37962 {
37963 std::vector<uint8_t,Allocator> info;
37964 size_t infoSize;
37965 Result result;
37966 do
37967 {
37968 result = static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
37969 if ( ( result == Result::eSuccess ) && infoSize )
37970 {
37971 info.resize( infoSize );
37972 result = static_cast<Result>( d.vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, reinterpret_cast<void*>( info.data() ) ) );
37973 }
37974 } while ( result == Result::eIncomplete );
37975 VULKAN_HPP_ASSERT( infoSize <= info.size() );
37976 info.resize( infoSize );
37977 return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" );
37978 }
37979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37980
37981 template<typename Dispatch>
37982 VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d) const
37983 {
37984 return static_cast<Result>( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>( pNameInfo ) ) );
37985 }
37986#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
37987 template<typename Dispatch>
37988 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d ) const
37989 {
37990 Result result = static_cast<Result>( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>( &nameInfo ) ) );
37991 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectNameEXT" );
37992 }
37993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37994
37995 template<typename Dispatch>
37996 VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d) const
37997 {
37998 return static_cast<Result>( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>( pTagInfo ) ) );
37999 }
38000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38001 template<typename Dispatch>
38002 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d ) const
38003 {
38004 Result result = static_cast<Result>( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>( &tagInfo ) ) );
38005 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectTagEXT" );
38006 }
38007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38008
38009 template<typename Dispatch>
38010 VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d) const
38011 {
38012 return static_cast<Result>( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( pMemoryHostPointerProperties ) ) );
38013 }
38014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38015 template<typename Dispatch>
38016 VULKAN_HPP_INLINE ResultValueType<MemoryHostPointerPropertiesEXT>::type Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d ) const
38017 {
38018 MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
38019 Result result = static_cast<Result>( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( &memoryHostPointerProperties ) ) );
38020 return createResultValue( result, memoryHostPointerProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryHostPointerPropertiesEXT" );
38021 }
38022#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38023
38024 template<typename Dispatch>
38025 VULKAN_HPP_INLINE Result Device::createRenderPass2KHR( const RenderPassCreateInfo2KHR* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass, Dispatch const &d) const
38026 {
38027 return static_cast<Result>( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast<const VkRenderPassCreateInfo2KHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
38028 }
38029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38030 template<typename Dispatch>
38031 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
38032 {
38033 RenderPass renderPass;
38034 Result result = static_cast<Result>( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast<const VkRenderPassCreateInfo2KHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
38035 return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHR" );
38036 }
38037#ifndef VULKAN_HPP_NO_SMART_HANDLE
38038 template<typename Dispatch>
38039 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<RenderPass,Dispatch>>::type Device::createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
38040 {
38041 RenderPass renderPass;
38042 Result result = static_cast<Result>( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast<const VkRenderPassCreateInfo2KHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
38043
38044 ObjectDestroy<Device,Dispatch> deleter( *this, allocator, d );
38045 return createResultValue<RenderPass,Dispatch>( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHRUnique", deleter );
38046 }
38047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
38048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38049
38050#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
38051 template<typename Dispatch>
38052 VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d) const
38053 {
38054 return static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( pProperties ) ) );
38055 }
38056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38057 template<typename Dispatch>
38058 VULKAN_HPP_INLINE ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const
38059 {
38060 AndroidHardwareBufferPropertiesANDROID properties;
38061 Result result = static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( &properties ) ) );
38062 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" );
38063 }
38064 template <typename ...T, typename Dispatch>
38065 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const
38066 {
38067 StructureChain<T...> structureChain;
38068 AndroidHardwareBufferPropertiesANDROID& properties = structureChain.template get<AndroidHardwareBufferPropertiesANDROID>();
38069 Result result = static_cast<Result>( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID*>( &properties ) ) );
38070 return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" );
38071 }
38072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38073#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
38074
38075#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
38076 template<typename Dispatch>
38077 VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d) const
38078 {
38079 return static_cast<Result>( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>( pInfo ), pBuffer ) );
38080 }
38081#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38082 template<typename Dispatch>
38083 VULKAN_HPP_INLINE ResultValueType<struct AHardwareBuffer*>::type Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d ) const
38084 {
38085 struct AHardwareBuffer* buffer;
38086 Result result = static_cast<Result>( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID*>( &info ), &buffer ) );
38087 return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryAndroidHardwareBufferANDROID" );
38088 }
38089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38090#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
38091
38092#ifndef VULKAN_HPP_NO_SMART_HANDLE
38093
38094 template <typename Dispatch> class UniqueHandleTraits<Device,Dispatch> {public: using deleter = ObjectDestroy<NoParent,Dispatch>; };
38095 using UniqueDevice = UniqueHandle<Device,DispatchLoaderStatic>;
38096#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
38097
38098 class PhysicalDevice
38099 {
38100 public:
38101 VULKAN_HPP_CONSTEXPR PhysicalDevice()
38102 : m_physicalDevice(VK_NULL_HANDLE)
38103 {}
38104
38105 VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t )
38106 : m_physicalDevice(VK_NULL_HANDLE)
38107 {}
38108
38109 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
38110 : m_physicalDevice( physicalDevice )
38111 {}
38112
38113#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
38114 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
38115 {
38116 m_physicalDevice = physicalDevice;
38117 return *this;
38118 }
38119#endif
38120
38121 PhysicalDevice & operator=( std::nullptr_t )
38122 {
38123 m_physicalDevice = VK_NULL_HANDLE;
38124 return *this;
38125 }
38126
38127 bool operator==( PhysicalDevice const & rhs ) const
38128 {
38129 return m_physicalDevice == rhs.m_physicalDevice;
38130 }
38131
38132 bool operator!=(PhysicalDevice const & rhs ) const
38133 {
38134 return m_physicalDevice != rhs.m_physicalDevice;
38135 }
38136
38137 bool operator<(PhysicalDevice const & rhs ) const
38138 {
38139 return m_physicalDevice < rhs.m_physicalDevice;
38140 }
38141
38142 template<typename Dispatch = DispatchLoaderStatic>
38143 void getProperties( PhysicalDeviceProperties* pProperties, Dispatch const &d = Dispatch() ) const;
38144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38145 template<typename Dispatch = DispatchLoaderStatic>
38146 PhysicalDeviceProperties getProperties(Dispatch const &d = Dispatch() ) const;
38147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38148
38149 template<typename Dispatch = DispatchLoaderStatic>
38150 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
38151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38152 template <typename Allocator = std::allocator<QueueFamilyProperties>, typename Dispatch = DispatchLoaderStatic>
38153 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties(Dispatch const &d = Dispatch() ) const;
38154#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38155
38156 template<typename Dispatch = DispatchLoaderStatic>
38157 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
38158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38159 template<typename Dispatch = DispatchLoaderStatic>
38160 PhysicalDeviceMemoryProperties getMemoryProperties(Dispatch const &d = Dispatch() ) const;
38161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38162
38163 template<typename Dispatch = DispatchLoaderStatic>
38164 void getFeatures( PhysicalDeviceFeatures* pFeatures, Dispatch const &d = Dispatch() ) const;
38165#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38166 template<typename Dispatch = DispatchLoaderStatic>
38167 PhysicalDeviceFeatures getFeatures(Dispatch const &d = Dispatch() ) const;
38168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38169
38170 template<typename Dispatch = DispatchLoaderStatic>
38171 void getFormatProperties( Format format, FormatProperties* pFormatProperties, Dispatch const &d = Dispatch() ) const;
38172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38173 template<typename Dispatch = DispatchLoaderStatic>
38174 FormatProperties getFormatProperties( Format format, Dispatch const &d = Dispatch() ) const;
38175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38176
38177 template<typename Dispatch = DispatchLoaderStatic>
38178 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
38179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38180 template<typename Dispatch = DispatchLoaderStatic>
38181 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, Dispatch const &d = Dispatch() ) const;
38182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38183
38184 template<typename Dispatch = DispatchLoaderStatic>
38185 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice, Dispatch const &d = Dispatch() ) const;
38186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38187 template<typename Dispatch = DispatchLoaderStatic>
38188 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
38189#ifndef VULKAN_HPP_NO_SMART_HANDLE
38190 template<typename Dispatch = DispatchLoaderStatic>
38191 typename ResultValueType<UniqueHandle<Device,Dispatch>>::type createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
38192#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
38193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38194
38195 template<typename Dispatch = DispatchLoaderStatic>
38196 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d = Dispatch() ) const;
38197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38198 template <typename Allocator = std::allocator<LayerProperties>, typename Dispatch = DispatchLoaderStatic>
38199 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties(Dispatch const &d = Dispatch() ) const;
38200#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38201
38202 template<typename Dispatch = DispatchLoaderStatic>
38203 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d = Dispatch() ) const;
38204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38205 template <typename Allocator = std::allocator<ExtensionProperties>, typename Dispatch = DispatchLoaderStatic>
38206 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr, Dispatch const &d = Dispatch() ) const;
38207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38208
38209 template<typename Dispatch = DispatchLoaderStatic>
38210 void getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties, Dispatch const &d = Dispatch() ) const;
38211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38212 template <typename Allocator = std::allocator<SparseImageFormatProperties>, typename Dispatch = DispatchLoaderStatic>
38213 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Dispatch const &d = Dispatch() ) const;
38214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38215
38216 template<typename Dispatch = DispatchLoaderStatic>
38217 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
38218#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38219 template <typename Allocator = std::allocator<DisplayPropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
38220 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR(Dispatch const &d = Dispatch() ) const;
38221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38222
38223 template<typename Dispatch = DispatchLoaderStatic>
38224 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
38225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38226 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
38227 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR(Dispatch const &d = Dispatch() ) const;
38228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38229
38230 template<typename Dispatch = DispatchLoaderStatic>
38231 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays, Dispatch const &d = Dispatch() ) const;
38232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38233 template <typename Allocator = std::allocator<DisplayKHR>, typename Dispatch = DispatchLoaderStatic>
38234 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d = Dispatch() ) const;
38235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38236
38237 template<typename Dispatch = DispatchLoaderStatic>
38238 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const;
38239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38240 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>, typename Dispatch = DispatchLoaderStatic>
38241 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38243
38244 template<typename Dispatch = DispatchLoaderStatic>
38245 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode, Dispatch const &d = Dispatch() ) const;
38246#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38247 template<typename Dispatch = DispatchLoaderStatic>
38248 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
38249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38250
38251 template<typename Dispatch = DispatchLoaderStatic>
38252 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d = Dispatch() ) const;
38253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38254 template<typename Dispatch = DispatchLoaderStatic>
38255 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d = Dispatch() ) const;
38256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38257
38258#ifdef VK_USE_PLATFORM_MIR_KHR
38259 template<typename Dispatch = DispatchLoaderStatic>
38260 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection, Dispatch const &d = Dispatch() ) const;
38261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38262 template<typename Dispatch = DispatchLoaderStatic>
38263 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection, Dispatch const &d = Dispatch() ) const;
38264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38265#endif /*VK_USE_PLATFORM_MIR_KHR*/
38266
38267 template<typename Dispatch = DispatchLoaderStatic>
38268 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported, Dispatch const &d = Dispatch() ) const;
38269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38270 template<typename Dispatch = DispatchLoaderStatic>
38271 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38273
38274 template<typename Dispatch = DispatchLoaderStatic>
38275 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
38276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38277 template<typename Dispatch = DispatchLoaderStatic>
38278 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38280
38281 template<typename Dispatch = DispatchLoaderStatic>
38282 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const;
38283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38284 template <typename Allocator = std::allocator<SurfaceFormatKHR>, typename Dispatch = DispatchLoaderStatic>
38285 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38287
38288 template<typename Dispatch = DispatchLoaderStatic>
38289 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes, Dispatch const &d = Dispatch() ) const;
38290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38291 template <typename Allocator = std::allocator<PresentModeKHR>, typename Dispatch = DispatchLoaderStatic>
38292 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38294
38295#ifdef VK_USE_PLATFORM_WAYLAND_KHR
38296 template<typename Dispatch = DispatchLoaderStatic>
38297 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d = Dispatch() ) const;
38298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38299 template<typename Dispatch = DispatchLoaderStatic>
38300 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d = Dispatch() ) const;
38301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38302#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
38303
38304#ifdef VK_USE_PLATFORM_WIN32_KHR
38305 template<typename Dispatch = DispatchLoaderStatic>
38306 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d = Dispatch() ) const;
38307#endif /*VK_USE_PLATFORM_WIN32_KHR*/
38308
38309#ifdef VK_USE_PLATFORM_XLIB_KHR
38310 template<typename Dispatch = DispatchLoaderStatic>
38311 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const;
38312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38313 template<typename Dispatch = DispatchLoaderStatic>
38314 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const;
38315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38316#endif /*VK_USE_PLATFORM_XLIB_KHR*/
38317
38318#ifdef VK_USE_PLATFORM_XCB_KHR
38319 template<typename Dispatch = DispatchLoaderStatic>
38320 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const;
38321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38322 template<typename Dispatch = DispatchLoaderStatic>
38323 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const;
38324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38325#endif /*VK_USE_PLATFORM_XCB_KHR*/
38326
38327 template<typename Dispatch = DispatchLoaderStatic>
38328 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d = Dispatch() ) const;
38329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38330 template<typename Dispatch = DispatchLoaderStatic>
38331 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d = Dispatch() ) const;
38332#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38333
38334 template<typename Dispatch = DispatchLoaderStatic>
38335 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d = Dispatch() ) const;
38336#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38337 template<typename Dispatch = DispatchLoaderStatic>
38338 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d = Dispatch() ) const;
38339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38340
38341 template<typename Dispatch = DispatchLoaderStatic>
38342 void getFeatures2( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const;
38343#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38344 template<typename Dispatch = DispatchLoaderStatic>
38345 PhysicalDeviceFeatures2 getFeatures2(Dispatch const &d = Dispatch() ) const;
38346 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38347 StructureChain<T...> getFeatures2(Dispatch const &d = Dispatch() ) const;
38348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38349
38350 template<typename Dispatch = DispatchLoaderStatic>
38351 void getFeatures2KHR( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const;
38352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38353 template<typename Dispatch = DispatchLoaderStatic>
38354 PhysicalDeviceFeatures2 getFeatures2KHR(Dispatch const &d = Dispatch() ) const;
38355 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38356 StructureChain<T...> getFeatures2KHR(Dispatch const &d = Dispatch() ) const;
38357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38358
38359 template<typename Dispatch = DispatchLoaderStatic>
38360 void getProperties2( PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
38361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38362 template<typename Dispatch = DispatchLoaderStatic>
38363 PhysicalDeviceProperties2 getProperties2(Dispatch const &d = Dispatch() ) const;
38364 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38365 StructureChain<T...> getProperties2(Dispatch const &d = Dispatch() ) const;
38366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38367
38368 template<typename Dispatch = DispatchLoaderStatic>
38369 void getProperties2KHR( PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
38370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38371 template<typename Dispatch = DispatchLoaderStatic>
38372 PhysicalDeviceProperties2 getProperties2KHR(Dispatch const &d = Dispatch() ) const;
38373 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38374 StructureChain<T...> getProperties2KHR(Dispatch const &d = Dispatch() ) const;
38375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38376
38377 template<typename Dispatch = DispatchLoaderStatic>
38378 void getFormatProperties2( Format format, FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const;
38379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38380 template<typename Dispatch = DispatchLoaderStatic>
38381 FormatProperties2 getFormatProperties2( Format format, Dispatch const &d = Dispatch() ) const;
38382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38383
38384 template<typename Dispatch = DispatchLoaderStatic>
38385 void getFormatProperties2KHR( Format format, FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const;
38386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38387 template<typename Dispatch = DispatchLoaderStatic>
38388 FormatProperties2 getFormatProperties2KHR( Format format, Dispatch const &d = Dispatch() ) const;
38389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38390
38391 template<typename Dispatch = DispatchLoaderStatic>
38392 Result getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
38393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38394 template<typename Dispatch = DispatchLoaderStatic>
38395 ResultValueType<ImageFormatProperties2>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
38396 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38397 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
38398#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38399
38400 template<typename Dispatch = DispatchLoaderStatic>
38401 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const;
38402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38403 template<typename Dispatch = DispatchLoaderStatic>
38404 ResultValueType<ImageFormatProperties2>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
38405 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38406 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const;
38407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38408
38409 template<typename Dispatch = DispatchLoaderStatic>
38410 void getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
38411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38412 template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
38413 std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2(Dispatch const &d = Dispatch() ) const;
38414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38415
38416 template<typename Dispatch = DispatchLoaderStatic>
38417 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const;
38418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38419 template <typename Allocator = std::allocator<QueueFamilyProperties2>, typename Dispatch = DispatchLoaderStatic>
38420 std::vector<QueueFamilyProperties2,Allocator> getQueueFamilyProperties2KHR(Dispatch const &d = Dispatch() ) const;
38421#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38422
38423 template<typename Dispatch = DispatchLoaderStatic>
38424 void getMemoryProperties2( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
38425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38426 template<typename Dispatch = DispatchLoaderStatic>
38427 PhysicalDeviceMemoryProperties2 getMemoryProperties2(Dispatch const &d = Dispatch() ) const;
38428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38429
38430 template<typename Dispatch = DispatchLoaderStatic>
38431 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const;
38432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38433 template<typename Dispatch = DispatchLoaderStatic>
38434 PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR(Dispatch const &d = Dispatch() ) const;
38435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38436
38437 template<typename Dispatch = DispatchLoaderStatic>
38438 void getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
38439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38440 template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
38441 std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const;
38442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38443
38444 template<typename Dispatch = DispatchLoaderStatic>
38445 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const;
38446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38447 template <typename Allocator = std::allocator<SparseImageFormatProperties2>, typename Dispatch = DispatchLoaderStatic>
38448 std::vector<SparseImageFormatProperties2,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const;
38449#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38450
38451 template<typename Dispatch = DispatchLoaderStatic>
38452 void getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const;
38453#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38454 template<typename Dispatch = DispatchLoaderStatic>
38455 ExternalBufferProperties getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const;
38456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38457
38458 template<typename Dispatch = DispatchLoaderStatic>
38459 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const;
38460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38461 template<typename Dispatch = DispatchLoaderStatic>
38462 ExternalBufferProperties getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const;
38463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38464
38465 template<typename Dispatch = DispatchLoaderStatic>
38466 void getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const;
38467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38468 template<typename Dispatch = DispatchLoaderStatic>
38469 ExternalSemaphoreProperties getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const;
38470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38471
38472 template<typename Dispatch = DispatchLoaderStatic>
38473 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const;
38474#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38475 template<typename Dispatch = DispatchLoaderStatic>
38476 ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const;
38477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38478
38479 template<typename Dispatch = DispatchLoaderStatic>
38480 void getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const;
38481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38482 template<typename Dispatch = DispatchLoaderStatic>
38483 ExternalFenceProperties getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const;
38484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38485
38486 template<typename Dispatch = DispatchLoaderStatic>
38487 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const;
38488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38489 template<typename Dispatch = DispatchLoaderStatic>
38490 ExternalFenceProperties getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const;
38491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38492
38493#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
38494 template<typename Dispatch = DispatchLoaderStatic>
38495 Result releaseDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38496#else
38497 template<typename Dispatch = DispatchLoaderStatic>
38498 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38500
38501#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
38502 template<typename Dispatch = DispatchLoaderStatic>
38503 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38505 template<typename Dispatch = DispatchLoaderStatic>
38506 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38508#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
38509
38510#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
38511 template<typename Dispatch = DispatchLoaderStatic>
38512 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay, Dispatch const &d = Dispatch() ) const;
38513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38514 template<typename Dispatch = DispatchLoaderStatic>
38515 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d = Dispatch() ) const;
38516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38517#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
38518
38519 template<typename Dispatch = DispatchLoaderStatic>
38520 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
38521#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38522 template<typename Dispatch = DispatchLoaderStatic>
38523 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38525
38526 template<typename Dispatch = DispatchLoaderStatic>
38527 Result getPresentRectanglesKHR( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects, Dispatch const &d = Dispatch() ) const;
38528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38529 template <typename Allocator = std::allocator<Rect2D>, typename Dispatch = DispatchLoaderStatic>
38530 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHR( SurfaceKHR surface, Dispatch const &d = Dispatch() ) const;
38531#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38532
38533 template<typename Dispatch = DispatchLoaderStatic>
38534 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d = Dispatch() ) const;
38535#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38536 template<typename Dispatch = DispatchLoaderStatic>
38537 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const &d = Dispatch() ) const;
38538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38539
38540 template<typename Dispatch = DispatchLoaderStatic>
38541 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const;
38542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38543 template<typename Dispatch = DispatchLoaderStatic>
38544 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
38545 template <typename ...T, typename Dispatch = DispatchLoaderStatic>
38546 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
38547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38548
38549 template<typename Dispatch = DispatchLoaderStatic>
38550 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const;
38551#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38552 template <typename Allocator = std::allocator<SurfaceFormat2KHR>, typename Dispatch = DispatchLoaderStatic>
38553 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const;
38554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38555
38556 template<typename Dispatch = DispatchLoaderStatic>
38557 Result getDisplayProperties2KHR( uint32_t* pPropertyCount, DisplayProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
38558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38559 template <typename Allocator = std::allocator<DisplayProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
38560 typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type getDisplayProperties2KHR(Dispatch const &d = Dispatch() ) const;
38561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38562
38563 template<typename Dispatch = DispatchLoaderStatic>
38564 Result getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, DisplayPlaneProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
38565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38566 template <typename Allocator = std::allocator<DisplayPlaneProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
38567 typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type getDisplayPlaneProperties2KHR(Dispatch const &d = Dispatch() ) const;
38568#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38569
38570 template<typename Dispatch = DispatchLoaderStatic>
38571 Result getDisplayModeProperties2KHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModeProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const;
38572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38573 template <typename Allocator = std::allocator<DisplayModeProperties2KHR>, typename Dispatch = DispatchLoaderStatic>
38574 typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const &d = Dispatch() ) const;
38575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38576
38577 template<typename Dispatch = DispatchLoaderStatic>
38578 Result getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR* pDisplayPlaneInfo, DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d = Dispatch() ) const;
38579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38580 template<typename Dispatch = DispatchLoaderStatic>
38581 ResultValueType<DisplayPlaneCapabilities2KHR>::type getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d = Dispatch() ) const;
38582#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38583
38584
38585
38586 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
38587 {
38588 return m_physicalDevice;
38589 }
38590
38591 explicit operator bool() const
38592 {
38593 return m_physicalDevice != VK_NULL_HANDLE;
38594 }
38595
38596 bool operator!() const
38597 {
38598 return m_physicalDevice == VK_NULL_HANDLE;
38599 }
38600
38601 private:
38602 VkPhysicalDevice m_physicalDevice;
38603 };
38604
38605 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
38606
38607 template<typename Dispatch>
38608 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties, Dispatch const &d) const
38609 {
38610 d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
38611 }
38612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38613 template<typename Dispatch>
38614 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties(Dispatch const &d ) const
38615 {
38616 PhysicalDeviceProperties properties;
38617 d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
38618 return properties;
38619 }
38620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38621
38622 template<typename Dispatch>
38623 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d) const
38624 {
38625 d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
38626 }
38627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38628 template <typename Allocator, typename Dispatch>
38629 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties(Dispatch const &d ) const
38630 {
38631 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
38632 uint32_t queueFamilyPropertyCount;
38633 d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
38634 queueFamilyProperties.resize( queueFamilyPropertyCount );
38635 d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
38636 return queueFamilyProperties;
38637 }
38638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38639
38640 template<typename Dispatch>
38641 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d) const
38642 {
38643 d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
38644 }
38645#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38646 template<typename Dispatch>
38647 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties(Dispatch const &d ) const
38648 {
38649 PhysicalDeviceMemoryProperties memoryProperties;
38650 d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
38651 return memoryProperties;
38652 }
38653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38654
38655 template<typename Dispatch>
38656 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures, Dispatch const &d) const
38657 {
38658 d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
38659 }
38660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38661 template<typename Dispatch>
38662 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures(Dispatch const &d ) const
38663 {
38664 PhysicalDeviceFeatures features;
38665 d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
38666 return features;
38667 }
38668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38669
38670 template<typename Dispatch>
38671 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties, Dispatch const &d) const
38672 {
38673 d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
38674 }
38675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38676 template<typename Dispatch>
38677 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format, Dispatch const &d ) const
38678 {
38679 FormatProperties formatProperties;
38680 d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
38681 return formatProperties;
38682 }
38683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38684
38685 template<typename Dispatch>
38686 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties, Dispatch const &d) const
38687 {
38688 return static_cast<Result>( d.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 ) ) );
38689 }
38690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38691 template<typename Dispatch>
38692 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, Dispatch const &d ) const
38693 {
38694 ImageFormatProperties imageFormatProperties;
38695 Result result = static_cast<Result>( d.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 ) ) );
38696 return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties" );
38697 }
38698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38699
38700 template<typename Dispatch>
38701 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice, Dispatch const &d) const
38702 {
38703 return static_cast<Result>( d.vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
38704 }
38705#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38706 template<typename Dispatch>
38707 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
38708 {
38709 Device device;
38710 Result result = static_cast<Result>( d.vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDevice*>( &device ) ) );
38711 return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDevice" );
38712 }
38713#ifndef VULKAN_HPP_NO_SMART_HANDLE
38714 template<typename Dispatch>
38715 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Device,Dispatch>>::type PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
38716 {
38717 Device device;
38718 Result result = static_cast<Result>( d.vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDevice*>( &device ) ) );
38719
38720 ObjectDestroy<NoParent,Dispatch> deleter( allocator, d );
38721 return createResultValue<Device,Dispatch>( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDeviceUnique", deleter );
38722 }
38723#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
38724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38725
38726 template<typename Dispatch>
38727 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties, Dispatch const &d) const
38728 {
38729 return static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
38730 }
38731#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38732 template <typename Allocator, typename Dispatch>
38733 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties(Dispatch const &d ) const
38734 {
38735 std::vector<LayerProperties,Allocator> properties;
38736 uint32_t propertyCount;
38737 Result result;
38738 do
38739 {
38740 result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
38741 if ( ( result == Result::eSuccess ) && propertyCount )
38742 {
38743 properties.resize( propertyCount );
38744 result = static_cast<Result>( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
38745 }
38746 } while ( result == Result::eIncomplete );
38747 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
38748 properties.resize( propertyCount );
38749 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" );
38750 }
38751#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38752
38753 template<typename Dispatch>
38754 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties, Dispatch const &d) const
38755 {
38756 return static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
38757 }
38758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38759 template <typename Allocator, typename Dispatch>
38760 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Dispatch const &d ) const
38761 {
38762 std::vector<ExtensionProperties,Allocator> properties;
38763 uint32_t propertyCount;
38764 Result result;
38765 do
38766 {
38767 result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
38768 if ( ( result == Result::eSuccess ) && propertyCount )
38769 {
38770 properties.resize( propertyCount );
38771 result = static_cast<Result>( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
38772 }
38773 } while ( result == Result::eIncomplete );
38774 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
38775 properties.resize( propertyCount );
38776 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" );
38777 }
38778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38779
38780 template<typename Dispatch>
38781 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties, Dispatch const &d) const
38782 {
38783 d.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 ) );
38784 }
38785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38786 template <typename Allocator, typename Dispatch>
38787 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Dispatch const &d ) const
38788 {
38789 std::vector<SparseImageFormatProperties,Allocator> properties;
38790 uint32_t propertyCount;
38791 d.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 );
38792 properties.resize( propertyCount );
38793 d.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() ) );
38794 return properties;
38795 }
38796#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38797
38798 template<typename Dispatch>
38799 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties, Dispatch const &d) const
38800 {
38801 return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
38802 }
38803#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38804 template <typename Allocator, typename Dispatch>
38805 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR(Dispatch const &d ) const
38806 {
38807 std::vector<DisplayPropertiesKHR,Allocator> properties;
38808 uint32_t propertyCount;
38809 Result result;
38810 do
38811 {
38812 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
38813 if ( ( result == Result::eSuccess ) && propertyCount )
38814 {
38815 properties.resize( propertyCount );
38816 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
38817 }
38818 } while ( result == Result::eIncomplete );
38819 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
38820 properties.resize( propertyCount );
38821 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" );
38822 }
38823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38824
38825 template<typename Dispatch>
38826 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties, Dispatch const &d) const
38827 {
38828 return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
38829 }
38830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38831 template <typename Allocator, typename Dispatch>
38832 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Dispatch const &d ) const
38833 {
38834 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
38835 uint32_t propertyCount;
38836 Result result;
38837 do
38838 {
38839 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
38840 if ( ( result == Result::eSuccess ) && propertyCount )
38841 {
38842 properties.resize( propertyCount );
38843 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
38844 }
38845 } while ( result == Result::eIncomplete );
38846 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
38847 properties.resize( propertyCount );
38848 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" );
38849 }
38850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38851
38852 template<typename Dispatch>
38853 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays, Dispatch const &d) const
38854 {
38855 return static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
38856 }
38857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38858 template <typename Allocator, typename Dispatch>
38859 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d ) const
38860 {
38861 std::vector<DisplayKHR,Allocator> displays;
38862 uint32_t displayCount;
38863 Result result;
38864 do
38865 {
38866 result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
38867 if ( ( result == Result::eSuccess ) && displayCount )
38868 {
38869 displays.resize( displayCount );
38870 result = static_cast<Result>( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
38871 }
38872 } while ( result == Result::eIncomplete );
38873 VULKAN_HPP_ASSERT( displayCount <= displays.size() );
38874 displays.resize( displayCount );
38875 return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
38876 }
38877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38878
38879 template<typename Dispatch>
38880 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties, Dispatch const &d) const
38881 {
38882 return static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
38883 }
38884#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38885 template <typename Allocator, typename Dispatch>
38886 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const &d ) const
38887 {
38888 std::vector<DisplayModePropertiesKHR,Allocator> properties;
38889 uint32_t propertyCount;
38890 Result result;
38891 do
38892 {
38893 result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
38894 if ( ( result == Result::eSuccess ) && propertyCount )
38895 {
38896 properties.resize( propertyCount );
38897 result = static_cast<Result>( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
38898 }
38899 } while ( result == Result::eIncomplete );
38900 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
38901 properties.resize( propertyCount );
38902 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" );
38903 }
38904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38905
38906 template<typename Dispatch>
38907 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode, Dispatch const &d) const
38908 {
38909 return static_cast<Result>( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDisplayModeKHR*>( pMode ) ) );
38910 }
38911#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38912 template<typename Dispatch>
38913 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
38914 {
38915 DisplayModeKHR mode;
38916 Result result = static_cast<Result>( d.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 ) ) );
38917 return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDisplayModeKHR" );
38918 }
38919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38920
38921 template<typename Dispatch>
38922 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d) const
38923 {
38924 return static_cast<Result>( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
38925 }
38926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38927 template<typename Dispatch>
38928 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d ) const
38929 {
38930 DisplayPlaneCapabilitiesKHR capabilities;
38931 Result result = static_cast<Result>( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
38932 return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
38933 }
38934#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38935
38936#ifdef VK_USE_PLATFORM_MIR_KHR
38937 template<typename Dispatch>
38938 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection, Dispatch const &d) const
38939 {
38940 return d.vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
38941 }
38942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38943 template<typename Dispatch>
38944 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection, Dispatch const &d ) const
38945 {
38946 return d.vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
38947 }
38948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38949#endif /*VK_USE_PLATFORM_MIR_KHR*/
38950
38951 template<typename Dispatch>
38952 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported, Dispatch const &d) const
38953 {
38954 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
38955 }
38956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38957 template<typename Dispatch>
38958 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const &d ) const
38959 {
38960 Bool32 supported;
38961 Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
38962 return createResultValue( result, supported, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceSupportKHR" );
38963 }
38964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38965
38966 template<typename Dispatch>
38967 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d) const
38968 {
38969 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
38970 }
38971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38972 template<typename Dispatch>
38973 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, Dispatch const &d ) const
38974 {
38975 SurfaceCapabilitiesKHR surfaceCapabilities;
38976 Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
38977 return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilitiesKHR" );
38978 }
38979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38980
38981 template<typename Dispatch>
38982 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d) const
38983 {
38984 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
38985 }
38986#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
38987 template <typename Allocator, typename Dispatch>
38988 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, Dispatch const &d ) const
38989 {
38990 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
38991 uint32_t surfaceFormatCount;
38992 Result result;
38993 do
38994 {
38995 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
38996 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
38997 {
38998 surfaceFormats.resize( surfaceFormatCount );
38999 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
39000 }
39001 } while ( result == Result::eIncomplete );
39002 VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
39003 surfaceFormats.resize( surfaceFormatCount );
39004 return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" );
39005 }
39006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39007
39008 template<typename Dispatch>
39009 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes, Dispatch const &d) const
39010 {
39011 return static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
39012 }
39013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39014 template <typename Allocator, typename Dispatch>
39015 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const &d ) const
39016 {
39017 std::vector<PresentModeKHR,Allocator> presentModes;
39018 uint32_t presentModeCount;
39019 Result result;
39020 do
39021 {
39022 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
39023 if ( ( result == Result::eSuccess ) && presentModeCount )
39024 {
39025 presentModes.resize( presentModeCount );
39026 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
39027 }
39028 } while ( result == Result::eIncomplete );
39029 VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
39030 presentModes.resize( presentModeCount );
39031 return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" );
39032 }
39033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39034
39035#ifdef VK_USE_PLATFORM_WAYLAND_KHR
39036 template<typename Dispatch>
39037 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d) const
39038 {
39039 return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
39040 }
39041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39042 template<typename Dispatch>
39043 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d ) const
39044 {
39045 return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
39046 }
39047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39048#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
39049
39050#ifdef VK_USE_PLATFORM_WIN32_KHR
39051#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
39052 template<typename Dispatch>
39053 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d) const
39054 {
39055 return d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
39056 }
39057#else
39058 template<typename Dispatch>
39059 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d ) const
39060 {
39061 return d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
39062 }
39063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39064#endif /*VK_USE_PLATFORM_WIN32_KHR*/
39065
39066#ifdef VK_USE_PLATFORM_XLIB_KHR
39067 template<typename Dispatch>
39068 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d) const
39069 {
39070 return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
39071 }
39072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39073 template<typename Dispatch>
39074 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d ) const
39075 {
39076 return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
39077 }
39078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39079#endif /*VK_USE_PLATFORM_XLIB_KHR*/
39080
39081#ifdef VK_USE_PLATFORM_XCB_KHR
39082 template<typename Dispatch>
39083 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d) const
39084 {
39085 return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
39086 }
39087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39088 template<typename Dispatch>
39089 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d ) const
39090 {
39091 return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
39092 }
39093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39094#endif /*VK_USE_PLATFORM_XCB_KHR*/
39095
39096 template<typename Dispatch>
39097 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d) const
39098 {
39099 return static_cast<Result>( d.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 ) ) );
39100 }
39101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39102 template<typename Dispatch>
39103 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d ) const
39104 {
39105 ExternalImageFormatPropertiesNV externalImageFormatProperties;
39106 Result result = static_cast<Result>( d.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 ) ) );
39107 return createResultValue( result, externalImageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getExternalImageFormatPropertiesNV" );
39108 }
39109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39110
39111 template<typename Dispatch>
39112 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d) const
39113 {
39114 d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
39115 }
39116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39117 template<typename Dispatch>
39118 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d ) const
39119 {
39120 DeviceGeneratedCommandsLimitsNVX limits;
39121 d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
39122 return limits;
39123 }
39124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39125
39126 template<typename Dispatch>
39127 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const
39128 {
39129 d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( pFeatures ) );
39130 }
39131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39132 template<typename Dispatch>
39133 VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2(Dispatch const &d ) const
39134 {
39135 PhysicalDeviceFeatures2 features;
39136 d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
39137 return features;
39138 }
39139 template <typename ...T, typename Dispatch>
39140 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2(Dispatch const &d ) const
39141 {
39142 StructureChain<T...> structureChain;
39143 PhysicalDeviceFeatures2& features = structureChain.template get<PhysicalDeviceFeatures2>();
39144 d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
39145 return structureChain;
39146 }
39147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39148
39149 template<typename Dispatch>
39150 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const
39151 {
39152 d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( pFeatures ) );
39153 }
39154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39155 template<typename Dispatch>
39156 VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const
39157 {
39158 PhysicalDeviceFeatures2 features;
39159 d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
39160 return features;
39161 }
39162 template <typename ...T, typename Dispatch>
39163 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const
39164 {
39165 StructureChain<T...> structureChain;
39166 PhysicalDeviceFeatures2& features = structureChain.template get<PhysicalDeviceFeatures2>();
39167 d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2*>( &features ) );
39168 return structureChain;
39169 }
39170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39171
39172 template<typename Dispatch>
39173 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( PhysicalDeviceProperties2* pProperties, Dispatch const &d) const
39174 {
39175 d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( pProperties ) );
39176 }
39177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39178 template<typename Dispatch>
39179 VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2(Dispatch const &d ) const
39180 {
39181 PhysicalDeviceProperties2 properties;
39182 d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
39183 return properties;
39184 }
39185 template <typename ...T, typename Dispatch>
39186 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2(Dispatch const &d ) const
39187 {
39188 StructureChain<T...> structureChain;
39189 PhysicalDeviceProperties2& properties = structureChain.template get<PhysicalDeviceProperties2>();
39190 d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
39191 return structureChain;
39192 }
39193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39194
39195 template<typename Dispatch>
39196 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2* pProperties, Dispatch const &d) const
39197 {
39198 d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( pProperties ) );
39199 }
39200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39201 template<typename Dispatch>
39202 VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR(Dispatch const &d ) const
39203 {
39204 PhysicalDeviceProperties2 properties;
39205 d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
39206 return properties;
39207 }
39208 template <typename ...T, typename Dispatch>
39209 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR(Dispatch const &d ) const
39210 {
39211 StructureChain<T...> structureChain;
39212 PhysicalDeviceProperties2& properties = structureChain.template get<PhysicalDeviceProperties2>();
39213 d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2*>( &properties ) );
39214 return structureChain;
39215 }
39216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39217
39218 template<typename Dispatch>
39219 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( Format format, FormatProperties2* pFormatProperties, Dispatch const &d) const
39220 {
39221 d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( pFormatProperties ) );
39222 }
39223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39224 template<typename Dispatch>
39225 VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2( Format format, Dispatch const &d ) const
39226 {
39227 FormatProperties2 formatProperties;
39228 d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
39229 return formatProperties;
39230 }
39231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39232
39233 template<typename Dispatch>
39234 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2* pFormatProperties, Dispatch const &d) const
39235 {
39236 d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( pFormatProperties ) );
39237 }
39238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39239 template<typename Dispatch>
39240 VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2KHR( Format format, Dispatch const &d ) const
39241 {
39242 FormatProperties2 formatProperties;
39243 d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
39244 return formatProperties;
39245 }
39246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39247
39248 template<typename Dispatch>
39249 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const
39250 {
39251 return static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( pImageFormatProperties ) ) );
39252 }
39253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39254 template<typename Dispatch>
39255 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
39256 {
39257 ImageFormatProperties2 imageFormatProperties;
39258 Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
39259 return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" );
39260 }
39261 template <typename ...T, typename Dispatch>
39262 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
39263 {
39264 StructureChain<T...> structureChain;
39265 ImageFormatProperties2& imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
39266 Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
39267 return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" );
39268 }
39269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39270
39271 template<typename Dispatch>
39272 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2* pImageFormatInfo, ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const
39273 {
39274 return static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( pImageFormatProperties ) ) );
39275 }
39276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39277 template<typename Dispatch>
39278 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
39279 {
39280 ImageFormatProperties2 imageFormatProperties;
39281 Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
39282 return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" );
39283 }
39284 template <typename ...T, typename Dispatch>
39285 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const
39286 {
39287 StructureChain<T...> structureChain;
39288 ImageFormatProperties2& imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
39289 Result result = static_cast<Result>( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2*>( &imageFormatProperties ) ) );
39290 return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" );
39291 }
39292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39293
39294 template<typename Dispatch>
39295 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const
39296 {
39297 d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( pQueueFamilyProperties ) );
39298 }
39299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39300 template <typename Allocator, typename Dispatch>
39301 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2(Dispatch const &d ) const
39302 {
39303 std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties;
39304 uint32_t queueFamilyPropertyCount;
39305 d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
39306 queueFamilyProperties.resize( queueFamilyPropertyCount );
39307 d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
39308 return queueFamilyProperties;
39309 }
39310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39311
39312 template<typename Dispatch>
39313 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const
39314 {
39315 d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( pQueueFamilyProperties ) );
39316 }
39317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39318 template <typename Allocator, typename Dispatch>
39319 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR(Dispatch const &d ) const
39320 {
39321 std::vector<QueueFamilyProperties2,Allocator> queueFamilyProperties;
39322 uint32_t queueFamilyPropertyCount;
39323 d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
39324 queueFamilyProperties.resize( queueFamilyPropertyCount );
39325 d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2*>( queueFamilyProperties.data() ) );
39326 return queueFamilyProperties;
39327 }
39328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39329
39330 template<typename Dispatch>
39331 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const
39332 {
39333 d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( pMemoryProperties ) );
39334 }
39335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39336 template<typename Dispatch>
39337 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2(Dispatch const &d ) const
39338 {
39339 PhysicalDeviceMemoryProperties2 memoryProperties;
39340 d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( &memoryProperties ) );
39341 return memoryProperties;
39342 }
39343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39344
39345 template<typename Dispatch>
39346 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const
39347 {
39348 d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( pMemoryProperties ) );
39349 }
39350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39351 template<typename Dispatch>
39352 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR(Dispatch const &d ) const
39353 {
39354 PhysicalDeviceMemoryProperties2 memoryProperties;
39355 d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( &memoryProperties ) );
39356 return memoryProperties;
39357 }
39358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39359
39360 template<typename Dispatch>
39361 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d) const
39362 {
39363 d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( pProperties ) );
39364 }
39365#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39366 template <typename Allocator, typename Dispatch>
39367 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const
39368 {
39369 std::vector<SparseImageFormatProperties2,Allocator> properties;
39370 uint32_t propertyCount;
39371 d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
39372 properties.resize( propertyCount );
39373 d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
39374 return properties;
39375 }
39376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39377
39378 template<typename Dispatch>
39379 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2* pProperties, Dispatch const &d) const
39380 {
39381 d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( pProperties ) );
39382 }
39383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39384 template <typename Allocator, typename Dispatch>
39385 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const
39386 {
39387 std::vector<SparseImageFormatProperties2,Allocator> properties;
39388 uint32_t propertyCount;
39389 d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, nullptr );
39390 properties.resize( propertyCount );
39391 d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2*>( properties.data() ) );
39392 return properties;
39393 }
39394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39395
39396 template<typename Dispatch>
39397 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const
39398 {
39399 d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( pExternalBufferProperties ) );
39400 }
39401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39402 template<typename Dispatch>
39403 VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const
39404 {
39405 ExternalBufferProperties externalBufferProperties;
39406 d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( &externalBufferProperties ) );
39407 return externalBufferProperties;
39408 }
39409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39410
39411 template<typename Dispatch>
39412 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const
39413 {
39414 d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( pExternalBufferProperties ) );
39415 }
39416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39417 template<typename Dispatch>
39418 VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const
39419 {
39420 ExternalBufferProperties externalBufferProperties;
39421 d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferProperties*>( &externalBufferProperties ) );
39422 return externalBufferProperties;
39423 }
39424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39425
39426 template<typename Dispatch>
39427 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const
39428 {
39429 d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( pExternalSemaphoreProperties ) );
39430 }
39431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39432 template<typename Dispatch>
39433 VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const
39434 {
39435 ExternalSemaphoreProperties externalSemaphoreProperties;
39436 d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( &externalSemaphoreProperties ) );
39437 return externalSemaphoreProperties;
39438 }
39439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39440
39441 template<typename Dispatch>
39442 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const
39443 {
39444 d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( pExternalSemaphoreProperties ) );
39445 }
39446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39447 template<typename Dispatch>
39448 VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const
39449 {
39450 ExternalSemaphoreProperties externalSemaphoreProperties;
39451 d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphoreProperties*>( &externalSemaphoreProperties ) );
39452 return externalSemaphoreProperties;
39453 }
39454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39455
39456 template<typename Dispatch>
39457 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const
39458 {
39459 d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( pExternalFenceProperties ) );
39460 }
39461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39462 template<typename Dispatch>
39463 VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const
39464 {
39465 ExternalFenceProperties externalFenceProperties;
39466 d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( &externalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( &externalFenceProperties ) );
39467 return externalFenceProperties;
39468 }
39469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39470
39471 template<typename Dispatch>
39472 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const
39473 {
39474 d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( pExternalFenceProperties ) );
39475 }
39476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39477 template<typename Dispatch>
39478 VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const
39479 {
39480 ExternalFenceProperties externalFenceProperties;
39481 d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( &externalFenceInfo ), reinterpret_cast<VkExternalFenceProperties*>( &externalFenceProperties ) );
39482 return externalFenceProperties;
39483 }
39484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39485
39486#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
39487 template<typename Dispatch>
39488 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display, Dispatch const &d) const
39489 {
39490 return static_cast<Result>( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
39491 }
39492#else
39493 template<typename Dispatch>
39494 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display, Dispatch const &d ) const
39495 {
39496 Result result = static_cast<Result>( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
39497 return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::releaseDisplayEXT" );
39498 }
39499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39500
39501#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
39502 template<typename Dispatch>
39503 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display, Dispatch const &d) const
39504 {
39505 return static_cast<Result>( d.vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
39506 }
39507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39508 template<typename Dispatch>
39509 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display, Dispatch const &d ) const
39510 {
39511 Display dpy;
39512 Result result = static_cast<Result>( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
39513 return createResultValue( result, dpy, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::acquireXlibDisplayEXT" );
39514 }
39515#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39516#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
39517
39518#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
39519 template<typename Dispatch>
39520 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay, Dispatch const &d) const
39521 {
39522 return static_cast<Result>( d.vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
39523 }
39524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39525 template<typename Dispatch>
39526 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d ) const
39527 {
39528 DisplayKHR display;
39529 Result result = static_cast<Result>( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
39530 return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getRandROutputDisplayEXT" );
39531 }
39532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39533#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
39534
39535 template<typename Dispatch>
39536 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d) const
39537 {
39538 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
39539 }
39540#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39541 template<typename Dispatch>
39542 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, Dispatch const &d ) const
39543 {
39544 SurfaceCapabilities2EXT surfaceCapabilities;
39545 Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
39546 return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2EXT" );
39547 }
39548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39549
39550 template<typename Dispatch>
39551 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHR( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects, Dispatch const &d) const
39552 {
39553 return static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
39554 }
39555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39556 template <typename Allocator, typename Dispatch>
39557 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHR( SurfaceKHR surface, Dispatch const &d ) const
39558 {
39559 std::vector<Rect2D,Allocator> rects;
39560 uint32_t rectCount;
39561 Result result;
39562 do
39563 {
39564 result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
39565 if ( ( result == Result::eSuccess ) && rectCount )
39566 {
39567 rects.resize( rectCount );
39568 result = static_cast<Result>( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
39569 }
39570 } while ( result == Result::eIncomplete );
39571 VULKAN_HPP_ASSERT( rectCount <= rects.size() );
39572 rects.resize( rectCount );
39573 return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" );
39574 }
39575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39576
39577 template<typename Dispatch>
39578 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d) const
39579 {
39580 d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
39581 }
39582#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39583 template<typename Dispatch>
39584 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const &d ) const
39585 {
39586 MultisamplePropertiesEXT multisampleProperties;
39587 d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
39588 return multisampleProperties;
39589 }
39590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39591
39592 template<typename Dispatch>
39593 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d) const
39594 {
39595 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
39596 }
39597#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39598 template<typename Dispatch>
39599 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
39600 {
39601 SurfaceCapabilities2KHR surfaceCapabilities;
39602 Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
39603 return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" );
39604 }
39605 template <typename ...T, typename Dispatch>
39606 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
39607 {
39608 StructureChain<T...> structureChain;
39609 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
39610 Result result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
39611 return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" );
39612 }
39613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39614
39615 template<typename Dispatch>
39616 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d) const
39617 {
39618 return static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
39619 }
39620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39621 template <typename Allocator, typename Dispatch>
39622 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const
39623 {
39624 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
39625 uint32_t surfaceFormatCount;
39626 Result result;
39627 do
39628 {
39629 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
39630 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
39631 {
39632 surfaceFormats.resize( surfaceFormatCount );
39633 result = static_cast<Result>( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
39634 }
39635 } while ( result == Result::eIncomplete );
39636 VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
39637 surfaceFormats.resize( surfaceFormatCount );
39638 return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" );
39639 }
39640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39641
39642 template<typename Dispatch>
39643 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayProperties2KHR( uint32_t* pPropertyCount, DisplayProperties2KHR* pProperties, Dispatch const &d) const
39644 {
39645 return static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayProperties2KHR*>( pProperties ) ) );
39646 }
39647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39648 template <typename Allocator, typename Dispatch>
39649 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayProperties2KHR(Dispatch const &d ) const
39650 {
39651 std::vector<DisplayProperties2KHR,Allocator> properties;
39652 uint32_t propertyCount;
39653 Result result;
39654 do
39655 {
39656 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
39657 if ( ( result == Result::eSuccess ) && propertyCount )
39658 {
39659 properties.resize( propertyCount );
39660 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayProperties2KHR*>( properties.data() ) ) );
39661 }
39662 } while ( result == Result::eIncomplete );
39663 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
39664 properties.resize( propertyCount );
39665 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" );
39666 }
39667#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39668
39669 template<typename Dispatch>
39670 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, DisplayPlaneProperties2KHR* pProperties, Dispatch const &d) const
39671 {
39672 return static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR*>( pProperties ) ) );
39673 }
39674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39675 template <typename Allocator, typename Dispatch>
39676 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlaneProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayPlaneProperties2KHR(Dispatch const &d ) const
39677 {
39678 std::vector<DisplayPlaneProperties2KHR,Allocator> properties;
39679 uint32_t propertyCount;
39680 Result result;
39681 do
39682 {
39683 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) );
39684 if ( ( result == Result::eSuccess ) && propertyCount )
39685 {
39686 properties.resize( propertyCount );
39687 result = static_cast<Result>( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR*>( properties.data() ) ) );
39688 }
39689 } while ( result == Result::eIncomplete );
39690 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
39691 properties.resize( propertyCount );
39692 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" );
39693 }
39694#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39695
39696 template<typename Dispatch>
39697 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModeProperties2KHR* pProperties, Dispatch const &d) const
39698 {
39699 return static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModeProperties2KHR*>( pProperties ) ) );
39700 }
39701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39702 template <typename Allocator, typename Dispatch>
39703 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModeProperties2KHR,Allocator>>::type PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const &d ) const
39704 {
39705 std::vector<DisplayModeProperties2KHR,Allocator> properties;
39706 uint32_t propertyCount;
39707 Result result;
39708 do
39709 {
39710 result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
39711 if ( ( result == Result::eSuccess ) && propertyCount )
39712 {
39713 properties.resize( propertyCount );
39714 result = static_cast<Result>( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModeProperties2KHR*>( properties.data() ) ) );
39715 }
39716 } while ( result == Result::eIncomplete );
39717 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
39718 properties.resize( propertyCount );
39719 return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" );
39720 }
39721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39722
39723 template<typename Dispatch>
39724 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR* pDisplayPlaneInfo, DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d) const
39725 {
39726 return static_cast<Result>( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkDisplayPlaneInfo2KHR*>( pDisplayPlaneInfo ), reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>( pCapabilities ) ) );
39727 }
39728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39729 template<typename Dispatch>
39730 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilities2KHR>::type PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d ) const
39731 {
39732 DisplayPlaneCapabilities2KHR capabilities;
39733 Result result = static_cast<Result>( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkDisplayPlaneInfo2KHR*>( &displayPlaneInfo ), reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>( &capabilities ) ) );
39734 return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
39735 }
39736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39737
39738 struct CmdProcessCommandsInfoNVX
39739 {
39740 CmdProcessCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(),
39741 IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(),
39742 uint32_t indirectCommandsTokenCount_ = 0,
39743 const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr,
39744 uint32_t maxSequencesCount_ = 0,
39745 CommandBuffer targetCommandBuffer_ = CommandBuffer(),
39746 Buffer sequencesCountBuffer_ = Buffer(),
39747 DeviceSize sequencesCountOffset_ = 0,
39748 Buffer sequencesIndexBuffer_ = Buffer(),
39749 DeviceSize sequencesIndexOffset_ = 0 )
39750 : objectTable( objectTable_ )
39751 , indirectCommandsLayout( indirectCommandsLayout_ )
39752 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
39753 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
39754 , maxSequencesCount( maxSequencesCount_ )
39755 , targetCommandBuffer( targetCommandBuffer_ )
39756 , sequencesCountBuffer( sequencesCountBuffer_ )
39757 , sequencesCountOffset( sequencesCountOffset_ )
39758 , sequencesIndexBuffer( sequencesIndexBuffer_ )
39759 , sequencesIndexOffset( sequencesIndexOffset_ )
39760 {
39761 }
39762
39763 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
39764 {
39765 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
39766 }
39767
39768 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
39769 {
39770 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
39771 return *this;
39772 }
39773 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
39774 {
39775 pNext = pNext_;
39776 return *this;
39777 }
39778
39779 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
39780 {
39781 objectTable = objectTable_;
39782 return *this;
39783 }
39784
39785 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
39786 {
39787 indirectCommandsLayout = indirectCommandsLayout_;
39788 return *this;
39789 }
39790
39791 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
39792 {
39793 indirectCommandsTokenCount = indirectCommandsTokenCount_;
39794 return *this;
39795 }
39796
39797 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
39798 {
39799 pIndirectCommandsTokens = pIndirectCommandsTokens_;
39800 return *this;
39801 }
39802
39803 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
39804 {
39805 maxSequencesCount = maxSequencesCount_;
39806 return *this;
39807 }
39808
39809 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
39810 {
39811 targetCommandBuffer = targetCommandBuffer_;
39812 return *this;
39813 }
39814
39815 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
39816 {
39817 sequencesCountBuffer = sequencesCountBuffer_;
39818 return *this;
39819 }
39820
39821 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
39822 {
39823 sequencesCountOffset = sequencesCountOffset_;
39824 return *this;
39825 }
39826
39827 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
39828 {
39829 sequencesIndexBuffer = sequencesIndexBuffer_;
39830 return *this;
39831 }
39832
39833 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
39834 {
39835 sequencesIndexOffset = sequencesIndexOffset_;
39836 return *this;
39837 }
39838
39839 operator const VkCmdProcessCommandsInfoNVX&() const
39840 {
39841 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
39842 }
39843
39844 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
39845 {
39846 return ( sType == rhs.sType )
39847 && ( pNext == rhs.pNext )
39848 && ( objectTable == rhs.objectTable )
39849 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
39850 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
39851 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
39852 && ( maxSequencesCount == rhs.maxSequencesCount )
39853 && ( targetCommandBuffer == rhs.targetCommandBuffer )
39854 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
39855 && ( sequencesCountOffset == rhs.sequencesCountOffset )
39856 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
39857 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
39858 }
39859
39860 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
39861 {
39862 return !operator==( rhs );
39863 }
39864
39865 private:
39866 StructureType sType = StructureType::eCmdProcessCommandsInfoNVX;
39867
39868 public:
39869 const void* pNext = nullptr;
39870 ObjectTableNVX objectTable;
39871 IndirectCommandsLayoutNVX indirectCommandsLayout;
39872 uint32_t indirectCommandsTokenCount;
39873 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
39874 uint32_t maxSequencesCount;
39875 CommandBuffer targetCommandBuffer;
39876 Buffer sequencesCountBuffer;
39877 DeviceSize sequencesCountOffset;
39878 Buffer sequencesIndexBuffer;
39879 DeviceSize sequencesIndexOffset;
39880 };
39881 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
39882
39883 struct PhysicalDeviceGroupProperties
39884 {
39885 operator const VkPhysicalDeviceGroupProperties&() const
39886 {
39887 return *reinterpret_cast<const VkPhysicalDeviceGroupProperties*>(this);
39888 }
39889
39890 bool operator==( PhysicalDeviceGroupProperties const& rhs ) const
39891 {
39892 return ( sType == rhs.sType )
39893 && ( pNext == rhs.pNext )
39894 && ( physicalDeviceCount == rhs.physicalDeviceCount )
39895 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof( PhysicalDevice ) ) == 0 )
39896 && ( subsetAllocation == rhs.subsetAllocation );
39897 }
39898
39899 bool operator!=( PhysicalDeviceGroupProperties const& rhs ) const
39900 {
39901 return !operator==( rhs );
39902 }
39903
39904 private:
39905 StructureType sType = StructureType::ePhysicalDeviceGroupProperties;
39906
39907 public:
39908 void* pNext = nullptr;
39909 uint32_t physicalDeviceCount;
39910 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
39911 Bool32 subsetAllocation;
39912 };
39913 static_assert( sizeof( PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), "struct and wrapper have different size!" );
39914
39915 using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
39916
39917#ifndef VULKAN_HPP_NO_SMART_HANDLE
39918 class Instance;
39919
39920 template <typename Dispatch> class UniqueHandleTraits<DebugReportCallbackEXT,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
39921 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT,DispatchLoaderStatic>;
39922 template <typename Dispatch> class UniqueHandleTraits<DebugUtilsMessengerEXT,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
39923 using UniqueDebugUtilsMessengerEXT = UniqueHandle<DebugUtilsMessengerEXT,DispatchLoaderStatic>;
39924 template <typename Dispatch> class UniqueHandleTraits<SurfaceKHR,Dispatch> {public: using deleter = ObjectDestroy<Instance,Dispatch>; };
39925 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR,DispatchLoaderStatic>;
39926#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
39927
39928 class Instance
39929 {
39930 public:
39931 VULKAN_HPP_CONSTEXPR Instance()
39932 : m_instance(VK_NULL_HANDLE)
39933 {}
39934
39935 VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t )
39936 : m_instance(VK_NULL_HANDLE)
39937 {}
39938
39939 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
39940 : m_instance( instance )
39941 {}
39942
39943#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
39944 Instance & operator=(VkInstance instance)
39945 {
39946 m_instance = instance;
39947 return *this;
39948 }
39949#endif
39950
39951 Instance & operator=( std::nullptr_t )
39952 {
39953 m_instance = VK_NULL_HANDLE;
39954 return *this;
39955 }
39956
39957 bool operator==( Instance const & rhs ) const
39958 {
39959 return m_instance == rhs.m_instance;
39960 }
39961
39962 bool operator!=(Instance const & rhs ) const
39963 {
39964 return m_instance != rhs.m_instance;
39965 }
39966
39967 bool operator<(Instance const & rhs ) const
39968 {
39969 return m_instance < rhs.m_instance;
39970 }
39971
39972 template<typename Dispatch = DispatchLoaderStatic>
39973 void destroy( const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
39974#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39975 template<typename Dispatch = DispatchLoaderStatic>
39976 void destroy( Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
39977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39978
39979 template<typename Dispatch = DispatchLoaderStatic>
39980 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices, Dispatch const &d = Dispatch() ) const;
39981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39982 template <typename Allocator = std::allocator<PhysicalDevice>, typename Dispatch = DispatchLoaderStatic>
39983 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices(Dispatch const &d = Dispatch() ) const;
39984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39985
39986 template<typename Dispatch = DispatchLoaderStatic>
39987 PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const;
39988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39989 template<typename Dispatch = DispatchLoaderStatic>
39990 PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const;
39991#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39992
39993#ifdef VK_USE_PLATFORM_ANDROID_KHR
39994 template<typename Dispatch = DispatchLoaderStatic>
39995 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
39996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
39997 template<typename Dispatch = DispatchLoaderStatic>
39998 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
39999#ifndef VULKAN_HPP_NO_SMART_HANDLE
40000 template<typename Dispatch = DispatchLoaderStatic>
40001 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40002#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40004#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
40005
40006 template<typename Dispatch = DispatchLoaderStatic>
40007 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40008#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40009 template<typename Dispatch = DispatchLoaderStatic>
40010 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40011#ifndef VULKAN_HPP_NO_SMART_HANDLE
40012 template<typename Dispatch = DispatchLoaderStatic>
40013 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40014#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40016
40017#ifdef VK_USE_PLATFORM_MIR_KHR
40018 template<typename Dispatch = DispatchLoaderStatic>
40019 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40020#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40021 template<typename Dispatch = DispatchLoaderStatic>
40022 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40023#ifndef VULKAN_HPP_NO_SMART_HANDLE
40024 template<typename Dispatch = DispatchLoaderStatic>
40025 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40026#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40028#endif /*VK_USE_PLATFORM_MIR_KHR*/
40029
40030 template<typename Dispatch = DispatchLoaderStatic>
40031 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40033 template<typename Dispatch = DispatchLoaderStatic>
40034 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40036
40037 template<typename Dispatch = DispatchLoaderStatic>
40038 void destroy( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40040 template<typename Dispatch = DispatchLoaderStatic>
40041 void destroy( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40043
40044#ifdef VK_USE_PLATFORM_VI_NN
40045 template<typename Dispatch = DispatchLoaderStatic>
40046 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40047#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40048 template<typename Dispatch = DispatchLoaderStatic>
40049 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40050#ifndef VULKAN_HPP_NO_SMART_HANDLE
40051 template<typename Dispatch = DispatchLoaderStatic>
40052 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40053#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40054#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40055#endif /*VK_USE_PLATFORM_VI_NN*/
40056
40057#ifdef VK_USE_PLATFORM_WAYLAND_KHR
40058 template<typename Dispatch = DispatchLoaderStatic>
40059 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40061 template<typename Dispatch = DispatchLoaderStatic>
40062 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40063#ifndef VULKAN_HPP_NO_SMART_HANDLE
40064 template<typename Dispatch = DispatchLoaderStatic>
40065 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40066#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40068#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
40069
40070#ifdef VK_USE_PLATFORM_WIN32_KHR
40071 template<typename Dispatch = DispatchLoaderStatic>
40072 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40074 template<typename Dispatch = DispatchLoaderStatic>
40075 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40076#ifndef VULKAN_HPP_NO_SMART_HANDLE
40077 template<typename Dispatch = DispatchLoaderStatic>
40078 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40079#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40081#endif /*VK_USE_PLATFORM_WIN32_KHR*/
40082
40083#ifdef VK_USE_PLATFORM_XLIB_KHR
40084 template<typename Dispatch = DispatchLoaderStatic>
40085 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40087 template<typename Dispatch = DispatchLoaderStatic>
40088 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40089#ifndef VULKAN_HPP_NO_SMART_HANDLE
40090 template<typename Dispatch = DispatchLoaderStatic>
40091 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40092#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40094#endif /*VK_USE_PLATFORM_XLIB_KHR*/
40095
40096#ifdef VK_USE_PLATFORM_XCB_KHR
40097 template<typename Dispatch = DispatchLoaderStatic>
40098 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40099#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40100 template<typename Dispatch = DispatchLoaderStatic>
40101 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40102#ifndef VULKAN_HPP_NO_SMART_HANDLE
40103 template<typename Dispatch = DispatchLoaderStatic>
40104 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40105#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40107#endif /*VK_USE_PLATFORM_XCB_KHR*/
40108
40109 template<typename Dispatch = DispatchLoaderStatic>
40110 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback, Dispatch const &d = Dispatch() ) const;
40111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40112 template<typename Dispatch = DispatchLoaderStatic>
40113 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40114#ifndef VULKAN_HPP_NO_SMART_HANDLE
40115 template<typename Dispatch = DispatchLoaderStatic>
40116 typename ResultValueType<UniqueHandle<DebugReportCallbackEXT,Dispatch>>::type createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40117#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40119
40120 template<typename Dispatch = DispatchLoaderStatic>
40121 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40123 template<typename Dispatch = DispatchLoaderStatic>
40124 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40126
40127 template<typename Dispatch = DispatchLoaderStatic>
40128 void destroy( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40130 template<typename Dispatch = DispatchLoaderStatic>
40131 void destroy( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40133
40134 template<typename Dispatch = DispatchLoaderStatic>
40135 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, Dispatch const &d = Dispatch() ) const;
40136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40137 template<typename Dispatch = DispatchLoaderStatic>
40138 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message, Dispatch const &d = Dispatch() ) const;
40139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40140
40141 template<typename Dispatch = DispatchLoaderStatic>
40142 Result enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const;
40143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40144 template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
40145 typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroups(Dispatch const &d = Dispatch() ) const;
40146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40147
40148 template<typename Dispatch = DispatchLoaderStatic>
40149 Result enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const;
40150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40151 template <typename Allocator = std::allocator<PhysicalDeviceGroupProperties>, typename Dispatch = DispatchLoaderStatic>
40152 typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type enumeratePhysicalDeviceGroupsKHR(Dispatch const &d = Dispatch() ) const;
40153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40154
40155#ifdef VK_USE_PLATFORM_IOS_MVK
40156 template<typename Dispatch = DispatchLoaderStatic>
40157 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40159 template<typename Dispatch = DispatchLoaderStatic>
40160 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40161#ifndef VULKAN_HPP_NO_SMART_HANDLE
40162 template<typename Dispatch = DispatchLoaderStatic>
40163 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40164#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40166#endif /*VK_USE_PLATFORM_IOS_MVK*/
40167
40168#ifdef VK_USE_PLATFORM_MACOS_MVK
40169 template<typename Dispatch = DispatchLoaderStatic>
40170 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const;
40171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40172 template<typename Dispatch = DispatchLoaderStatic>
40173 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40174#ifndef VULKAN_HPP_NO_SMART_HANDLE
40175 template<typename Dispatch = DispatchLoaderStatic>
40176 typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40177#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40179#endif /*VK_USE_PLATFORM_MACOS_MVK*/
40180
40181 template<typename Dispatch = DispatchLoaderStatic>
40182 Result createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugUtilsMessengerEXT* pMessenger, Dispatch const &d = Dispatch() ) const;
40183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40184 template<typename Dispatch = DispatchLoaderStatic>
40185 ResultValueType<DebugUtilsMessengerEXT>::type createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40186#ifndef VULKAN_HPP_NO_SMART_HANDLE
40187 template<typename Dispatch = DispatchLoaderStatic>
40188 typename ResultValueType<UniqueHandle<DebugUtilsMessengerEXT,Dispatch>>::type createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40189#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40191
40192 template<typename Dispatch = DispatchLoaderStatic>
40193 void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40195 template<typename Dispatch = DispatchLoaderStatic>
40196 void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40198
40199 template<typename Dispatch = DispatchLoaderStatic>
40200 void destroy( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const;
40201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40202 template<typename Dispatch = DispatchLoaderStatic>
40203 void destroy( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() ) const;
40204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40205
40206 template<typename Dispatch = DispatchLoaderStatic>
40207 void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d = Dispatch() ) const;
40208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40209 template<typename Dispatch = DispatchLoaderStatic>
40210 void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d = Dispatch() ) const;
40211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40212
40213
40214
40215 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
40216 {
40217 return m_instance;
40218 }
40219
40220 explicit operator bool() const
40221 {
40222 return m_instance != VK_NULL_HANDLE;
40223 }
40224
40225 bool operator!() const
40226 {
40227 return m_instance == VK_NULL_HANDLE;
40228 }
40229
40230 private:
40231 VkInstance m_instance;
40232 };
40233
40234 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
40235
40236 template<typename Dispatch>
40237 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator, Dispatch const &d) const
40238 {
40239 d.vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40240 }
40241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40242 template<typename Dispatch>
40243 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40244 {
40245 d.vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40246 }
40247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40248
40249 template<typename Dispatch>
40250 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices, Dispatch const &d) const
40251 {
40252 return static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
40253 }
40254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40255 template <typename Allocator, typename Dispatch>
40256 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices(Dispatch const &d ) const
40257 {
40258 std::vector<PhysicalDevice,Allocator> physicalDevices;
40259 uint32_t physicalDeviceCount;
40260 Result result;
40261 do
40262 {
40263 result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
40264 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
40265 {
40266 physicalDevices.resize( physicalDeviceCount );
40267 result = static_cast<Result>( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
40268 }
40269 } while ( result == Result::eIncomplete );
40270 VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() );
40271 physicalDevices.resize( physicalDeviceCount );
40272 return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" );
40273 }
40274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40275
40276 template<typename Dispatch>
40277 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName, Dispatch const &d) const
40278 {
40279 return d.vkGetInstanceProcAddr( m_instance, pName );
40280 }
40281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40282 template<typename Dispatch>
40283 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name, Dispatch const &d ) const
40284 {
40285 return d.vkGetInstanceProcAddr( m_instance, name.c_str() );
40286 }
40287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40288
40289#ifdef VK_USE_PLATFORM_ANDROID_KHR
40290 template<typename Dispatch>
40291 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40292 {
40293 return static_cast<Result>( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40294 }
40295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40296 template<typename Dispatch>
40297 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40298 {
40299 SurfaceKHR surface;
40300 Result result = static_cast<Result>( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40301 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHR" );
40302 }
40303#ifndef VULKAN_HPP_NO_SMART_HANDLE
40304 template<typename Dispatch>
40305 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40306 {
40307 SurfaceKHR surface;
40308 Result result = static_cast<Result>( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40309
40310 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40311 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHRUnique", deleter );
40312 }
40313#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40315#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
40316
40317 template<typename Dispatch>
40318 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40319 {
40320 return static_cast<Result>( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40321 }
40322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40323 template<typename Dispatch>
40324 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40325 {
40326 SurfaceKHR surface;
40327 Result result = static_cast<Result>( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40328 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHR" );
40329 }
40330#ifndef VULKAN_HPP_NO_SMART_HANDLE
40331 template<typename Dispatch>
40332 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40333 {
40334 SurfaceKHR surface;
40335 Result result = static_cast<Result>( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40336
40337 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40338 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHRUnique", deleter );
40339 }
40340#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40342
40343#ifdef VK_USE_PLATFORM_MIR_KHR
40344 template<typename Dispatch>
40345 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40346 {
40347 return static_cast<Result>( d.vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40348 }
40349#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40350 template<typename Dispatch>
40351 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40352 {
40353 SurfaceKHR surface;
40354 Result result = static_cast<Result>( d.vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40355 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMirSurfaceKHR" );
40356 }
40357#ifndef VULKAN_HPP_NO_SMART_HANDLE
40358 template<typename Dispatch>
40359 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40360 {
40361 SurfaceKHR surface;
40362 Result result = static_cast<Result>( d.vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40363
40364 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40365 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMirSurfaceKHRUnique", deleter );
40366 }
40367#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40369#endif /*VK_USE_PLATFORM_MIR_KHR*/
40370
40371 template<typename Dispatch>
40372 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40373 {
40374 d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40375 }
40376#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40377 template<typename Dispatch>
40378 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40379 {
40380 d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40381 }
40382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40383
40384 template<typename Dispatch>
40385 VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40386 {
40387 d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40388 }
40389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40390 template<typename Dispatch>
40391 VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40392 {
40393 d.vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40394 }
40395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40396
40397#ifdef VK_USE_PLATFORM_VI_NN
40398 template<typename Dispatch>
40399 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40400 {
40401 return static_cast<Result>( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40402 }
40403#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40404 template<typename Dispatch>
40405 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40406 {
40407 SurfaceKHR surface;
40408 Result result = static_cast<Result>( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40409 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNN" );
40410 }
40411#ifndef VULKAN_HPP_NO_SMART_HANDLE
40412 template<typename Dispatch>
40413 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40414 {
40415 SurfaceKHR surface;
40416 Result result = static_cast<Result>( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40417
40418 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40419 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNNUnique", deleter );
40420 }
40421#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40423#endif /*VK_USE_PLATFORM_VI_NN*/
40424
40425#ifdef VK_USE_PLATFORM_WAYLAND_KHR
40426 template<typename Dispatch>
40427 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40428 {
40429 return static_cast<Result>( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40430 }
40431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40432 template<typename Dispatch>
40433 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40434 {
40435 SurfaceKHR surface;
40436 Result result = static_cast<Result>( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40437 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHR" );
40438 }
40439#ifndef VULKAN_HPP_NO_SMART_HANDLE
40440 template<typename Dispatch>
40441 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40442 {
40443 SurfaceKHR surface;
40444 Result result = static_cast<Result>( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40445
40446 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40447 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHRUnique", deleter );
40448 }
40449#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40451#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
40452
40453#ifdef VK_USE_PLATFORM_WIN32_KHR
40454 template<typename Dispatch>
40455 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40456 {
40457 return static_cast<Result>( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40458 }
40459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40460 template<typename Dispatch>
40461 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40462 {
40463 SurfaceKHR surface;
40464 Result result = static_cast<Result>( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40465 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHR" );
40466 }
40467#ifndef VULKAN_HPP_NO_SMART_HANDLE
40468 template<typename Dispatch>
40469 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40470 {
40471 SurfaceKHR surface;
40472 Result result = static_cast<Result>( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40473
40474 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40475 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHRUnique", deleter );
40476 }
40477#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40479#endif /*VK_USE_PLATFORM_WIN32_KHR*/
40480
40481#ifdef VK_USE_PLATFORM_XLIB_KHR
40482 template<typename Dispatch>
40483 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40484 {
40485 return static_cast<Result>( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40486 }
40487#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40488 template<typename Dispatch>
40489 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40490 {
40491 SurfaceKHR surface;
40492 Result result = static_cast<Result>( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40493 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHR" );
40494 }
40495#ifndef VULKAN_HPP_NO_SMART_HANDLE
40496 template<typename Dispatch>
40497 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40498 {
40499 SurfaceKHR surface;
40500 Result result = static_cast<Result>( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40501
40502 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40503 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHRUnique", deleter );
40504 }
40505#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40507#endif /*VK_USE_PLATFORM_XLIB_KHR*/
40508
40509#ifdef VK_USE_PLATFORM_XCB_KHR
40510 template<typename Dispatch>
40511 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40512 {
40513 return static_cast<Result>( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40514 }
40515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40516 template<typename Dispatch>
40517 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40518 {
40519 SurfaceKHR surface;
40520 Result result = static_cast<Result>( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40521 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHR" );
40522 }
40523#ifndef VULKAN_HPP_NO_SMART_HANDLE
40524 template<typename Dispatch>
40525 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40526 {
40527 SurfaceKHR surface;
40528 Result result = static_cast<Result>( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40529
40530 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40531 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHRUnique", deleter );
40532 }
40533#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40535#endif /*VK_USE_PLATFORM_XCB_KHR*/
40536
40537 template<typename Dispatch>
40538 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback, Dispatch const &d) const
40539 {
40540 return static_cast<Result>( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
40541 }
40542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40543 template<typename Dispatch>
40544 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40545 {
40546 DebugReportCallbackEXT callback;
40547 Result result = static_cast<Result>( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugReportCallbackEXT*>( &callback ) ) );
40548 return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXT" );
40549 }
40550#ifndef VULKAN_HPP_NO_SMART_HANDLE
40551 template<typename Dispatch>
40552 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DebugReportCallbackEXT,Dispatch>>::type Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40553 {
40554 DebugReportCallbackEXT callback;
40555 Result result = static_cast<Result>( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugReportCallbackEXT*>( &callback ) ) );
40556
40557 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40558 return createResultValue<DebugReportCallbackEXT,Dispatch>( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXTUnique", deleter );
40559 }
40560#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40562
40563 template<typename Dispatch>
40564 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40565 {
40566 d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40567 }
40568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40569 template<typename Dispatch>
40570 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40571 {
40572 d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40573 }
40574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40575
40576 template<typename Dispatch>
40577 VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40578 {
40579 d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40580 }
40581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40582 template<typename Dispatch>
40583 VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40584 {
40585 d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40586 }
40587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40588
40589 template<typename Dispatch>
40590 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, Dispatch const &d) const
40591 {
40592 d.vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
40593 }
40594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40595 template<typename Dispatch>
40596 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, Dispatch const &d ) const
40597 {
40598#ifdef VULKAN_HPP_NO_EXCEPTIONS
40599 VULKAN_HPP_ASSERT( layerPrefix.size() == message.size() );
40600#else
40601 if ( layerPrefix.size() != message.size() )
40602 {
40603 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
40604 }
40605#endif // VULKAN_HPP_NO_EXCEPTIONS
40606 d.vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
40607 }
40608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40609
40610 template<typename Dispatch>
40611 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const
40612 {
40613 return static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( pPhysicalDeviceGroupProperties ) ) );
40614 }
40615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40616 template <typename Allocator, typename Dispatch>
40617 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroups(Dispatch const &d ) const
40618 {
40619 std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties;
40620 uint32_t physicalDeviceGroupCount;
40621 Result result;
40622 do
40623 {
40624 result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) );
40625 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
40626 {
40627 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
40628 result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
40629 }
40630 } while ( result == Result::eIncomplete );
40631 VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
40632 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
40633 return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" );
40634 }
40635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40636
40637 template<typename Dispatch>
40638 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const
40639 {
40640 return static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( pPhysicalDeviceGroupProperties ) ) );
40641 }
40642#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40643 template <typename Allocator, typename Dispatch>
40644 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHR(Dispatch const &d ) const
40645 {
40646 std::vector<PhysicalDeviceGroupProperties,Allocator> physicalDeviceGroupProperties;
40647 uint32_t physicalDeviceGroupCount;
40648 Result result;
40649 do
40650 {
40651 result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) );
40652 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
40653 {
40654 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
40655 result = static_cast<Result>( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupProperties*>( physicalDeviceGroupProperties.data() ) ) );
40656 }
40657 } while ( result == Result::eIncomplete );
40658 VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
40659 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
40660 return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" );
40661 }
40662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40663
40664#ifdef VK_USE_PLATFORM_IOS_MVK
40665 template<typename Dispatch>
40666 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40667 {
40668 return static_cast<Result>( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40669 }
40670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40671 template<typename Dispatch>
40672 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40673 {
40674 SurfaceKHR surface;
40675 Result result = static_cast<Result>( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40676 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVK" );
40677 }
40678#ifndef VULKAN_HPP_NO_SMART_HANDLE
40679 template<typename Dispatch>
40680 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40681 {
40682 SurfaceKHR surface;
40683 Result result = static_cast<Result>( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40684
40685 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40686 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVKUnique", deleter );
40687 }
40688#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40690#endif /*VK_USE_PLATFORM_IOS_MVK*/
40691
40692#ifdef VK_USE_PLATFORM_MACOS_MVK
40693 template<typename Dispatch>
40694 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface, Dispatch const &d) const
40695 {
40696 return static_cast<Result>( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
40697 }
40698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40699 template<typename Dispatch>
40700 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40701 {
40702 SurfaceKHR surface;
40703 Result result = static_cast<Result>( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40704 return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVK" );
40705 }
40706#ifndef VULKAN_HPP_NO_SMART_HANDLE
40707 template<typename Dispatch>
40708 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<SurfaceKHR,Dispatch>>::type Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40709 {
40710 SurfaceKHR surface;
40711 Result result = static_cast<Result>( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
40712
40713 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40714 return createResultValue<SurfaceKHR,Dispatch>( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVKUnique", deleter );
40715 }
40716#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40718#endif /*VK_USE_PLATFORM_MACOS_MVK*/
40719
40720 template<typename Dispatch>
40721 VULKAN_HPP_INLINE Result Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugUtilsMessengerEXT* pMessenger, Dispatch const &d) const
40722 {
40723 return static_cast<Result>( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugUtilsMessengerEXT*>( pMessenger ) ) );
40724 }
40725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40726 template<typename Dispatch>
40727 VULKAN_HPP_INLINE ResultValueType<DebugUtilsMessengerEXT>::type Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40728 {
40729 DebugUtilsMessengerEXT messenger;
40730 Result result = static_cast<Result>( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugUtilsMessengerEXT*>( &messenger ) ) );
40731 return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXT" );
40732 }
40733#ifndef VULKAN_HPP_NO_SMART_HANDLE
40734 template<typename Dispatch>
40735 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<DebugUtilsMessengerEXT,Dispatch>>::type Instance::createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40736 {
40737 DebugUtilsMessengerEXT messenger;
40738 Result result = static_cast<Result>( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugUtilsMessengerEXT*>( &messenger ) ) );
40739
40740 ObjectDestroy<Instance,Dispatch> deleter( *this, allocator, d );
40741 return createResultValue<DebugUtilsMessengerEXT,Dispatch>( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXTUnique", deleter );
40742 }
40743#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40745
40746 template<typename Dispatch>
40747 VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40748 {
40749 d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40750 }
40751#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40752 template<typename Dispatch>
40753 VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40754 {
40755 d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40756 }
40757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40758
40759 template<typename Dispatch>
40760 VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, const AllocationCallbacks* pAllocator, Dispatch const &d) const
40761 {
40762 d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
40763 }
40764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40765 template<typename Dispatch>
40766 VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator, Dispatch const &d ) const
40767 {
40768 d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast<VkDebugUtilsMessengerEXT>( messenger ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
40769 }
40770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40771
40772 template<typename Dispatch>
40773 VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d) const
40774 {
40775 d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ), static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ), reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>( pCallbackData ) );
40776 }
40777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40778 template<typename Dispatch>
40779 VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d ) const
40780 {
40781 d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ), static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ), reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>( &callbackData ) );
40782 }
40783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40784
40785 struct DeviceGroupDeviceCreateInfo
40786 {
40787 DeviceGroupDeviceCreateInfo( uint32_t physicalDeviceCount_ = 0,
40788 const PhysicalDevice* pPhysicalDevices_ = nullptr )
40789 : physicalDeviceCount( physicalDeviceCount_ )
40790 , pPhysicalDevices( pPhysicalDevices_ )
40791 {
40792 }
40793
40794 DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs )
40795 {
40796 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
40797 }
40798
40799 DeviceGroupDeviceCreateInfo& operator=( VkDeviceGroupDeviceCreateInfo const & rhs )
40800 {
40801 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
40802 return *this;
40803 }
40804 DeviceGroupDeviceCreateInfo& setPNext( const void* pNext_ )
40805 {
40806 pNext = pNext_;
40807 return *this;
40808 }
40809
40810 DeviceGroupDeviceCreateInfo& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
40811 {
40812 physicalDeviceCount = physicalDeviceCount_;
40813 return *this;
40814 }
40815
40816 DeviceGroupDeviceCreateInfo& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
40817 {
40818 pPhysicalDevices = pPhysicalDevices_;
40819 return *this;
40820 }
40821
40822 operator const VkDeviceGroupDeviceCreateInfo&() const
40823 {
40824 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>(this);
40825 }
40826
40827 bool operator==( DeviceGroupDeviceCreateInfo const& rhs ) const
40828 {
40829 return ( sType == rhs.sType )
40830 && ( pNext == rhs.pNext )
40831 && ( physicalDeviceCount == rhs.physicalDeviceCount )
40832 && ( pPhysicalDevices == rhs.pPhysicalDevices );
40833 }
40834
40835 bool operator!=( DeviceGroupDeviceCreateInfo const& rhs ) const
40836 {
40837 return !operator==( rhs );
40838 }
40839
40840 private:
40841 StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo;
40842
40843 public:
40844 const void* pNext = nullptr;
40845 uint32_t physicalDeviceCount;
40846 const PhysicalDevice* pPhysicalDevices;
40847 };
40848 static_assert( sizeof( DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), "struct and wrapper have different size!" );
40849
40850 using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
40851
40852#ifndef VULKAN_HPP_NO_SMART_HANDLE
40853
40854 template <typename Dispatch> class UniqueHandleTraits<Instance,Dispatch> {public: using deleter = ObjectDestroy<NoParent,Dispatch>; };
40855 using UniqueInstance = UniqueHandle<Instance,DispatchLoaderStatic>;
40856#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40857
40858 template<typename Dispatch = DispatchLoaderStatic>
40859 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance, Dispatch const &d = Dispatch() );
40860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40861 template<typename Dispatch = DispatchLoaderStatic>
40862 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() );
40863#ifndef VULKAN_HPP_NO_SMART_HANDLE
40864 template<typename Dispatch = DispatchLoaderStatic>
40865 typename ResultValueType<UniqueHandle<Instance,Dispatch>>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr, Dispatch const &d = Dispatch() );
40866#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40868
40869 template<typename Dispatch>
40870 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance, Dispatch const &d)
40871 {
40872 return static_cast<Result>( d.vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
40873 }
40874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40875 template<typename Dispatch>
40876 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d )
40877 {
40878 Instance instance;
40879 Result result = static_cast<Result>( d.vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
40880 return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstance" );
40881 }
40882#ifndef VULKAN_HPP_NO_SMART_HANDLE
40883 template<typename Dispatch>
40884 VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<Instance,Dispatch>>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator, Dispatch const &d )
40885 {
40886 Instance instance;
40887 Result result = static_cast<Result>( d.vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
40888
40889 ObjectDestroy<NoParent,Dispatch> deleter( allocator, d );
40890 return createResultValue<Instance,Dispatch>( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstanceUnique", deleter );
40891 }
40892#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
40893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40894
40895
40896 struct BaseOutStructure
40897 {
40898 BaseOutStructure( )
40899 {
40900 }
40901
40902 BaseOutStructure( VkBaseOutStructure const & rhs )
40903 {
40904 memcpy( this, &rhs, sizeof( BaseOutStructure ) );
40905 }
40906
40907 BaseOutStructure& operator=( VkBaseOutStructure const & rhs )
40908 {
40909 memcpy( this, &rhs, sizeof( BaseOutStructure ) );
40910 return *this;
40911 }
40912 BaseOutStructure& setPNext( struct BaseOutStructure* pNext_ )
40913 {
40914 pNext = pNext_;
40915 return *this;
40916 }
40917
40918 operator const VkBaseOutStructure&() const
40919 {
40920 return *reinterpret_cast<const VkBaseOutStructure*>(this);
40921 }
40922
40923 bool operator==( BaseOutStructure const& rhs ) const
40924 {
40925 return ( sType == rhs.sType )
40926 && ( pNext == rhs.pNext );
40927 }
40928
40929 bool operator!=( BaseOutStructure const& rhs ) const
40930 {
40931 return !operator==( rhs );
40932 }
40933
40934 StructureType sType;
40935 struct BaseOutStructure* pNext = nullptr;
40936 };
40937 static_assert( sizeof( BaseOutStructure ) == sizeof( VkBaseOutStructure ), "struct and wrapper have different size!" );
40938
40939 struct BaseInStructure
40940 {
40941 BaseInStructure( )
40942 {
40943 }
40944
40945 BaseInStructure( VkBaseInStructure const & rhs )
40946 {
40947 memcpy( this, &rhs, sizeof( BaseInStructure ) );
40948 }
40949
40950 BaseInStructure& operator=( VkBaseInStructure const & rhs )
40951 {
40952 memcpy( this, &rhs, sizeof( BaseInStructure ) );
40953 return *this;
40954 }
40955 BaseInStructure& setPNext( const struct BaseInStructure* pNext_ )
40956 {
40957 pNext = pNext_;
40958 return *this;
40959 }
40960
40961 operator const VkBaseInStructure&() const
40962 {
40963 return *reinterpret_cast<const VkBaseInStructure*>(this);
40964 }
40965
40966 bool operator==( BaseInStructure const& rhs ) const
40967 {
40968 return ( sType == rhs.sType )
40969 && ( pNext == rhs.pNext );
40970 }
40971
40972 bool operator!=( BaseInStructure const& rhs ) const
40973 {
40974 return !operator==( rhs );
40975 }
40976
40977 StructureType sType;
40978 const struct BaseInStructure* pNext = nullptr;
40979 };
40980 static_assert( sizeof( BaseInStructure ) == sizeof( VkBaseInStructure ), "struct and wrapper have different size!" );
40981
40982 template <> struct isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>{ enum { value = true }; };
40983 template <> struct isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>{ enum { value = true }; };
40984 template <> struct isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>{ enum { value = true }; };
40985 template <> struct isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>{ enum { value = true }; };
40986#ifdef VK_USE_PLATFORM_WIN32_NV
40987 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>{ enum { value = true }; };
40988#endif /*VK_USE_PLATFORM_WIN32_NV*/
40989#ifdef VK_USE_PLATFORM_WIN32_NV
40990 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>{ enum { value = true }; };
40991#endif /*VK_USE_PLATFORM_WIN32_NV*/
40992 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2>{ enum { value = true }; };
40993 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePushDescriptorPropertiesKHR>{ enum { value = true }; };
40994 template <> struct isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>{ enum { value = true }; };
40995 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceVariablePointerFeatures>{ enum { value = true }; };
40996 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeatures>{ enum { value = true }; };
40997 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceIDProperties>{ enum { value = true }; };
40998#ifdef VK_USE_PLATFORM_WIN32_KHR
40999 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
41000#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41001#ifdef VK_USE_PLATFORM_WIN32_KHR
41002 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>{ enum { value = true }; };
41003#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41004#ifdef VK_USE_PLATFORM_WIN32_KHR
41005 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>{ enum { value = true }; };
41006#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41007#ifdef VK_USE_PLATFORM_WIN32_KHR
41008 template <> struct isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>{ enum { value = true }; };
41009#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41010#ifdef VK_USE_PLATFORM_WIN32_KHR
41011 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>{ enum { value = true }; };
41012#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41013 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceMultiviewFeatures>{ enum { value = true }; };
41014 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeatures>{ enum { value = true }; };
41015 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewProperties>{ enum { value = true }; };
41016 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfo>{ enum { value = true }; };
41017 template <> struct isStructureChainValid<BindBufferMemoryInfo, BindBufferMemoryDeviceGroupInfo>{ enum { value = true }; };
41018 template <> struct isStructureChainValid<BindImageMemoryInfo, BindImageMemoryDeviceGroupInfo>{ enum { value = true }; };
41019 template <> struct isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfo>{ enum { value = true }; };
41020 template <> struct isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfo>{ enum { value = true }; };
41021 template <> struct isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfo>{ enum { value = true }; };
41022 template <> struct isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfo>{ enum { value = true }; };
41023 template <> struct isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHR>{ enum { value = true }; };
41024 template <> struct isStructureChainValid<BindImageMemoryInfo, BindImageMemorySwapchainInfoKHR>{ enum { value = true }; };
41025 template <> struct isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>{ enum { value = true }; };
41026 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>{ enum { value = true }; };
41027 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceDiscardRectanglePropertiesEXT>{ enum { value = true }; };
41028 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
41029 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDevice16BitStorageFeatures>{ enum { value = true }; };
41030 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeatures>{ enum { value = true }; };
41031 template <> struct isStructureChainValid<MemoryRequirements2, MemoryDedicatedRequirements>{ enum { value = true }; };
41032 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfo>{ enum { value = true }; };
41033 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfo>{ enum { value = true }; };
41034 template <> struct isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfo>{ enum { value = true }; };
41035 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceSamplerYcbcrConversionFeatures>{ enum { value = true }; };
41036 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeatures>{ enum { value = true }; };
41037 template <> struct isStructureChainValid<ImageFormatProperties2, SamplerYcbcrConversionImageFormatProperties>{ enum { value = true }; };
41038 template <> struct isStructureChainValid<ImageFormatProperties2, TextureLODGatherFormatPropertiesAMD>{ enum { value = true }; };
41039 template <> struct isStructureChainValid<SubmitInfo, ProtectedSubmitInfo>{ enum { value = true }; };
41040 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
41041 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
41042 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceProtectedMemoryProperties>{ enum { value = true }; };
41043 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>{ enum { value = true }; };
41044 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>{ enum { value = true }; };
41045 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>{ enum { value = true }; };
41046 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
41047 template <> struct isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>{ enum { value = true }; };
41048 template <> struct isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>{ enum { value = true }; };
41049 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMaintenance3Properties>{ enum { value = true }; };
41050 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderDrawParameterFeatures>{ enum { value = true }; };
41051 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceExternalMemoryHostPropertiesEXT>{ enum { value = true }; };
41052 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceConservativeRasterizationPropertiesEXT>{ enum { value = true }; };
41053 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShaderCorePropertiesAMD>{ enum { value = true }; };
41054 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceDescriptorIndexingFeaturesEXT>{ enum { value = true }; };
41055 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceDescriptorIndexingFeaturesEXT>{ enum { value = true }; };
41056 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceDescriptorIndexingPropertiesEXT>{ enum { value = true }; };
41057 template <> struct isStructureChainValid<DescriptorSetAllocateInfo, DescriptorSetVariableDescriptorCountAllocateInfoEXT>{ enum { value = true }; };
41058 template <> struct isStructureChainValid<DescriptorSetLayoutSupport, DescriptorSetVariableDescriptorCountLayoutSupportEXT>{ enum { value = true }; };
41059 template <> struct isStructureChainValid<PipelineVertexInputStateCreateInfo, PipelineVertexInputDivisorStateCreateInfoEXT>{ enum { value = true }; };
41060 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceVertexAttributeDivisorPropertiesEXT>{ enum { value = true }; };
41061#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
41062 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportAndroidHardwareBufferInfoANDROID>{ enum { value = true }; };
41063#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
41064#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
41065 template <> struct isStructureChainValid<ImageFormatProperties2, AndroidHardwareBufferUsageANDROID>{ enum { value = true }; };
41066#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
41067 template <> struct isStructureChainValid<CommandBufferInheritanceInfo, CommandBufferInheritanceConditionalRenderingInfoEXT>{ enum { value = true }; };
41068#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
41069 template <> struct isStructureChainValid<ImageCreateInfo, ExternalFormatANDROID>{ enum { value = true }; };
41070 template <> struct isStructureChainValid<SamplerYcbcrConversionCreateInfo, ExternalFormatANDROID>{ enum { value = true }; };
41071#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
41072 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDevice8BitStorageFeaturesKHR>{ enum { value = true }; };
41073 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice8BitStorageFeaturesKHR>{ enum { value = true }; };
41074 template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
41075 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
41076 template <> struct isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>{ enum { value = true }; };
41077 template <> struct isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfo>{ enum { value = true }; };
41078 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfo>{ enum { value = true }; };
41079 template <> struct isStructureChainValid<BindImageMemoryInfo, BindImagePlaneMemoryInfo>{ enum { value = true }; };
41080 template <> struct isStructureChainValid<ImageMemoryRequirementsInfo2, ImagePlaneMemoryRequirementsInfo>{ enum { value = true }; };
41081 template <> struct isStructureChainValid<QueueFamilyProperties2, QueueFamilyCheckpointPropertiesNV>{ enum { value = true }; };
41082 template <> struct isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>{ enum { value = true }; };
41083 template <> struct isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>{ enum { value = true }; };
41084 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>{ enum { value = true }; };
41085 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSampleLocationsPropertiesEXT>{ enum { value = true }; };
41086 template <> struct isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>{ enum { value = true }; };
41087 template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>{ enum { value = true }; };
41088 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>{ enum { value = true }; };
41089 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>{ enum { value = true }; };
41090#ifdef VK_USE_PLATFORM_WIN32_NV
41091 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>{ enum { value = true }; };
41092#endif /*VK_USE_PLATFORM_WIN32_NV*/
41093 template <> struct isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>{ enum { value = true }; };
41094 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSubgroupProperties>{ enum { value = true }; };
41095 template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2, PhysicalDeviceExternalImageFormatInfo>{ enum { value = true }; };
41096 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfo>{ enum { value = true }; };
41097 template <> struct isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfo>{ enum { value = true }; };
41098 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfo>{ enum { value = true }; };
41099#ifdef VK_USE_PLATFORM_WIN32_KHR
41100 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
41101#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41102 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>{ enum { value = true }; };
41103 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryHostPointerInfoEXT>{ enum { value = true }; };
41104 template <> struct isStructureChainValid<ImageFormatProperties2, ExternalImageFormatProperties>{ enum { value = true }; };
41105 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfo>{ enum { value = true }; };
41106 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfo>{ enum { value = true }; };
41107 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>{ enum { value = true }; };
41108 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfo>{ enum { value = true }; };
41109 template <> struct isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHR>{ enum { value = true }; };
41110 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHR>{ enum { value = true }; };
41111 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>{ enum { value = true }; };
41112 template <> struct isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>{ enum { value = true }; };
41113 template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePointClippingProperties>{ enum { value = true }; };
41114 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>{ enum { value = true }; };
41115 template <> struct isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfo>{ enum { value = true }; };
41116#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
41117#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
41118 template <> struct isStructureChainValid<AndroidHardwareBufferPropertiesANDROID, AndroidHardwareBufferFormatPropertiesANDROID>{ enum { value = true }; };
41119#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
41120#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
41121 template <> struct isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>{ enum { value = true }; };
41122 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>{ enum { value = true }; };
41123 template <> struct isStructureChainValid<DeviceQueueCreateInfo, DeviceQueueGlobalPriorityCreateInfoEXT>{ enum { value = true }; };
41124 template <> struct isStructureChainValid<InstanceCreateInfo, DebugUtilsMessengerCreateInfoEXT>{ enum { value = true }; };
41125 template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationConservativeStateCreateInfoEXT>{ enum { value = true }; };
41126 template <> struct isStructureChainValid<DescriptorSetLayoutCreateInfo, DescriptorSetLayoutBindingFlagsCreateInfoEXT>{ enum { value = true }; };
41127 template <> struct isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfo>{ enum { value = true }; };
41128 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
41129 {
41130 return "(void)";
41131 }
41132
41133 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
41134 {
41135 return "{}";
41136 }
41137
41138 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
41139 {
41140 return "(void)";
41141 }
41142
41143 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
41144 {
41145 return "{}";
41146 }
41147
41148 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
41149 {
41150 return "(void)";
41151 }
41152
41153 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
41154 {
41155 return "{}";
41156 }
41157
41158 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
41159 {
41160 return "(void)";
41161 }
41162
41163 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
41164 {
41165 return "{}";
41166 }
41167
41168 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
41169 {
41170 return "(void)";
41171 }
41172
41173 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
41174 {
41175 return "{}";
41176 }
41177
41178 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
41179 {
41180 return "(void)";
41181 }
41182
41183 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
41184 {
41185 return "{}";
41186 }
41187
41188 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
41189 {
41190 return "(void)";
41191 }
41192
41193 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
41194 {
41195 return "{}";
41196 }
41197
41198 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
41199 {
41200 return "(void)";
41201 }
41202
41203 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
41204 {
41205 return "{}";
41206 }
41207
41208 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
41209 {
41210 return "(void)";
41211 }
41212
41213 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
41214 {
41215 return "{}";
41216 }
41217
41218 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
41219 {
41220 return "(void)";
41221 }
41222
41223 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
41224 {
41225 return "{}";
41226 }
41227
41228 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
41229 {
41230 return "(void)";
41231 }
41232
41233 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
41234 {
41235 return "{}";
41236 }
41237
41238 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
41239 {
41240 return "(void)";
41241 }
41242
41243 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
41244 {
41245 return "{}";
41246 }
41247
41248 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
41249 {
41250 return "(void)";
41251 }
41252
41253 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
41254 {
41255 return "{}";
41256 }
41257
41258 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
41259 {
41260 return "(void)";
41261 }
41262
41263 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
41264 {
41265 return "{}";
41266 }
41267
41268 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
41269 {
41270 return "(void)";
41271 }
41272
41273 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
41274 {
41275 return "{}";
41276 }
41277
41278 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
41279 {
41280 return "(void)";
41281 }
41282
41283 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
41284 {
41285 return "{}";
41286 }
41287
41288 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
41289 {
41290 return "(void)";
41291 }
41292
41293 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
41294 {
41295 return "{}";
41296 }
41297
41298 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
41299 {
41300 return "(void)";
41301 }
41302
41303 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
41304 {
41305 return "{}";
41306 }
41307
41308 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
41309 {
41310 return "(void)";
41311 }
41312
41313 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
41314 {
41315 return "{}";
41316 }
41317
41318 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
41319 {
41320 return "(void)";
41321 }
41322
41323 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
41324 {
41325 return "{}";
41326 }
41327
41328 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
41329 {
41330 return "(void)";
41331 }
41332
41333 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
41334 {
41335 return "{}";
41336 }
41337
41338 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
41339 {
41340 return "(void)";
41341 }
41342
41343 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
41344 {
41345 return "{}";
41346 }
41347
41348 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
41349 {
41350 return "(void)";
41351 }
41352
41353 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
41354 {
41355 return "{}";
41356 }
41357
41358 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
41359 {
41360 return "(void)";
41361 }
41362
41363 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
41364 {
41365 return "{}";
41366 }
41367
41368 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
41369 {
41370 return "(void)";
41371 }
41372
41373 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
41374 {
41375 return "{}";
41376 }
41377
41378 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBits)
41379 {
41380 return "(void)";
41381 }
41382
41383 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlags)
41384 {
41385 return "{}";
41386 }
41387
41388 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
41389 {
41390 return "(void)";
41391 }
41392
41393 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
41394 {
41395 return "{}";
41396 }
41397
41398 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
41399 {
41400 return "(void)";
41401 }
41402
41403 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
41404 {
41405 return "{}";
41406 }
41407
41408#ifdef VK_USE_PLATFORM_ANDROID_KHR
41409 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
41410 {
41411 return "(void)";
41412 }
41413#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
41414
41415#ifdef VK_USE_PLATFORM_ANDROID_KHR
41416 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
41417 {
41418 return "{}";
41419 }
41420#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
41421
41422#ifdef VK_USE_PLATFORM_MIR_KHR
41423 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
41424 {
41425 return "(void)";
41426 }
41427#endif /*VK_USE_PLATFORM_MIR_KHR*/
41428
41429#ifdef VK_USE_PLATFORM_MIR_KHR
41430 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
41431 {
41432 return "{}";
41433 }
41434#endif /*VK_USE_PLATFORM_MIR_KHR*/
41435
41436#ifdef VK_USE_PLATFORM_VI_NN
41437 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
41438 {
41439 return "(void)";
41440 }
41441#endif /*VK_USE_PLATFORM_VI_NN*/
41442
41443#ifdef VK_USE_PLATFORM_VI_NN
41444 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
41445 {
41446 return "{}";
41447 }
41448#endif /*VK_USE_PLATFORM_VI_NN*/
41449
41450#ifdef VK_USE_PLATFORM_WAYLAND_KHR
41451 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
41452 {
41453 return "(void)";
41454 }
41455#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
41456
41457#ifdef VK_USE_PLATFORM_WAYLAND_KHR
41458 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
41459 {
41460 return "{}";
41461 }
41462#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
41463
41464#ifdef VK_USE_PLATFORM_WIN32_KHR
41465 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
41466 {
41467 return "(void)";
41468 }
41469#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41470
41471#ifdef VK_USE_PLATFORM_WIN32_KHR
41472 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
41473 {
41474 return "{}";
41475 }
41476#endif /*VK_USE_PLATFORM_WIN32_KHR*/
41477
41478#ifdef VK_USE_PLATFORM_XLIB_KHR
41479 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
41480 {
41481 return "(void)";
41482 }
41483#endif /*VK_USE_PLATFORM_XLIB_KHR*/
41484
41485#ifdef VK_USE_PLATFORM_XLIB_KHR
41486 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
41487 {
41488 return "{}";
41489 }
41490#endif /*VK_USE_PLATFORM_XLIB_KHR*/
41491
41492#ifdef VK_USE_PLATFORM_XCB_KHR
41493 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
41494 {
41495 return "(void)";
41496 }
41497#endif /*VK_USE_PLATFORM_XCB_KHR*/
41498
41499#ifdef VK_USE_PLATFORM_XCB_KHR
41500 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
41501 {
41502 return "{}";
41503 }
41504#endif /*VK_USE_PLATFORM_XCB_KHR*/
41505
41506#ifdef VK_USE_PLATFORM_IOS_MVK
41507 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
41508 {
41509 return "(void)";
41510 }
41511#endif /*VK_USE_PLATFORM_IOS_MVK*/
41512
41513#ifdef VK_USE_PLATFORM_IOS_MVK
41514 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
41515 {
41516 return "{}";
41517 }
41518#endif /*VK_USE_PLATFORM_IOS_MVK*/
41519
41520#ifdef VK_USE_PLATFORM_MACOS_MVK
41521 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
41522 {
41523 return "(void)";
41524 }
41525#endif /*VK_USE_PLATFORM_MACOS_MVK*/
41526
41527#ifdef VK_USE_PLATFORM_MACOS_MVK
41528 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
41529 {
41530 return "{}";
41531 }
41532#endif /*VK_USE_PLATFORM_MACOS_MVK*/
41533
41534 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBits)
41535 {
41536 return "(void)";
41537 }
41538
41539 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlags)
41540 {
41541 return "{}";
41542 }
41543
41544 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
41545 {
41546 return "(void)";
41547 }
41548
41549 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
41550 {
41551 return "{}";
41552 }
41553
41554 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
41555 {
41556 return "(void)";
41557 }
41558
41559 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
41560 {
41561 return "{}";
41562 }
41563
41564 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
41565 {
41566 return "(void)";
41567 }
41568
41569 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
41570 {
41571 return "{}";
41572 }
41573
41574 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
41575 {
41576 return "(void)";
41577 }
41578
41579 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
41580 {
41581 return "{}";
41582 }
41583
41584 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
41585 {
41586 return "(void)";
41587 }
41588
41589 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
41590 {
41591 return "{}";
41592 }
41593
41594 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCreateFlagBitsEXT)
41595 {
41596 return "(void)";
41597 }
41598
41599 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCreateFlagsEXT)
41600 {
41601 return "{}";
41602 }
41603
41604 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCallbackDataFlagBitsEXT)
41605 {
41606 return "(void)";
41607 }
41608
41609 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessengerCallbackDataFlagsEXT)
41610 {
41611 return "{}";
41612 }
41613
41614 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagBitsEXT)
41615 {
41616 return "(void)";
41617 }
41618
41619 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagsEXT)
41620 {
41621 return "{}";
41622 }
41623
41624 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
41625 {
41626 switch (value)
41627 {
41628 case ImageLayout::eUndefined: return "Undefined";
41629 case ImageLayout::eGeneral: return "General";
41630 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
41631 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
41632 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
41633 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
41634 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
41635 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
41636 case ImageLayout::ePreinitialized: return "Preinitialized";
41637 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimal: return "DepthReadOnlyStencilAttachmentOptimal";
41638 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimal: return "DepthAttachmentStencilReadOnlyOptimal";
41639 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
41640 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
41641 default: return "invalid";
41642 }
41643 }
41644
41645 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
41646 {
41647 switch (value)
41648 {
41649 case AttachmentLoadOp::eLoad: return "Load";
41650 case AttachmentLoadOp::eClear: return "Clear";
41651 case AttachmentLoadOp::eDontCare: return "DontCare";
41652 default: return "invalid";
41653 }
41654 }
41655
41656 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
41657 {
41658 switch (value)
41659 {
41660 case AttachmentStoreOp::eStore: return "Store";
41661 case AttachmentStoreOp::eDontCare: return "DontCare";
41662 default: return "invalid";
41663 }
41664 }
41665
41666 VULKAN_HPP_INLINE std::string to_string(ImageType value)
41667 {
41668 switch (value)
41669 {
41670 case ImageType::e1D: return "1D";
41671 case ImageType::e2D: return "2D";
41672 case ImageType::e3D: return "3D";
41673 default: return "invalid";
41674 }
41675 }
41676
41677 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
41678 {
41679 switch (value)
41680 {
41681 case ImageTiling::eOptimal: return "Optimal";
41682 case ImageTiling::eLinear: return "Linear";
41683 default: return "invalid";
41684 }
41685 }
41686
41687 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
41688 {
41689 switch (value)
41690 {
41691 case ImageViewType::e1D: return "1D";
41692 case ImageViewType::e2D: return "2D";
41693 case ImageViewType::e3D: return "3D";
41694 case ImageViewType::eCube: return "Cube";
41695 case ImageViewType::e1DArray: return "1DArray";
41696 case ImageViewType::e2DArray: return "2DArray";
41697 case ImageViewType::eCubeArray: return "CubeArray";
41698 default: return "invalid";
41699 }
41700 }
41701
41702 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
41703 {
41704 switch (value)
41705 {
41706 case CommandBufferLevel::ePrimary: return "Primary";
41707 case CommandBufferLevel::eSecondary: return "Secondary";
41708 default: return "invalid";
41709 }
41710 }
41711
41712 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
41713 {
41714 switch (value)
41715 {
41716 case ComponentSwizzle::eIdentity: return "Identity";
41717 case ComponentSwizzle::eZero: return "Zero";
41718 case ComponentSwizzle::eOne: return "One";
41719 case ComponentSwizzle::eR: return "R";
41720 case ComponentSwizzle::eG: return "G";
41721 case ComponentSwizzle::eB: return "B";
41722 case ComponentSwizzle::eA: return "A";
41723 default: return "invalid";
41724 }
41725 }
41726
41727 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
41728 {
41729 switch (value)
41730 {
41731 case DescriptorType::eSampler: return "Sampler";
41732 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
41733 case DescriptorType::eSampledImage: return "SampledImage";
41734 case DescriptorType::eStorageImage: return "StorageImage";
41735 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
41736 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
41737 case DescriptorType::eUniformBuffer: return "UniformBuffer";
41738 case DescriptorType::eStorageBuffer: return "StorageBuffer";
41739 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
41740 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
41741 case DescriptorType::eInputAttachment: return "InputAttachment";
41742 default: return "invalid";
41743 }
41744 }
41745
41746 VULKAN_HPP_INLINE std::string to_string(QueryType value)
41747 {
41748 switch (value)
41749 {
41750 case QueryType::eOcclusion: return "Occlusion";
41751 case QueryType::ePipelineStatistics: return "PipelineStatistics";
41752 case QueryType::eTimestamp: return "Timestamp";
41753 default: return "invalid";
41754 }
41755 }
41756
41757 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
41758 {
41759 switch (value)
41760 {
41761 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
41762 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
41763 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
41764 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
41765 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
41766 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
41767 default: return "invalid";
41768 }
41769 }
41770
41771 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
41772 {
41773 switch (value)
41774 {
41775 case PipelineBindPoint::eGraphics: return "Graphics";
41776 case PipelineBindPoint::eCompute: return "Compute";
41777 default: return "invalid";
41778 }
41779 }
41780
41781 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
41782 {
41783 switch (value)
41784 {
41785 case PipelineCacheHeaderVersion::eOne: return "One";
41786 default: return "invalid";
41787 }
41788 }
41789
41790 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
41791 {
41792 switch (value)
41793 {
41794 case PrimitiveTopology::ePointList: return "PointList";
41795 case PrimitiveTopology::eLineList: return "LineList";
41796 case PrimitiveTopology::eLineStrip: return "LineStrip";
41797 case PrimitiveTopology::eTriangleList: return "TriangleList";
41798 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
41799 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
41800 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
41801 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
41802 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
41803 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
41804 case PrimitiveTopology::ePatchList: return "PatchList";
41805 default: return "invalid";
41806 }
41807 }
41808
41809 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
41810 {
41811 switch (value)
41812 {
41813 case SharingMode::eExclusive: return "Exclusive";
41814 case SharingMode::eConcurrent: return "Concurrent";
41815 default: return "invalid";
41816 }
41817 }
41818
41819 VULKAN_HPP_INLINE std::string to_string(IndexType value)
41820 {
41821 switch (value)
41822 {
41823 case IndexType::eUint16: return "Uint16";
41824 case IndexType::eUint32: return "Uint32";
41825 default: return "invalid";
41826 }
41827 }
41828
41829 VULKAN_HPP_INLINE std::string to_string(Filter value)
41830 {
41831 switch (value)
41832 {
41833 case Filter::eNearest: return "Nearest";
41834 case Filter::eLinear: return "Linear";
41835 case Filter::eCubicIMG: return "CubicIMG";
41836 default: return "invalid";
41837 }
41838 }
41839
41840 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
41841 {
41842 switch (value)
41843 {
41844 case SamplerMipmapMode::eNearest: return "Nearest";
41845 case SamplerMipmapMode::eLinear: return "Linear";
41846 default: return "invalid";
41847 }
41848 }
41849
41850 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
41851 {
41852 switch (value)
41853 {
41854 case SamplerAddressMode::eRepeat: return "Repeat";
41855 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
41856 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
41857 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
41858 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
41859 default: return "invalid";
41860 }
41861 }
41862
41863 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
41864 {
41865 switch (value)
41866 {
41867 case CompareOp::eNever: return "Never";
41868 case CompareOp::eLess: return "Less";
41869 case CompareOp::eEqual: return "Equal";
41870 case CompareOp::eLessOrEqual: return "LessOrEqual";
41871 case CompareOp::eGreater: return "Greater";
41872 case CompareOp::eNotEqual: return "NotEqual";
41873 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
41874 case CompareOp::eAlways: return "Always";
41875 default: return "invalid";
41876 }
41877 }
41878
41879 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
41880 {
41881 switch (value)
41882 {
41883 case PolygonMode::eFill: return "Fill";
41884 case PolygonMode::eLine: return "Line";
41885 case PolygonMode::ePoint: return "Point";
41886 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
41887 default: return "invalid";
41888 }
41889 }
41890
41891 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
41892 {
41893 switch (value)
41894 {
41895 case CullModeFlagBits::eNone: return "None";
41896 case CullModeFlagBits::eFront: return "Front";
41897 case CullModeFlagBits::eBack: return "Back";
41898 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
41899 default: return "invalid";
41900 }
41901 }
41902
41903 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
41904 {
41905 if (!value) return "{}";
41906 std::string result;
41907 if (value & CullModeFlagBits::eNone) result += "None | ";
41908 if (value & CullModeFlagBits::eFront) result += "Front | ";
41909 if (value & CullModeFlagBits::eBack) result += "Back | ";
41910 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
41911 return "{" + result.substr(0, result.size() - 3) + "}";
41912 }
41913
41914 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
41915 {
41916 switch (value)
41917 {
41918 case FrontFace::eCounterClockwise: return "CounterClockwise";
41919 case FrontFace::eClockwise: return "Clockwise";
41920 default: return "invalid";
41921 }
41922 }
41923
41924 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
41925 {
41926 switch (value)
41927 {
41928 case BlendFactor::eZero: return "Zero";
41929 case BlendFactor::eOne: return "One";
41930 case BlendFactor::eSrcColor: return "SrcColor";
41931 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
41932 case BlendFactor::eDstColor: return "DstColor";
41933 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
41934 case BlendFactor::eSrcAlpha: return "SrcAlpha";
41935 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
41936 case BlendFactor::eDstAlpha: return "DstAlpha";
41937 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
41938 case BlendFactor::eConstantColor: return "ConstantColor";
41939 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
41940 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
41941 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
41942 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
41943 case BlendFactor::eSrc1Color: return "Src1Color";
41944 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
41945 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
41946 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
41947 default: return "invalid";
41948 }
41949 }
41950
41951 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
41952 {
41953 switch (value)
41954 {
41955 case BlendOp::eAdd: return "Add";
41956 case BlendOp::eSubtract: return "Subtract";
41957 case BlendOp::eReverseSubtract: return "ReverseSubtract";
41958 case BlendOp::eMin: return "Min";
41959 case BlendOp::eMax: return "Max";
41960 case BlendOp::eZeroEXT: return "ZeroEXT";
41961 case BlendOp::eSrcEXT: return "SrcEXT";
41962 case BlendOp::eDstEXT: return "DstEXT";
41963 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
41964 case BlendOp::eDstOverEXT: return "DstOverEXT";
41965 case BlendOp::eSrcInEXT: return "SrcInEXT";
41966 case BlendOp::eDstInEXT: return "DstInEXT";
41967 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
41968 case BlendOp::eDstOutEXT: return "DstOutEXT";
41969 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
41970 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
41971 case BlendOp::eXorEXT: return "XorEXT";
41972 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
41973 case BlendOp::eScreenEXT: return "ScreenEXT";
41974 case BlendOp::eOverlayEXT: return "OverlayEXT";
41975 case BlendOp::eDarkenEXT: return "DarkenEXT";
41976 case BlendOp::eLightenEXT: return "LightenEXT";
41977 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
41978 case BlendOp::eColorburnEXT: return "ColorburnEXT";
41979 case BlendOp::eHardlightEXT: return "HardlightEXT";
41980 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
41981 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
41982 case BlendOp::eExclusionEXT: return "ExclusionEXT";
41983 case BlendOp::eInvertEXT: return "InvertEXT";
41984 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
41985 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
41986 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
41987 case BlendOp::eVividlightEXT: return "VividlightEXT";
41988 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
41989 case BlendOp::ePinlightEXT: return "PinlightEXT";
41990 case BlendOp::eHardmixEXT: return "HardmixEXT";
41991 case BlendOp::eHslHueEXT: return "HslHueEXT";
41992 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
41993 case BlendOp::eHslColorEXT: return "HslColorEXT";
41994 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
41995 case BlendOp::ePlusEXT: return "PlusEXT";
41996 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
41997 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
41998 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
41999 case BlendOp::eMinusEXT: return "MinusEXT";
42000 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
42001 case BlendOp::eContrastEXT: return "ContrastEXT";
42002 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
42003 case BlendOp::eRedEXT: return "RedEXT";
42004 case BlendOp::eGreenEXT: return "GreenEXT";
42005 case BlendOp::eBlueEXT: return "BlueEXT";
42006 default: return "invalid";
42007 }
42008 }
42009
42010 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
42011 {
42012 switch (value)
42013 {
42014 case StencilOp::eKeep: return "Keep";
42015 case StencilOp::eZero: return "Zero";
42016 case StencilOp::eReplace: return "Replace";
42017 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
42018 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
42019 case StencilOp::eInvert: return "Invert";
42020 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
42021 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
42022 default: return "invalid";
42023 }
42024 }
42025
42026 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
42027 {
42028 switch (value)
42029 {
42030 case LogicOp::eClear: return "Clear";
42031 case LogicOp::eAnd: return "And";
42032 case LogicOp::eAndReverse: return "AndReverse";
42033 case LogicOp::eCopy: return "Copy";
42034 case LogicOp::eAndInverted: return "AndInverted";
42035 case LogicOp::eNoOp: return "NoOp";
42036 case LogicOp::eXor: return "Xor";
42037 case LogicOp::eOr: return "Or";
42038 case LogicOp::eNor: return "Nor";
42039 case LogicOp::eEquivalent: return "Equivalent";
42040 case LogicOp::eInvert: return "Invert";
42041 case LogicOp::eOrReverse: return "OrReverse";
42042 case LogicOp::eCopyInverted: return "CopyInverted";
42043 case LogicOp::eOrInverted: return "OrInverted";
42044 case LogicOp::eNand: return "Nand";
42045 case LogicOp::eSet: return "Set";
42046 default: return "invalid";
42047 }
42048 }
42049
42050 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
42051 {
42052 switch (value)
42053 {
42054 case InternalAllocationType::eExecutable: return "Executable";
42055 default: return "invalid";
42056 }
42057 }
42058
42059 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
42060 {
42061 switch (value)
42062 {
42063 case SystemAllocationScope::eCommand: return "Command";
42064 case SystemAllocationScope::eObject: return "Object";
42065 case SystemAllocationScope::eCache: return "Cache";
42066 case SystemAllocationScope::eDevice: return "Device";
42067 case SystemAllocationScope::eInstance: return "Instance";
42068 default: return "invalid";
42069 }
42070 }
42071
42072 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
42073 {
42074 switch (value)
42075 {
42076 case PhysicalDeviceType::eOther: return "Other";
42077 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
42078 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
42079 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
42080 case PhysicalDeviceType::eCpu: return "Cpu";
42081 default: return "invalid";
42082 }
42083 }
42084
42085 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
42086 {
42087 switch (value)
42088 {
42089 case VertexInputRate::eVertex: return "Vertex";
42090 case VertexInputRate::eInstance: return "Instance";
42091 default: return "invalid";
42092 }
42093 }
42094
42095 VULKAN_HPP_INLINE std::string to_string(Format value)
42096 {
42097 switch (value)
42098 {
42099 case Format::eUndefined: return "Undefined";
42100 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
42101 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
42102 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
42103 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
42104 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
42105 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
42106 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
42107 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
42108 case Format::eR8Unorm: return "R8Unorm";
42109 case Format::eR8Snorm: return "R8Snorm";
42110 case Format::eR8Uscaled: return "R8Uscaled";
42111 case Format::eR8Sscaled: return "R8Sscaled";
42112 case Format::eR8Uint: return "R8Uint";
42113 case Format::eR8Sint: return "R8Sint";
42114 case Format::eR8Srgb: return "R8Srgb";
42115 case Format::eR8G8Unorm: return "R8G8Unorm";
42116 case Format::eR8G8Snorm: return "R8G8Snorm";
42117 case Format::eR8G8Uscaled: return "R8G8Uscaled";
42118 case Format::eR8G8Sscaled: return "R8G8Sscaled";
42119 case Format::eR8G8Uint: return "R8G8Uint";
42120 case Format::eR8G8Sint: return "R8G8Sint";
42121 case Format::eR8G8Srgb: return "R8G8Srgb";
42122 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
42123 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
42124 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
42125 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
42126 case Format::eR8G8B8Uint: return "R8G8B8Uint";
42127 case Format::eR8G8B8Sint: return "R8G8B8Sint";
42128 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
42129 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
42130 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
42131 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
42132 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
42133 case Format::eB8G8R8Uint: return "B8G8R8Uint";
42134 case Format::eB8G8R8Sint: return "B8G8R8Sint";
42135 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
42136 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
42137 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
42138 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
42139 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
42140 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
42141 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
42142 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
42143 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
42144 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
42145 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
42146 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
42147 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
42148 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
42149 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
42150 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
42151 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
42152 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
42153 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
42154 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
42155 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
42156 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
42157 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
42158 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
42159 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
42160 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
42161 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
42162 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
42163 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
42164 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
42165 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
42166 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
42167 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
42168 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
42169 case Format::eR16Unorm: return "R16Unorm";
42170 case Format::eR16Snorm: return "R16Snorm";
42171 case Format::eR16Uscaled: return "R16Uscaled";
42172 case Format::eR16Sscaled: return "R16Sscaled";
42173 case Format::eR16Uint: return "R16Uint";
42174 case Format::eR16Sint: return "R16Sint";
42175 case Format::eR16Sfloat: return "R16Sfloat";
42176 case Format::eR16G16Unorm: return "R16G16Unorm";
42177 case Format::eR16G16Snorm: return "R16G16Snorm";
42178 case Format::eR16G16Uscaled: return "R16G16Uscaled";
42179 case Format::eR16G16Sscaled: return "R16G16Sscaled";
42180 case Format::eR16G16Uint: return "R16G16Uint";
42181 case Format::eR16G16Sint: return "R16G16Sint";
42182 case Format::eR16G16Sfloat: return "R16G16Sfloat";
42183 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
42184 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
42185 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
42186 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
42187 case Format::eR16G16B16Uint: return "R16G16B16Uint";
42188 case Format::eR16G16B16Sint: return "R16G16B16Sint";
42189 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
42190 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
42191 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
42192 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
42193 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
42194 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
42195 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
42196 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
42197 case Format::eR32Uint: return "R32Uint";
42198 case Format::eR32Sint: return "R32Sint";
42199 case Format::eR32Sfloat: return "R32Sfloat";
42200 case Format::eR32G32Uint: return "R32G32Uint";
42201 case Format::eR32G32Sint: return "R32G32Sint";
42202 case Format::eR32G32Sfloat: return "R32G32Sfloat";
42203 case Format::eR32G32B32Uint: return "R32G32B32Uint";
42204 case Format::eR32G32B32Sint: return "R32G32B32Sint";
42205 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
42206 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
42207 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
42208 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
42209 case Format::eR64Uint: return "R64Uint";
42210 case Format::eR64Sint: return "R64Sint";
42211 case Format::eR64Sfloat: return "R64Sfloat";
42212 case Format::eR64G64Uint: return "R64G64Uint";
42213 case Format::eR64G64Sint: return "R64G64Sint";
42214 case Format::eR64G64Sfloat: return "R64G64Sfloat";
42215 case Format::eR64G64B64Uint: return "R64G64B64Uint";
42216 case Format::eR64G64B64Sint: return "R64G64B64Sint";
42217 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
42218 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
42219 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
42220 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
42221 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
42222 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
42223 case Format::eD16Unorm: return "D16Unorm";
42224 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
42225 case Format::eD32Sfloat: return "D32Sfloat";
42226 case Format::eS8Uint: return "S8Uint";
42227 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
42228 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
42229 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
42230 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
42231 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
42232 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
42233 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
42234 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
42235 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
42236 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
42237 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
42238 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
42239 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
42240 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
42241 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
42242 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
42243 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
42244 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
42245 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
42246 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
42247 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
42248 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
42249 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
42250 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
42251 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
42252 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
42253 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
42254 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
42255 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
42256 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
42257 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
42258 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
42259 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
42260 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
42261 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
42262 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
42263 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
42264 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
42265 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
42266 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
42267 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
42268 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
42269 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
42270 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
42271 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
42272 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
42273 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
42274 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
42275 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
42276 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
42277 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
42278 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
42279 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
42280 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
42281 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
42282 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
42283 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
42284 case Format::eG8B8G8R8422Unorm: return "G8B8G8R8422Unorm";
42285 case Format::eB8G8R8G8422Unorm: return "B8G8R8G8422Unorm";
42286 case Format::eG8B8R83Plane420Unorm: return "G8B8R83Plane420Unorm";
42287 case Format::eG8B8R82Plane420Unorm: return "G8B8R82Plane420Unorm";
42288 case Format::eG8B8R83Plane422Unorm: return "G8B8R83Plane422Unorm";
42289 case Format::eG8B8R82Plane422Unorm: return "G8B8R82Plane422Unorm";
42290 case Format::eG8B8R83Plane444Unorm: return "G8B8R83Plane444Unorm";
42291 case Format::eR10X6UnormPack16: return "R10X6UnormPack16";
42292 case Format::eR10X6G10X6Unorm2Pack16: return "R10X6G10X6Unorm2Pack16";
42293 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return "R10X6G10X6B10X6A10X6Unorm4Pack16";
42294 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return "G10X6B10X6G10X6R10X6422Unorm4Pack16";
42295 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return "B10X6G10X6R10X6G10X6422Unorm4Pack16";
42296 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return "G10X6B10X6R10X63Plane420Unorm3Pack16";
42297 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return "G10X6B10X6R10X62Plane420Unorm3Pack16";
42298 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return "G10X6B10X6R10X63Plane422Unorm3Pack16";
42299 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return "G10X6B10X6R10X62Plane422Unorm3Pack16";
42300 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return "G10X6B10X6R10X63Plane444Unorm3Pack16";
42301 case Format::eR12X4UnormPack16: return "R12X4UnormPack16";
42302 case Format::eR12X4G12X4Unorm2Pack16: return "R12X4G12X4Unorm2Pack16";
42303 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return "R12X4G12X4B12X4A12X4Unorm4Pack16";
42304 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return "G12X4B12X4G12X4R12X4422Unorm4Pack16";
42305 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return "B12X4G12X4R12X4G12X4422Unorm4Pack16";
42306 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return "G12X4B12X4R12X43Plane420Unorm3Pack16";
42307 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return "G12X4B12X4R12X42Plane420Unorm3Pack16";
42308 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return "G12X4B12X4R12X43Plane422Unorm3Pack16";
42309 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return "G12X4B12X4R12X42Plane422Unorm3Pack16";
42310 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return "G12X4B12X4R12X43Plane444Unorm3Pack16";
42311 case Format::eG16B16G16R16422Unorm: return "G16B16G16R16422Unorm";
42312 case Format::eB16G16R16G16422Unorm: return "B16G16R16G16422Unorm";
42313 case Format::eG16B16R163Plane420Unorm: return "G16B16R163Plane420Unorm";
42314 case Format::eG16B16R162Plane420Unorm: return "G16B16R162Plane420Unorm";
42315 case Format::eG16B16R163Plane422Unorm: return "G16B16R163Plane422Unorm";
42316 case Format::eG16B16R162Plane422Unorm: return "G16B16R162Plane422Unorm";
42317 case Format::eG16B16R163Plane444Unorm: return "G16B16R163Plane444Unorm";
42318 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
42319 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
42320 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
42321 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
42322 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
42323 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
42324 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
42325 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
42326 default: return "invalid";
42327 }
42328 }
42329
42330 VULKAN_HPP_INLINE std::string to_string(StructureType value)
42331 {
42332 switch (value)
42333 {
42334 case StructureType::eApplicationInfo: return "ApplicationInfo";
42335 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
42336 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
42337 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
42338 case StructureType::eSubmitInfo: return "SubmitInfo";
42339 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
42340 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
42341 case StructureType::eBindSparseInfo: return "BindSparseInfo";
42342 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
42343 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
42344 case StructureType::eEventCreateInfo: return "EventCreateInfo";
42345 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
42346 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
42347 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
42348 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
42349 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
42350 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
42351 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
42352 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
42353 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
42354 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
42355 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
42356 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
42357 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
42358 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
42359 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
42360 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
42361 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
42362 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
42363 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
42364 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
42365 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
42366 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
42367 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
42368 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
42369 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
42370 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
42371 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
42372 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
42373 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
42374 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
42375 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
42376 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
42377 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
42378 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
42379 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
42380 case StructureType::eMemoryBarrier: return "MemoryBarrier";
42381 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
42382 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
42383 case StructureType::ePhysicalDeviceSubgroupProperties: return "PhysicalDeviceSubgroupProperties";
42384 case StructureType::eBindBufferMemoryInfo: return "BindBufferMemoryInfo";
42385 case StructureType::eBindImageMemoryInfo: return "BindImageMemoryInfo";
42386 case StructureType::ePhysicalDevice16BitStorageFeatures: return "PhysicalDevice16BitStorageFeatures";
42387 case StructureType::eMemoryDedicatedRequirements: return "MemoryDedicatedRequirements";
42388 case StructureType::eMemoryDedicatedAllocateInfo: return "MemoryDedicatedAllocateInfo";
42389 case StructureType::eMemoryAllocateFlagsInfo: return "MemoryAllocateFlagsInfo";
42390 case StructureType::eDeviceGroupRenderPassBeginInfo: return "DeviceGroupRenderPassBeginInfo";
42391 case StructureType::eDeviceGroupCommandBufferBeginInfo: return "DeviceGroupCommandBufferBeginInfo";
42392 case StructureType::eDeviceGroupSubmitInfo: return "DeviceGroupSubmitInfo";
42393 case StructureType::eDeviceGroupBindSparseInfo: return "DeviceGroupBindSparseInfo";
42394 case StructureType::eBindBufferMemoryDeviceGroupInfo: return "BindBufferMemoryDeviceGroupInfo";
42395 case StructureType::eBindImageMemoryDeviceGroupInfo: return "BindImageMemoryDeviceGroupInfo";
42396 case StructureType::ePhysicalDeviceGroupProperties: return "PhysicalDeviceGroupProperties";
42397 case StructureType::eDeviceGroupDeviceCreateInfo: return "DeviceGroupDeviceCreateInfo";
42398 case StructureType::eBufferMemoryRequirementsInfo2: return "BufferMemoryRequirementsInfo2";
42399 case StructureType::eImageMemoryRequirementsInfo2: return "ImageMemoryRequirementsInfo2";
42400 case StructureType::eImageSparseMemoryRequirementsInfo2: return "ImageSparseMemoryRequirementsInfo2";
42401 case StructureType::eMemoryRequirements2: return "MemoryRequirements2";
42402 case StructureType::eSparseImageMemoryRequirements2: return "SparseImageMemoryRequirements2";
42403 case StructureType::ePhysicalDeviceFeatures2: return "PhysicalDeviceFeatures2";
42404 case StructureType::ePhysicalDeviceProperties2: return "PhysicalDeviceProperties2";
42405 case StructureType::eFormatProperties2: return "FormatProperties2";
42406 case StructureType::eImageFormatProperties2: return "ImageFormatProperties2";
42407 case StructureType::ePhysicalDeviceImageFormatInfo2: return "PhysicalDeviceImageFormatInfo2";
42408 case StructureType::eQueueFamilyProperties2: return "QueueFamilyProperties2";
42409 case StructureType::ePhysicalDeviceMemoryProperties2: return "PhysicalDeviceMemoryProperties2";
42410 case StructureType::eSparseImageFormatProperties2: return "SparseImageFormatProperties2";
42411 case StructureType::ePhysicalDeviceSparseImageFormatInfo2: return "PhysicalDeviceSparseImageFormatInfo2";
42412 case StructureType::ePhysicalDevicePointClippingProperties: return "PhysicalDevicePointClippingProperties";
42413 case StructureType::eRenderPassInputAttachmentAspectCreateInfo: return "RenderPassInputAttachmentAspectCreateInfo";
42414 case StructureType::eImageViewUsageCreateInfo: return "ImageViewUsageCreateInfo";
42415 case StructureType::ePipelineTessellationDomainOriginStateCreateInfo: return "PipelineTessellationDomainOriginStateCreateInfo";
42416 case StructureType::eRenderPassMultiviewCreateInfo: return "RenderPassMultiviewCreateInfo";
42417 case StructureType::ePhysicalDeviceMultiviewFeatures: return "PhysicalDeviceMultiviewFeatures";
42418 case StructureType::ePhysicalDeviceMultiviewProperties: return "PhysicalDeviceMultiviewProperties";
42419 case StructureType::ePhysicalDeviceVariablePointerFeatures: return "PhysicalDeviceVariablePointerFeatures";
42420 case StructureType::eProtectedSubmitInfo: return "ProtectedSubmitInfo";
42421 case StructureType::ePhysicalDeviceProtectedMemoryFeatures: return "PhysicalDeviceProtectedMemoryFeatures";
42422 case StructureType::ePhysicalDeviceProtectedMemoryProperties: return "PhysicalDeviceProtectedMemoryProperties";
42423 case StructureType::eDeviceQueueInfo2: return "DeviceQueueInfo2";
42424 case StructureType::eSamplerYcbcrConversionCreateInfo: return "SamplerYcbcrConversionCreateInfo";
42425 case StructureType::eSamplerYcbcrConversionInfo: return "SamplerYcbcrConversionInfo";
42426 case StructureType::eBindImagePlaneMemoryInfo: return "BindImagePlaneMemoryInfo";
42427 case StructureType::eImagePlaneMemoryRequirementsInfo: return "ImagePlaneMemoryRequirementsInfo";
42428 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures: return "PhysicalDeviceSamplerYcbcrConversionFeatures";
42429 case StructureType::eSamplerYcbcrConversionImageFormatProperties: return "SamplerYcbcrConversionImageFormatProperties";
42430 case StructureType::eDescriptorUpdateTemplateCreateInfo: return "DescriptorUpdateTemplateCreateInfo";
42431 case StructureType::ePhysicalDeviceExternalImageFormatInfo: return "PhysicalDeviceExternalImageFormatInfo";
42432 case StructureType::eExternalImageFormatProperties: return "ExternalImageFormatProperties";
42433 case StructureType::ePhysicalDeviceExternalBufferInfo: return "PhysicalDeviceExternalBufferInfo";
42434 case StructureType::eExternalBufferProperties: return "ExternalBufferProperties";
42435 case StructureType::ePhysicalDeviceIdProperties: return "PhysicalDeviceIdProperties";
42436 case StructureType::eExternalMemoryBufferCreateInfo: return "ExternalMemoryBufferCreateInfo";
42437 case StructureType::eExternalMemoryImageCreateInfo: return "ExternalMemoryImageCreateInfo";
42438 case StructureType::eExportMemoryAllocateInfo: return "ExportMemoryAllocateInfo";
42439 case StructureType::ePhysicalDeviceExternalFenceInfo: return "PhysicalDeviceExternalFenceInfo";
42440 case StructureType::eExternalFenceProperties: return "ExternalFenceProperties";
42441 case StructureType::eExportFenceCreateInfo: return "ExportFenceCreateInfo";
42442 case StructureType::eExportSemaphoreCreateInfo: return "ExportSemaphoreCreateInfo";
42443 case StructureType::ePhysicalDeviceExternalSemaphoreInfo: return "PhysicalDeviceExternalSemaphoreInfo";
42444 case StructureType::eExternalSemaphoreProperties: return "ExternalSemaphoreProperties";
42445 case StructureType::ePhysicalDeviceMaintenance3Properties: return "PhysicalDeviceMaintenance3Properties";
42446 case StructureType::eDescriptorSetLayoutSupport: return "DescriptorSetLayoutSupport";
42447 case StructureType::ePhysicalDeviceShaderDrawParameterFeatures: return "PhysicalDeviceShaderDrawParameterFeatures";
42448 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
42449 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
42450 case StructureType::eDeviceGroupPresentCapabilitiesKHR: return "DeviceGroupPresentCapabilitiesKHR";
42451 case StructureType::eImageSwapchainCreateInfoKHR: return "ImageSwapchainCreateInfoKHR";
42452 case StructureType::eBindImageMemorySwapchainInfoKHR: return "BindImageMemorySwapchainInfoKHR";
42453 case StructureType::eAcquireNextImageInfoKHR: return "AcquireNextImageInfoKHR";
42454 case StructureType::eDeviceGroupPresentInfoKHR: return "DeviceGroupPresentInfoKHR";
42455 case StructureType::eDeviceGroupSwapchainCreateInfoKHR: return "DeviceGroupSwapchainCreateInfoKHR";
42456 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
42457 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
42458 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
42459 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
42460 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
42461 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
42462 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
42463 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
42464 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
42465 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
42466 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
42467 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
42468 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
42469 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
42470 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
42471 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
42472 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
42473 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
42474 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
42475 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
42476 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
42477 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
42478 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
42479 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
42480 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
42481 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
42482 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
42483 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
42484 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
42485 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
42486 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
42487 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
42488 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
42489 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
42490 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
42491 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
42492 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
42493 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
42494 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
42495 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
42496 case StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT: return "CommandBufferInheritanceConditionalRenderingInfoEXT";
42497 case StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT: return "PhysicalDeviceConditionalRenderingFeaturesEXT";
42498 case StructureType::eConditionalRenderingBeginInfoEXT: return "ConditionalRenderingBeginInfoEXT";
42499 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
42500 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
42501 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
42502 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
42503 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
42504 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
42505 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
42506 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
42507 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
42508 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
42509 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
42510 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
42511 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
42512 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
42513 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
42514 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
42515 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
42516 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
42517 case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT: return "PhysicalDeviceConservativeRasterizationPropertiesEXT";
42518 case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT: return "PipelineRasterizationConservativeStateCreateInfoEXT";
42519 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
42520 case StructureType::eAttachmentDescription2KHR: return "AttachmentDescription2KHR";
42521 case StructureType::eAttachmentReference2KHR: return "AttachmentReference2KHR";
42522 case StructureType::eSubpassDescription2KHR: return "SubpassDescription2KHR";
42523 case StructureType::eSubpassDependency2KHR: return "SubpassDependency2KHR";
42524 case StructureType::eRenderPassCreateInfo2KHR: return "RenderPassCreateInfo2KHR";
42525 case StructureType::eSubpassBeginInfoKHR: return "SubpassBeginInfoKHR";
42526 case StructureType::eSubpassEndInfoKHR: return "SubpassEndInfoKHR";
42527 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
42528 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
42529 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
42530 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
42531 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
42532 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
42533 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
42534 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
42535 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
42536 case StructureType::eDisplayProperties2KHR: return "DisplayProperties2KHR";
42537 case StructureType::eDisplayPlaneProperties2KHR: return "DisplayPlaneProperties2KHR";
42538 case StructureType::eDisplayModeProperties2KHR: return "DisplayModeProperties2KHR";
42539 case StructureType::eDisplayPlaneInfo2KHR: return "DisplayPlaneInfo2KHR";
42540 case StructureType::eDisplayPlaneCapabilities2KHR: return "DisplayPlaneCapabilities2KHR";
42541 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
42542 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
42543 case StructureType::eDebugUtilsObjectNameInfoEXT: return "DebugUtilsObjectNameInfoEXT";
42544 case StructureType::eDebugUtilsObjectTagInfoEXT: return "DebugUtilsObjectTagInfoEXT";
42545 case StructureType::eDebugUtilsLabelEXT: return "DebugUtilsLabelEXT";
42546 case StructureType::eDebugUtilsMessengerCallbackDataEXT: return "DebugUtilsMessengerCallbackDataEXT";
42547 case StructureType::eDebugUtilsMessengerCreateInfoEXT: return "DebugUtilsMessengerCreateInfoEXT";
42548 case StructureType::eAndroidHardwareBufferUsageANDROID: return "AndroidHardwareBufferUsageANDROID";
42549 case StructureType::eAndroidHardwareBufferPropertiesANDROID: return "AndroidHardwareBufferPropertiesANDROID";
42550 case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID: return "AndroidHardwareBufferFormatPropertiesANDROID";
42551 case StructureType::eImportAndroidHardwareBufferInfoANDROID: return "ImportAndroidHardwareBufferInfoANDROID";
42552 case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID: return "MemoryGetAndroidHardwareBufferInfoANDROID";
42553 case StructureType::eExternalFormatANDROID: return "ExternalFormatANDROID";
42554 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
42555 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
42556 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
42557 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
42558 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
42559 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
42560 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
42561 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
42562 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
42563 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
42564 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
42565 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
42566 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
42567 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
42568 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
42569 case StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT: return "DescriptorSetLayoutBindingFlagsCreateInfoEXT";
42570 case StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT: return "PhysicalDeviceDescriptorIndexingFeaturesEXT";
42571 case StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT: return "PhysicalDeviceDescriptorIndexingPropertiesEXT";
42572 case StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT: return "DescriptorSetVariableDescriptorCountAllocateInfoEXT";
42573 case StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT: return "DescriptorSetVariableDescriptorCountLayoutSupportEXT";
42574 case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT: return "DeviceQueueGlobalPriorityCreateInfoEXT";
42575 case StructureType::ePhysicalDevice8BitStorageFeaturesKHR: return "PhysicalDevice8BitStorageFeaturesKHR";
42576 case StructureType::eImportMemoryHostPointerInfoEXT: return "ImportMemoryHostPointerInfoEXT";
42577 case StructureType::eMemoryHostPointerPropertiesEXT: return "MemoryHostPointerPropertiesEXT";
42578 case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT: return "PhysicalDeviceExternalMemoryHostPropertiesEXT";
42579 case StructureType::ePhysicalDeviceShaderCorePropertiesAMD: return "PhysicalDeviceShaderCorePropertiesAMD";
42580 case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT: return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT";
42581 case StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT: return "PipelineVertexInputDivisorStateCreateInfoEXT";
42582 case StructureType::eCheckpointDataNV: return "CheckpointDataNV";
42583 case StructureType::eQueueFamilyCheckpointPropertiesNV: return "QueueFamilyCheckpointPropertiesNV";
42584 default: return "invalid";
42585 }
42586 }
42587
42588 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
42589 {
42590 switch (value)
42591 {
42592 case SubpassContents::eInline: return "Inline";
42593 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
42594 default: return "invalid";
42595 }
42596 }
42597
42598 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
42599 {
42600 switch (value)
42601 {
42602 case DynamicState::eViewport: return "Viewport";
42603 case DynamicState::eScissor: return "Scissor";
42604 case DynamicState::eLineWidth: return "LineWidth";
42605 case DynamicState::eDepthBias: return "DepthBias";
42606 case DynamicState::eBlendConstants: return "BlendConstants";
42607 case DynamicState::eDepthBounds: return "DepthBounds";
42608 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
42609 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
42610 case DynamicState::eStencilReference: return "StencilReference";
42611 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
42612 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
42613 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
42614 default: return "invalid";
42615 }
42616 }
42617
42618 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateType value)
42619 {
42620 switch (value)
42621 {
42622 case DescriptorUpdateTemplateType::eDescriptorSet: return "DescriptorSet";
42623 case DescriptorUpdateTemplateType::ePushDescriptorsKHR: return "PushDescriptorsKHR";
42624 default: return "invalid";
42625 }
42626 }
42627
42628 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
42629 {
42630 switch (value)
42631 {
42632 case ObjectType::eUnknown: return "Unknown";
42633 case ObjectType::eInstance: return "Instance";
42634 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
42635 case ObjectType::eDevice: return "Device";
42636 case ObjectType::eQueue: return "Queue";
42637 case ObjectType::eSemaphore: return "Semaphore";
42638 case ObjectType::eCommandBuffer: return "CommandBuffer";
42639 case ObjectType::eFence: return "Fence";
42640 case ObjectType::eDeviceMemory: return "DeviceMemory";
42641 case ObjectType::eBuffer: return "Buffer";
42642 case ObjectType::eImage: return "Image";
42643 case ObjectType::eEvent: return "Event";
42644 case ObjectType::eQueryPool: return "QueryPool";
42645 case ObjectType::eBufferView: return "BufferView";
42646 case ObjectType::eImageView: return "ImageView";
42647 case ObjectType::eShaderModule: return "ShaderModule";
42648 case ObjectType::ePipelineCache: return "PipelineCache";
42649 case ObjectType::ePipelineLayout: return "PipelineLayout";
42650 case ObjectType::eRenderPass: return "RenderPass";
42651 case ObjectType::ePipeline: return "Pipeline";
42652 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
42653 case ObjectType::eSampler: return "Sampler";
42654 case ObjectType::eDescriptorPool: return "DescriptorPool";
42655 case ObjectType::eDescriptorSet: return "DescriptorSet";
42656 case ObjectType::eFramebuffer: return "Framebuffer";
42657 case ObjectType::eCommandPool: return "CommandPool";
42658 case ObjectType::eSamplerYcbcrConversion: return "SamplerYcbcrConversion";
42659 case ObjectType::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate";
42660 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
42661 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
42662 case ObjectType::eDisplayKHR: return "DisplayKHR";
42663 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
42664 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
42665 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
42666 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
42667 case ObjectType::eDebugUtilsMessengerEXT: return "DebugUtilsMessengerEXT";
42668 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
42669 default: return "invalid";
42670 }
42671 }
42672
42673 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
42674 {
42675 switch (value)
42676 {
42677 case QueueFlagBits::eGraphics: return "Graphics";
42678 case QueueFlagBits::eCompute: return "Compute";
42679 case QueueFlagBits::eTransfer: return "Transfer";
42680 case QueueFlagBits::eSparseBinding: return "SparseBinding";
42681 case QueueFlagBits::eProtected: return "Protected";
42682 default: return "invalid";
42683 }
42684 }
42685
42686 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
42687 {
42688 if (!value) return "{}";
42689 std::string result;
42690 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
42691 if (value & QueueFlagBits::eCompute) result += "Compute | ";
42692 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
42693 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
42694 if (value & QueueFlagBits::eProtected) result += "Protected | ";
42695 return "{" + result.substr(0, result.size() - 3) + "}";
42696 }
42697
42698 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits value)
42699 {
42700 switch (value)
42701 {
42702 case DeviceQueueCreateFlagBits::eProtected: return "Protected";
42703 default: return "invalid";
42704 }
42705 }
42706
42707 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags value)
42708 {
42709 if (!value) return "{}";
42710 std::string result;
42711 if (value & DeviceQueueCreateFlagBits::eProtected) result += "Protected | ";
42712 return "{" + result.substr(0, result.size() - 3) + "}";
42713 }
42714
42715 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
42716 {
42717 switch (value)
42718 {
42719 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
42720 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
42721 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
42722 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
42723 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
42724 case MemoryPropertyFlagBits::eProtected: return "Protected";
42725 default: return "invalid";
42726 }
42727 }
42728
42729 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
42730 {
42731 if (!value) return "{}";
42732 std::string result;
42733 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
42734 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
42735 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
42736 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
42737 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
42738 if (value & MemoryPropertyFlagBits::eProtected) result += "Protected | ";
42739 return "{" + result.substr(0, result.size() - 3) + "}";
42740 }
42741
42742 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
42743 {
42744 switch (value)
42745 {
42746 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
42747 case MemoryHeapFlagBits::eMultiInstance: return "MultiInstance";
42748 default: return "invalid";
42749 }
42750 }
42751
42752 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
42753 {
42754 if (!value) return "{}";
42755 std::string result;
42756 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
42757 if (value & MemoryHeapFlagBits::eMultiInstance) result += "MultiInstance | ";
42758 return "{" + result.substr(0, result.size() - 3) + "}";
42759 }
42760
42761 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
42762 {
42763 switch (value)
42764 {
42765 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
42766 case AccessFlagBits::eIndexRead: return "IndexRead";
42767 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
42768 case AccessFlagBits::eUniformRead: return "UniformRead";
42769 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
42770 case AccessFlagBits::eShaderRead: return "ShaderRead";
42771 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
42772 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
42773 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
42774 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
42775 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
42776 case AccessFlagBits::eTransferRead: return "TransferRead";
42777 case AccessFlagBits::eTransferWrite: return "TransferWrite";
42778 case AccessFlagBits::eHostRead: return "HostRead";
42779 case AccessFlagBits::eHostWrite: return "HostWrite";
42780 case AccessFlagBits::eMemoryRead: return "MemoryRead";
42781 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
42782 case AccessFlagBits::eConditionalRenderingReadEXT: return "ConditionalRenderingReadEXT";
42783 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
42784 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
42785 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
42786 default: return "invalid";
42787 }
42788 }
42789
42790 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
42791 {
42792 if (!value) return "{}";
42793 std::string result;
42794 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
42795 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
42796 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
42797 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
42798 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
42799 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
42800 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
42801 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
42802 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
42803 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
42804 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
42805 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
42806 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
42807 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
42808 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
42809 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
42810 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
42811 if (value & AccessFlagBits::eConditionalRenderingReadEXT) result += "ConditionalRenderingReadEXT | ";
42812 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
42813 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
42814 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
42815 return "{" + result.substr(0, result.size() - 3) + "}";
42816 }
42817
42818 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
42819 {
42820 switch (value)
42821 {
42822 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
42823 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
42824 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
42825 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
42826 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
42827 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
42828 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
42829 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
42830 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
42831 case BufferUsageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT";
42832 default: return "invalid";
42833 }
42834 }
42835
42836 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
42837 {
42838 if (!value) return "{}";
42839 std::string result;
42840 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
42841 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
42842 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
42843 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
42844 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
42845 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
42846 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
42847 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
42848 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
42849 if (value & BufferUsageFlagBits::eConditionalRenderingEXT) result += "ConditionalRenderingEXT | ";
42850 return "{" + result.substr(0, result.size() - 3) + "}";
42851 }
42852
42853 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
42854 {
42855 switch (value)
42856 {
42857 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
42858 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
42859 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
42860 case BufferCreateFlagBits::eProtected: return "Protected";
42861 default: return "invalid";
42862 }
42863 }
42864
42865 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
42866 {
42867 if (!value) return "{}";
42868 std::string result;
42869 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
42870 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
42871 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
42872 if (value & BufferCreateFlagBits::eProtected) result += "Protected | ";
42873 return "{" + result.substr(0, result.size() - 3) + "}";
42874 }
42875
42876 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
42877 {
42878 switch (value)
42879 {
42880 case ShaderStageFlagBits::eVertex: return "Vertex";
42881 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
42882 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
42883 case ShaderStageFlagBits::eGeometry: return "Geometry";
42884 case ShaderStageFlagBits::eFragment: return "Fragment";
42885 case ShaderStageFlagBits::eCompute: return "Compute";
42886 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
42887 case ShaderStageFlagBits::eAll: return "All";
42888 default: return "invalid";
42889 }
42890 }
42891
42892 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
42893 {
42894 if (!value) return "{}";
42895 std::string result;
42896 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
42897 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
42898 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
42899 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
42900 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
42901 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
42902 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
42903 if (value & ShaderStageFlagBits::eAll) result += "All | ";
42904 return "{" + result.substr(0, result.size() - 3) + "}";
42905 }
42906
42907 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
42908 {
42909 switch (value)
42910 {
42911 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
42912 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
42913 case ImageUsageFlagBits::eSampled: return "Sampled";
42914 case ImageUsageFlagBits::eStorage: return "Storage";
42915 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
42916 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
42917 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
42918 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
42919 default: return "invalid";
42920 }
42921 }
42922
42923 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
42924 {
42925 if (!value) return "{}";
42926 std::string result;
42927 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
42928 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
42929 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
42930 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
42931 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
42932 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
42933 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
42934 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
42935 return "{" + result.substr(0, result.size() - 3) + "}";
42936 }
42937
42938 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
42939 {
42940 switch (value)
42941 {
42942 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
42943 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
42944 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
42945 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
42946 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
42947 case ImageCreateFlagBits::eAlias: return "Alias";
42948 case ImageCreateFlagBits::eSplitInstanceBindRegions: return "SplitInstanceBindRegions";
42949 case ImageCreateFlagBits::e2DArrayCompatible: return "2DArrayCompatible";
42950 case ImageCreateFlagBits::eBlockTexelViewCompatible: return "BlockTexelViewCompatible";
42951 case ImageCreateFlagBits::eExtendedUsage: return "ExtendedUsage";
42952 case ImageCreateFlagBits::eProtected: return "Protected";
42953 case ImageCreateFlagBits::eDisjoint: return "Disjoint";
42954 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
42955 default: return "invalid";
42956 }
42957 }
42958
42959 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
42960 {
42961 if (!value) return "{}";
42962 std::string result;
42963 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
42964 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
42965 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
42966 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
42967 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
42968 if (value & ImageCreateFlagBits::eAlias) result += "Alias | ";
42969 if (value & ImageCreateFlagBits::eSplitInstanceBindRegions) result += "SplitInstanceBindRegions | ";
42970 if (value & ImageCreateFlagBits::e2DArrayCompatible) result += "2DArrayCompatible | ";
42971 if (value & ImageCreateFlagBits::eBlockTexelViewCompatible) result += "BlockTexelViewCompatible | ";
42972 if (value & ImageCreateFlagBits::eExtendedUsage) result += "ExtendedUsage | ";
42973 if (value & ImageCreateFlagBits::eProtected) result += "Protected | ";
42974 if (value & ImageCreateFlagBits::eDisjoint) result += "Disjoint | ";
42975 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
42976 return "{" + result.substr(0, result.size() - 3) + "}";
42977 }
42978
42979 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
42980 {
42981 switch (value)
42982 {
42983 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
42984 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
42985 case PipelineCreateFlagBits::eDerivative: return "Derivative";
42986 case PipelineCreateFlagBits::eViewIndexFromDeviceIndex: return "ViewIndexFromDeviceIndex";
42987 case PipelineCreateFlagBits::eDispatchBase: return "DispatchBase";
42988 default: return "invalid";
42989 }
42990 }
42991
42992 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
42993 {
42994 if (!value) return "{}";
42995 std::string result;
42996 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
42997 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
42998 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
42999 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex) result += "ViewIndexFromDeviceIndex | ";
43000 if (value & PipelineCreateFlagBits::eDispatchBase) result += "DispatchBase | ";
43001 return "{" + result.substr(0, result.size() - 3) + "}";
43002 }
43003
43004 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
43005 {
43006 switch (value)
43007 {
43008 case ColorComponentFlagBits::eR: return "R";
43009 case ColorComponentFlagBits::eG: return "G";
43010 case ColorComponentFlagBits::eB: return "B";
43011 case ColorComponentFlagBits::eA: return "A";
43012 default: return "invalid";
43013 }
43014 }
43015
43016 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
43017 {
43018 if (!value) return "{}";
43019 std::string result;
43020 if (value & ColorComponentFlagBits::eR) result += "R | ";
43021 if (value & ColorComponentFlagBits::eG) result += "G | ";
43022 if (value & ColorComponentFlagBits::eB) result += "B | ";
43023 if (value & ColorComponentFlagBits::eA) result += "A | ";
43024 return "{" + result.substr(0, result.size() - 3) + "}";
43025 }
43026
43027 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
43028 {
43029 switch (value)
43030 {
43031 case FenceCreateFlagBits::eSignaled: return "Signaled";
43032 default: return "invalid";
43033 }
43034 }
43035
43036 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
43037 {
43038 if (!value) return "{}";
43039 std::string result;
43040 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
43041 return "{" + result.substr(0, result.size() - 3) + "}";
43042 }
43043
43044 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
43045 {
43046 switch (value)
43047 {
43048 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
43049 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
43050 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
43051 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
43052 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
43053 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
43054 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
43055 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
43056 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
43057 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
43058 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
43059 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
43060 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
43061 case FormatFeatureFlagBits::eTransferSrc: return "TransferSrc";
43062 case FormatFeatureFlagBits::eTransferDst: return "TransferDst";
43063 case FormatFeatureFlagBits::eMidpointChromaSamples: return "MidpointChromaSamples";
43064 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter: return "SampledImageYcbcrConversionLinearFilter";
43065 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter: return "SampledImageYcbcrConversionSeparateReconstructionFilter";
43066 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit: return "SampledImageYcbcrConversionChromaReconstructionExplicit";
43067 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable";
43068 case FormatFeatureFlagBits::eDisjoint: return "Disjoint";
43069 case FormatFeatureFlagBits::eCositedChromaSamples: return "CositedChromaSamples";
43070 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
43071 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
43072 default: return "invalid";
43073 }
43074 }
43075
43076 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
43077 {
43078 if (!value) return "{}";
43079 std::string result;
43080 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
43081 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
43082 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
43083 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
43084 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
43085 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
43086 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
43087 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
43088 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
43089 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
43090 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
43091 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
43092 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
43093 if (value & FormatFeatureFlagBits::eTransferSrc) result += "TransferSrc | ";
43094 if (value & FormatFeatureFlagBits::eTransferDst) result += "TransferDst | ";
43095 if (value & FormatFeatureFlagBits::eMidpointChromaSamples) result += "MidpointChromaSamples | ";
43096 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter) result += "SampledImageYcbcrConversionLinearFilter | ";
43097 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter) result += "SampledImageYcbcrConversionSeparateReconstructionFilter | ";
43098 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit) result += "SampledImageYcbcrConversionChromaReconstructionExplicit | ";
43099 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceable | ";
43100 if (value & FormatFeatureFlagBits::eDisjoint) result += "Disjoint | ";
43101 if (value & FormatFeatureFlagBits::eCositedChromaSamples) result += "CositedChromaSamples | ";
43102 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
43103 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
43104 return "{" + result.substr(0, result.size() - 3) + "}";
43105 }
43106
43107 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
43108 {
43109 switch (value)
43110 {
43111 case QueryControlFlagBits::ePrecise: return "Precise";
43112 default: return "invalid";
43113 }
43114 }
43115
43116 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
43117 {
43118 if (!value) return "{}";
43119 std::string result;
43120 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
43121 return "{" + result.substr(0, result.size() - 3) + "}";
43122 }
43123
43124 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
43125 {
43126 switch (value)
43127 {
43128 case QueryResultFlagBits::e64: return "64";
43129 case QueryResultFlagBits::eWait: return "Wait";
43130 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
43131 case QueryResultFlagBits::ePartial: return "Partial";
43132 default: return "invalid";
43133 }
43134 }
43135
43136 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
43137 {
43138 if (!value) return "{}";
43139 std::string result;
43140 if (value & QueryResultFlagBits::e64) result += "64 | ";
43141 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
43142 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
43143 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
43144 return "{" + result.substr(0, result.size() - 3) + "}";
43145 }
43146
43147 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
43148 {
43149 switch (value)
43150 {
43151 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
43152 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
43153 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
43154 default: return "invalid";
43155 }
43156 }
43157
43158 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
43159 {
43160 if (!value) return "{}";
43161 std::string result;
43162 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
43163 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
43164 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
43165 return "{" + result.substr(0, result.size() - 3) + "}";
43166 }
43167
43168 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
43169 {
43170 switch (value)
43171 {
43172 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
43173 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
43174 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
43175 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
43176 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
43177 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
43178 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
43179 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
43180 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
43181 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
43182 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
43183 default: return "invalid";
43184 }
43185 }
43186
43187 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
43188 {
43189 if (!value) return "{}";
43190 std::string result;
43191 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
43192 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
43193 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
43194 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
43195 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
43196 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
43197 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
43198 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
43199 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
43200 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
43201 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
43202 return "{" + result.substr(0, result.size() - 3) + "}";
43203 }
43204
43205 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
43206 {
43207 switch (value)
43208 {
43209 case ImageAspectFlagBits::eColor: return "Color";
43210 case ImageAspectFlagBits::eDepth: return "Depth";
43211 case ImageAspectFlagBits::eStencil: return "Stencil";
43212 case ImageAspectFlagBits::eMetadata: return "Metadata";
43213 case ImageAspectFlagBits::ePlane0: return "Plane0";
43214 case ImageAspectFlagBits::ePlane1: return "Plane1";
43215 case ImageAspectFlagBits::ePlane2: return "Plane2";
43216 default: return "invalid";
43217 }
43218 }
43219
43220 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
43221 {
43222 if (!value) return "{}";
43223 std::string result;
43224 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
43225 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
43226 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
43227 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
43228 if (value & ImageAspectFlagBits::ePlane0) result += "Plane0 | ";
43229 if (value & ImageAspectFlagBits::ePlane1) result += "Plane1 | ";
43230 if (value & ImageAspectFlagBits::ePlane2) result += "Plane2 | ";
43231 return "{" + result.substr(0, result.size() - 3) + "}";
43232 }
43233
43234 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
43235 {
43236 switch (value)
43237 {
43238 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
43239 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
43240 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
43241 default: return "invalid";
43242 }
43243 }
43244
43245 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
43246 {
43247 if (!value) return "{}";
43248 std::string result;
43249 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
43250 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
43251 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
43252 return "{" + result.substr(0, result.size() - 3) + "}";
43253 }
43254
43255 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
43256 {
43257 switch (value)
43258 {
43259 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
43260 default: return "invalid";
43261 }
43262 }
43263
43264 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
43265 {
43266 if (!value) return "{}";
43267 std::string result;
43268 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
43269 return "{" + result.substr(0, result.size() - 3) + "}";
43270 }
43271
43272 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
43273 {
43274 switch (value)
43275 {
43276 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
43277 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
43278 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
43279 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
43280 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
43281 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
43282 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
43283 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
43284 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
43285 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
43286 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
43287 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
43288 case PipelineStageFlagBits::eTransfer: return "Transfer";
43289 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
43290 case PipelineStageFlagBits::eHost: return "Host";
43291 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
43292 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
43293 case PipelineStageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT";
43294 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
43295 default: return "invalid";
43296 }
43297 }
43298
43299 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
43300 {
43301 if (!value) return "{}";
43302 std::string result;
43303 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
43304 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
43305 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
43306 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
43307 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
43308 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
43309 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
43310 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
43311 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
43312 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
43313 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
43314 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
43315 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
43316 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
43317 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
43318 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
43319 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
43320 if (value & PipelineStageFlagBits::eConditionalRenderingEXT) result += "ConditionalRenderingEXT | ";
43321 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
43322 return "{" + result.substr(0, result.size() - 3) + "}";
43323 }
43324
43325 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
43326 {
43327 switch (value)
43328 {
43329 case CommandPoolCreateFlagBits::eTransient: return "Transient";
43330 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
43331 case CommandPoolCreateFlagBits::eProtected: return "Protected";
43332 default: return "invalid";
43333 }
43334 }
43335
43336 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
43337 {
43338 if (!value) return "{}";
43339 std::string result;
43340 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
43341 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
43342 if (value & CommandPoolCreateFlagBits::eProtected) result += "Protected | ";
43343 return "{" + result.substr(0, result.size() - 3) + "}";
43344 }
43345
43346 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
43347 {
43348 switch (value)
43349 {
43350 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
43351 default: return "invalid";
43352 }
43353 }
43354
43355 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
43356 {
43357 if (!value) return "{}";
43358 std::string result;
43359 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
43360 return "{" + result.substr(0, result.size() - 3) + "}";
43361 }
43362
43363 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
43364 {
43365 switch (value)
43366 {
43367 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
43368 default: return "invalid";
43369 }
43370 }
43371
43372 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
43373 {
43374 if (!value) return "{}";
43375 std::string result;
43376 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
43377 return "{" + result.substr(0, result.size() - 3) + "}";
43378 }
43379
43380 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
43381 {
43382 switch (value)
43383 {
43384 case SampleCountFlagBits::e1: return "1";
43385 case SampleCountFlagBits::e2: return "2";
43386 case SampleCountFlagBits::e4: return "4";
43387 case SampleCountFlagBits::e8: return "8";
43388 case SampleCountFlagBits::e16: return "16";
43389 case SampleCountFlagBits::e32: return "32";
43390 case SampleCountFlagBits::e64: return "64";
43391 default: return "invalid";
43392 }
43393 }
43394
43395 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
43396 {
43397 if (!value) return "{}";
43398 std::string result;
43399 if (value & SampleCountFlagBits::e1) result += "1 | ";
43400 if (value & SampleCountFlagBits::e2) result += "2 | ";
43401 if (value & SampleCountFlagBits::e4) result += "4 | ";
43402 if (value & SampleCountFlagBits::e8) result += "8 | ";
43403 if (value & SampleCountFlagBits::e16) result += "16 | ";
43404 if (value & SampleCountFlagBits::e32) result += "32 | ";
43405 if (value & SampleCountFlagBits::e64) result += "64 | ";
43406 return "{" + result.substr(0, result.size() - 3) + "}";
43407 }
43408
43409 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
43410 {
43411 switch (value)
43412 {
43413 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
43414 default: return "invalid";
43415 }
43416 }
43417
43418 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
43419 {
43420 if (!value) return "{}";
43421 std::string result;
43422 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
43423 return "{" + result.substr(0, result.size() - 3) + "}";
43424 }
43425
43426 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
43427 {
43428 switch (value)
43429 {
43430 case StencilFaceFlagBits::eFront: return "Front";
43431 case StencilFaceFlagBits::eBack: return "Back";
43432 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
43433 default: return "invalid";
43434 }
43435 }
43436
43437 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
43438 {
43439 if (!value) return "{}";
43440 std::string result;
43441 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
43442 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
43443 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
43444 return "{" + result.substr(0, result.size() - 3) + "}";
43445 }
43446
43447 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
43448 {
43449 switch (value)
43450 {
43451 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
43452 case DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT: return "UpdateAfterBindEXT";
43453 default: return "invalid";
43454 }
43455 }
43456
43457 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
43458 {
43459 if (!value) return "{}";
43460 std::string result;
43461 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
43462 if (value & DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT) result += "UpdateAfterBindEXT | ";
43463 return "{" + result.substr(0, result.size() - 3) + "}";
43464 }
43465
43466 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
43467 {
43468 switch (value)
43469 {
43470 case DependencyFlagBits::eByRegion: return "ByRegion";
43471 case DependencyFlagBits::eDeviceGroup: return "DeviceGroup";
43472 case DependencyFlagBits::eViewLocal: return "ViewLocal";
43473 default: return "invalid";
43474 }
43475 }
43476
43477 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
43478 {
43479 if (!value) return "{}";
43480 std::string result;
43481 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
43482 if (value & DependencyFlagBits::eDeviceGroup) result += "DeviceGroup | ";
43483 if (value & DependencyFlagBits::eViewLocal) result += "ViewLocal | ";
43484 return "{" + result.substr(0, result.size() - 3) + "}";
43485 }
43486
43487 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
43488 {
43489 switch (value)
43490 {
43491 case PresentModeKHR::eImmediate: return "Immediate";
43492 case PresentModeKHR::eMailbox: return "Mailbox";
43493 case PresentModeKHR::eFifo: return "Fifo";
43494 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
43495 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
43496 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
43497 default: return "invalid";
43498 }
43499 }
43500
43501 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
43502 {
43503 switch (value)
43504 {
43505 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
43506 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
43507 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
43508 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
43509 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
43510 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
43511 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
43512 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
43513 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
43514 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
43515 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
43516 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
43517 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
43518 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
43519 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
43520 default: return "invalid";
43521 }
43522 }
43523
43524 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
43525 {
43526 switch (value)
43527 {
43528 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
43529 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
43530 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
43531 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
43532 default: return "invalid";
43533 }
43534 }
43535
43536 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
43537 {
43538 if (!value) return "{}";
43539 std::string result;
43540 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
43541 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
43542 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
43543 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
43544 return "{" + result.substr(0, result.size() - 3) + "}";
43545 }
43546
43547 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
43548 {
43549 switch (value)
43550 {
43551 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
43552 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
43553 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
43554 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
43555 default: return "invalid";
43556 }
43557 }
43558
43559 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
43560 {
43561 if (!value) return "{}";
43562 std::string result;
43563 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
43564 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
43565 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
43566 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
43567 return "{" + result.substr(0, result.size() - 3) + "}";
43568 }
43569
43570 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
43571 {
43572 switch (value)
43573 {
43574 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
43575 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
43576 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
43577 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
43578 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
43579 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
43580 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
43581 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
43582 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
43583 default: return "invalid";
43584 }
43585 }
43586
43587 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
43588 {
43589 if (!value) return "{}";
43590 std::string result;
43591 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
43592 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
43593 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
43594 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
43595 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
43596 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
43597 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
43598 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
43599 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
43600 return "{" + result.substr(0, result.size() - 3) + "}";
43601 }
43602
43603 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
43604 {
43605 switch (value)
43606 {
43607 case DebugReportFlagBitsEXT::eInformation: return "Information";
43608 case DebugReportFlagBitsEXT::eWarning: return "Warning";
43609 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
43610 case DebugReportFlagBitsEXT::eError: return "Error";
43611 case DebugReportFlagBitsEXT::eDebug: return "Debug";
43612 default: return "invalid";
43613 }
43614 }
43615
43616 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
43617 {
43618 if (!value) return "{}";
43619 std::string result;
43620 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
43621 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
43622 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
43623 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
43624 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
43625 return "{" + result.substr(0, result.size() - 3) + "}";
43626 }
43627
43628 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
43629 {
43630 switch (value)
43631 {
43632 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
43633 case DebugReportObjectTypeEXT::eInstance: return "Instance";
43634 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
43635 case DebugReportObjectTypeEXT::eDevice: return "Device";
43636 case DebugReportObjectTypeEXT::eQueue: return "Queue";
43637 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
43638 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
43639 case DebugReportObjectTypeEXT::eFence: return "Fence";
43640 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
43641 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
43642 case DebugReportObjectTypeEXT::eImage: return "Image";
43643 case DebugReportObjectTypeEXT::eEvent: return "Event";
43644 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
43645 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
43646 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
43647 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
43648 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
43649 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
43650 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
43651 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
43652 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
43653 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
43654 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
43655 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
43656 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
43657 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
43658 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
43659 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
43660 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
43661 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
43662 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
43663 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
43664 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
43665 case DebugReportObjectTypeEXT::eValidationCacheExt: return "ValidationCacheExt";
43666 case DebugReportObjectTypeEXT::eSamplerYcbcrConversion: return "SamplerYcbcrConversion";
43667 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate";
43668 default: return "invalid";
43669 }
43670 }
43671
43672 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
43673 {
43674 switch (value)
43675 {
43676 case RasterizationOrderAMD::eStrict: return "Strict";
43677 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
43678 default: return "invalid";
43679 }
43680 }
43681
43682 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
43683 {
43684 switch (value)
43685 {
43686 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
43687 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
43688 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
43689 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
43690 default: return "invalid";
43691 }
43692 }
43693
43694 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
43695 {
43696 if (!value) return "{}";
43697 std::string result;
43698 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
43699 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
43700 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
43701 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
43702 return "{" + result.substr(0, result.size() - 3) + "}";
43703 }
43704
43705 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
43706 {
43707 switch (value)
43708 {
43709 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
43710 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
43711 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
43712 default: return "invalid";
43713 }
43714 }
43715
43716 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
43717 {
43718 if (!value) return "{}";
43719 std::string result;
43720 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
43721 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
43722 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
43723 return "{" + result.substr(0, result.size() - 3) + "}";
43724 }
43725
43726 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
43727 {
43728 switch (value)
43729 {
43730 case ValidationCheckEXT::eAll: return "All";
43731 case ValidationCheckEXT::eShaders: return "Shaders";
43732 default: return "invalid";
43733 }
43734 }
43735
43736 VULKAN_HPP_INLINE std::string to_string(SubgroupFeatureFlagBits value)
43737 {
43738 switch (value)
43739 {
43740 case SubgroupFeatureFlagBits::eBasic: return "Basic";
43741 case SubgroupFeatureFlagBits::eVote: return "Vote";
43742 case SubgroupFeatureFlagBits::eArithmetic: return "Arithmetic";
43743 case SubgroupFeatureFlagBits::eBallot: return "Ballot";
43744 case SubgroupFeatureFlagBits::eShuffle: return "Shuffle";
43745 case SubgroupFeatureFlagBits::eShuffleRelative: return "ShuffleRelative";
43746 case SubgroupFeatureFlagBits::eClustered: return "Clustered";
43747 case SubgroupFeatureFlagBits::eQuad: return "Quad";
43748 case SubgroupFeatureFlagBits::ePartitionedNV: return "PartitionedNV";
43749 default: return "invalid";
43750 }
43751 }
43752
43753 VULKAN_HPP_INLINE std::string to_string(SubgroupFeatureFlags value)
43754 {
43755 if (!value) return "{}";
43756 std::string result;
43757 if (value & SubgroupFeatureFlagBits::eBasic) result += "Basic | ";
43758 if (value & SubgroupFeatureFlagBits::eVote) result += "Vote | ";
43759 if (value & SubgroupFeatureFlagBits::eArithmetic) result += "Arithmetic | ";
43760 if (value & SubgroupFeatureFlagBits::eBallot) result += "Ballot | ";
43761 if (value & SubgroupFeatureFlagBits::eShuffle) result += "Shuffle | ";
43762 if (value & SubgroupFeatureFlagBits::eShuffleRelative) result += "ShuffleRelative | ";
43763 if (value & SubgroupFeatureFlagBits::eClustered) result += "Clustered | ";
43764 if (value & SubgroupFeatureFlagBits::eQuad) result += "Quad | ";
43765 if (value & SubgroupFeatureFlagBits::ePartitionedNV) result += "PartitionedNV | ";
43766 return "{" + result.substr(0, result.size() - 3) + "}";
43767 }
43768
43769 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
43770 {
43771 switch (value)
43772 {
43773 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
43774 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
43775 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
43776 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
43777 default: return "invalid";
43778 }
43779 }
43780
43781 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
43782 {
43783 if (!value) return "{}";
43784 std::string result;
43785 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
43786 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
43787 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
43788 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
43789 return "{" + result.substr(0, result.size() - 3) + "}";
43790 }
43791
43792 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
43793 {
43794 switch (value)
43795 {
43796 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
43797 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
43798 default: return "invalid";
43799 }
43800 }
43801
43802 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
43803 {
43804 if (!value) return "{}";
43805 std::string result;
43806 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
43807 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
43808 return "{" + result.substr(0, result.size() - 3) + "}";
43809 }
43810
43811 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
43812 {
43813 switch (value)
43814 {
43815 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
43816 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
43817 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
43818 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
43819 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
43820 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
43821 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
43822 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
43823 default: return "invalid";
43824 }
43825 }
43826
43827 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
43828 {
43829 switch (value)
43830 {
43831 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
43832 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
43833 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
43834 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
43835 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
43836 default: return "invalid";
43837 }
43838 }
43839
43840 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
43841 {
43842 switch (value)
43843 {
43844 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
43845 case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT: return "UpdateAfterBindPoolEXT";
43846 default: return "invalid";
43847 }
43848 }
43849
43850 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
43851 {
43852 if (!value) return "{}";
43853 std::string result;
43854 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
43855 if (value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT) result += "UpdateAfterBindPoolEXT | ";
43856 return "{" + result.substr(0, result.size() - 3) + "}";
43857 }
43858
43859 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBits value)
43860 {
43861 switch (value)
43862 {
43863 case ExternalMemoryHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
43864 case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
43865 case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
43866 case ExternalMemoryHandleTypeFlagBits::eD3D11Texture: return "D3D11Texture";
43867 case ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt: return "D3D11TextureKmt";
43868 case ExternalMemoryHandleTypeFlagBits::eD3D12Heap: return "D3D12Heap";
43869 case ExternalMemoryHandleTypeFlagBits::eD3D12Resource: return "D3D12Resource";
43870 case ExternalMemoryHandleTypeFlagBits::eDmaBufEXT: return "DmaBufEXT";
43871 case ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID: return "AndroidHardwareBufferANDROID";
43872 case ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT: return "HostAllocationEXT";
43873 case ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT";
43874 default: return "invalid";
43875 }
43876 }
43877
43878 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlags value)
43879 {
43880 if (!value) return "{}";
43881 std::string result;
43882 if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
43883 if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
43884 if (value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
43885 if (value & ExternalMemoryHandleTypeFlagBits::eD3D11Texture) result += "D3D11Texture | ";
43886 if (value & ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
43887 if (value & ExternalMemoryHandleTypeFlagBits::eD3D12Heap) result += "D3D12Heap | ";
43888 if (value & ExternalMemoryHandleTypeFlagBits::eD3D12Resource) result += "D3D12Resource | ";
43889 if (value & ExternalMemoryHandleTypeFlagBits::eDmaBufEXT) result += "DmaBufEXT | ";
43890 if (value & ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID) result += "AndroidHardwareBufferANDROID | ";
43891 if (value & ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT) result += "HostAllocationEXT | ";
43892 if (value & ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT) result += "HostMappedForeignMemoryEXT | ";
43893 return "{" + result.substr(0, result.size() - 3) + "}";
43894 }
43895
43896 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBits value)
43897 {
43898 switch (value)
43899 {
43900 case ExternalMemoryFeatureFlagBits::eDedicatedOnly: return "DedicatedOnly";
43901 case ExternalMemoryFeatureFlagBits::eExportable: return "Exportable";
43902 case ExternalMemoryFeatureFlagBits::eImportable: return "Importable";
43903 default: return "invalid";
43904 }
43905 }
43906
43907 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlags value)
43908 {
43909 if (!value) return "{}";
43910 std::string result;
43911 if (value & ExternalMemoryFeatureFlagBits::eDedicatedOnly) result += "DedicatedOnly | ";
43912 if (value & ExternalMemoryFeatureFlagBits::eExportable) result += "Exportable | ";
43913 if (value & ExternalMemoryFeatureFlagBits::eImportable) result += "Importable | ";
43914 return "{" + result.substr(0, result.size() - 3) + "}";
43915 }
43916
43917 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBits value)
43918 {
43919 switch (value)
43920 {
43921 case ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
43922 case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
43923 case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
43924 case ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence: return "D3D12Fence";
43925 case ExternalSemaphoreHandleTypeFlagBits::eSyncFd: return "SyncFd";
43926 default: return "invalid";
43927 }
43928 }
43929
43930 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlags value)
43931 {
43932 if (!value) return "{}";
43933 std::string result;
43934 if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
43935 if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
43936 if (value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
43937 if (value & ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) result += "D3D12Fence | ";
43938 if (value & ExternalSemaphoreHandleTypeFlagBits::eSyncFd) result += "SyncFd | ";
43939 return "{" + result.substr(0, result.size() - 3) + "}";
43940 }
43941
43942 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBits value)
43943 {
43944 switch (value)
43945 {
43946 case ExternalSemaphoreFeatureFlagBits::eExportable: return "Exportable";
43947 case ExternalSemaphoreFeatureFlagBits::eImportable: return "Importable";
43948 default: return "invalid";
43949 }
43950 }
43951
43952 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlags value)
43953 {
43954 if (!value) return "{}";
43955 std::string result;
43956 if (value & ExternalSemaphoreFeatureFlagBits::eExportable) result += "Exportable | ";
43957 if (value & ExternalSemaphoreFeatureFlagBits::eImportable) result += "Importable | ";
43958 return "{" + result.substr(0, result.size() - 3) + "}";
43959 }
43960
43961 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBits value)
43962 {
43963 switch (value)
43964 {
43965 case SemaphoreImportFlagBits::eTemporary: return "Temporary";
43966 default: return "invalid";
43967 }
43968 }
43969
43970 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlags value)
43971 {
43972 if (!value) return "{}";
43973 std::string result;
43974 if (value & SemaphoreImportFlagBits::eTemporary) result += "Temporary | ";
43975 return "{" + result.substr(0, result.size() - 3) + "}";
43976 }
43977
43978 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBits value)
43979 {
43980 switch (value)
43981 {
43982 case ExternalFenceHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd";
43983 case ExternalFenceHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32";
43984 case ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
43985 case ExternalFenceHandleTypeFlagBits::eSyncFd: return "SyncFd";
43986 default: return "invalid";
43987 }
43988 }
43989
43990 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlags value)
43991 {
43992 if (!value) return "{}";
43993 std::string result;
43994 if (value & ExternalFenceHandleTypeFlagBits::eOpaqueFd) result += "OpaqueFd | ";
43995 if (value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32) result += "OpaqueWin32 | ";
43996 if (value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
43997 if (value & ExternalFenceHandleTypeFlagBits::eSyncFd) result += "SyncFd | ";
43998 return "{" + result.substr(0, result.size() - 3) + "}";
43999 }
44000
44001 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBits value)
44002 {
44003 switch (value)
44004 {
44005 case ExternalFenceFeatureFlagBits::eExportable: return "Exportable";
44006 case ExternalFenceFeatureFlagBits::eImportable: return "Importable";
44007 default: return "invalid";
44008 }
44009 }
44010
44011 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlags value)
44012 {
44013 if (!value) return "{}";
44014 std::string result;
44015 if (value & ExternalFenceFeatureFlagBits::eExportable) result += "Exportable | ";
44016 if (value & ExternalFenceFeatureFlagBits::eImportable) result += "Importable | ";
44017 return "{" + result.substr(0, result.size() - 3) + "}";
44018 }
44019
44020 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBits value)
44021 {
44022 switch (value)
44023 {
44024 case FenceImportFlagBits::eTemporary: return "Temporary";
44025 default: return "invalid";
44026 }
44027 }
44028
44029 VULKAN_HPP_INLINE std::string to_string(FenceImportFlags value)
44030 {
44031 if (!value) return "{}";
44032 std::string result;
44033 if (value & FenceImportFlagBits::eTemporary) result += "Temporary | ";
44034 return "{" + result.substr(0, result.size() - 3) + "}";
44035 }
44036
44037 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
44038 {
44039 switch (value)
44040 {
44041 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
44042 default: return "invalid";
44043 }
44044 }
44045
44046 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
44047 {
44048 if (!value) return "{}";
44049 std::string result;
44050 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
44051 return "{" + result.substr(0, result.size() - 3) + "}";
44052 }
44053
44054 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
44055 {
44056 switch (value)
44057 {
44058 case DisplayPowerStateEXT::eOff: return "Off";
44059 case DisplayPowerStateEXT::eSuspend: return "Suspend";
44060 case DisplayPowerStateEXT::eOn: return "On";
44061 default: return "invalid";
44062 }
44063 }
44064
44065 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
44066 {
44067 switch (value)
44068 {
44069 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
44070 default: return "invalid";
44071 }
44072 }
44073
44074 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
44075 {
44076 switch (value)
44077 {
44078 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
44079 default: return "invalid";
44080 }
44081 }
44082
44083 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBits value)
44084 {
44085 switch (value)
44086 {
44087 case PeerMemoryFeatureFlagBits::eCopySrc: return "CopySrc";
44088 case PeerMemoryFeatureFlagBits::eCopyDst: return "CopyDst";
44089 case PeerMemoryFeatureFlagBits::eGenericSrc: return "GenericSrc";
44090 case PeerMemoryFeatureFlagBits::eGenericDst: return "GenericDst";
44091 default: return "invalid";
44092 }
44093 }
44094
44095 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlags value)
44096 {
44097 if (!value) return "{}";
44098 std::string result;
44099 if (value & PeerMemoryFeatureFlagBits::eCopySrc) result += "CopySrc | ";
44100 if (value & PeerMemoryFeatureFlagBits::eCopyDst) result += "CopyDst | ";
44101 if (value & PeerMemoryFeatureFlagBits::eGenericSrc) result += "GenericSrc | ";
44102 if (value & PeerMemoryFeatureFlagBits::eGenericDst) result += "GenericDst | ";
44103 return "{" + result.substr(0, result.size() - 3) + "}";
44104 }
44105
44106 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBits value)
44107 {
44108 switch (value)
44109 {
44110 case MemoryAllocateFlagBits::eDeviceMask: return "DeviceMask";
44111 default: return "invalid";
44112 }
44113 }
44114
44115 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlags value)
44116 {
44117 if (!value) return "{}";
44118 std::string result;
44119 if (value & MemoryAllocateFlagBits::eDeviceMask) result += "DeviceMask | ";
44120 return "{" + result.substr(0, result.size() - 3) + "}";
44121 }
44122
44123 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHR value)
44124 {
44125 switch (value)
44126 {
44127 case DeviceGroupPresentModeFlagBitsKHR::eLocal: return "Local";
44128 case DeviceGroupPresentModeFlagBitsKHR::eRemote: return "Remote";
44129 case DeviceGroupPresentModeFlagBitsKHR::eSum: return "Sum";
44130 case DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice: return "LocalMultiDevice";
44131 default: return "invalid";
44132 }
44133 }
44134
44135 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHR value)
44136 {
44137 if (!value) return "{}";
44138 std::string result;
44139 if (value & DeviceGroupPresentModeFlagBitsKHR::eLocal) result += "Local | ";
44140 if (value & DeviceGroupPresentModeFlagBitsKHR::eRemote) result += "Remote | ";
44141 if (value & DeviceGroupPresentModeFlagBitsKHR::eSum) result += "Sum | ";
44142 if (value & DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice) result += "LocalMultiDevice | ";
44143 return "{" + result.substr(0, result.size() - 3) + "}";
44144 }
44145
44146 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
44147 {
44148 switch (value)
44149 {
44150 case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions: return "SplitInstanceBindRegions";
44151 case SwapchainCreateFlagBitsKHR::eProtected: return "Protected";
44152 default: return "invalid";
44153 }
44154 }
44155
44156 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
44157 {
44158 if (!value) return "{}";
44159 std::string result;
44160 if (value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) result += "SplitInstanceBindRegions | ";
44161 if (value & SwapchainCreateFlagBitsKHR::eProtected) result += "Protected | ";
44162 return "{" + result.substr(0, result.size() - 3) + "}";
44163 }
44164
44165 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
44166 {
44167 switch (value)
44168 {
44169 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
44170 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
44171 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
44172 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
44173 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
44174 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
44175 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
44176 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
44177 default: return "invalid";
44178 }
44179 }
44180
44181 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
44182 {
44183 switch (value)
44184 {
44185 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
44186 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
44187 default: return "invalid";
44188 }
44189 }
44190
44191 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
44192 {
44193 switch (value)
44194 {
44195 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
44196 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
44197 default: return "invalid";
44198 }
44199 }
44200
44201 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
44202 {
44203 if (!value) return "{}";
44204 std::string result;
44205 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
44206 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
44207 return "{" + result.substr(0, result.size() - 3) + "}";
44208 }
44209
44210 VULKAN_HPP_INLINE std::string to_string(PointClippingBehavior value)
44211 {
44212 switch (value)
44213 {
44214 case PointClippingBehavior::eAllClipPlanes: return "AllClipPlanes";
44215 case PointClippingBehavior::eUserClipPlanesOnly: return "UserClipPlanesOnly";
44216 default: return "invalid";
44217 }
44218 }
44219
44220 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
44221 {
44222 switch (value)
44223 {
44224 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
44225 case SamplerReductionModeEXT::eMin: return "Min";
44226 case SamplerReductionModeEXT::eMax: return "Max";
44227 default: return "invalid";
44228 }
44229 }
44230
44231 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOrigin value)
44232 {
44233 switch (value)
44234 {
44235 case TessellationDomainOrigin::eUpperLeft: return "UpperLeft";
44236 case TessellationDomainOrigin::eLowerLeft: return "LowerLeft";
44237 default: return "invalid";
44238 }
44239 }
44240
44241 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversion value)
44242 {
44243 switch (value)
44244 {
44245 case SamplerYcbcrModelConversion::eRgbIdentity: return "RgbIdentity";
44246 case SamplerYcbcrModelConversion::eYcbcrIdentity: return "YcbcrIdentity";
44247 case SamplerYcbcrModelConversion::eYcbcr709: return "Ycbcr709";
44248 case SamplerYcbcrModelConversion::eYcbcr601: return "Ycbcr601";
44249 case SamplerYcbcrModelConversion::eYcbcr2020: return "Ycbcr2020";
44250 default: return "invalid";
44251 }
44252 }
44253
44254 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRange value)
44255 {
44256 switch (value)
44257 {
44258 case SamplerYcbcrRange::eItuFull: return "ItuFull";
44259 case SamplerYcbcrRange::eItuNarrow: return "ItuNarrow";
44260 default: return "invalid";
44261 }
44262 }
44263
44264 VULKAN_HPP_INLINE std::string to_string(ChromaLocation value)
44265 {
44266 switch (value)
44267 {
44268 case ChromaLocation::eCositedEven: return "CositedEven";
44269 case ChromaLocation::eMidpoint: return "Midpoint";
44270 default: return "invalid";
44271 }
44272 }
44273
44274 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
44275 {
44276 switch (value)
44277 {
44278 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
44279 case BlendOverlapEXT::eDisjoint: return "Disjoint";
44280 case BlendOverlapEXT::eConjoint: return "Conjoint";
44281 default: return "invalid";
44282 }
44283 }
44284
44285 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
44286 {
44287 switch (value)
44288 {
44289 case CoverageModulationModeNV::eNone: return "None";
44290 case CoverageModulationModeNV::eRgb: return "Rgb";
44291 case CoverageModulationModeNV::eAlpha: return "Alpha";
44292 case CoverageModulationModeNV::eRgba: return "Rgba";
44293 default: return "invalid";
44294 }
44295 }
44296
44297 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
44298 {
44299 switch (value)
44300 {
44301 case ValidationCacheHeaderVersionEXT::eOne: return "One";
44302 default: return "invalid";
44303 }
44304 }
44305
44306 VULKAN_HPP_INLINE std::string to_string(ShaderInfoTypeAMD value)
44307 {
44308 switch (value)
44309 {
44310 case ShaderInfoTypeAMD::eStatistics: return "Statistics";
44311 case ShaderInfoTypeAMD::eBinary: return "Binary";
44312 case ShaderInfoTypeAMD::eDisassembly: return "Disassembly";
44313 default: return "invalid";
44314 }
44315 }
44316
44317 VULKAN_HPP_INLINE std::string to_string(QueueGlobalPriorityEXT value)
44318 {
44319 switch (value)
44320 {
44321 case QueueGlobalPriorityEXT::eLow: return "Low";
44322 case QueueGlobalPriorityEXT::eMedium: return "Medium";
44323 case QueueGlobalPriorityEXT::eHigh: return "High";
44324 case QueueGlobalPriorityEXT::eRealtime: return "Realtime";
44325 default: return "invalid";
44326 }
44327 }
44328
44329 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageSeverityFlagBitsEXT value)
44330 {
44331 switch (value)
44332 {
44333 case DebugUtilsMessageSeverityFlagBitsEXT::eVerbose: return "Verbose";
44334 case DebugUtilsMessageSeverityFlagBitsEXT::eInfo: return "Info";
44335 case DebugUtilsMessageSeverityFlagBitsEXT::eWarning: return "Warning";
44336 case DebugUtilsMessageSeverityFlagBitsEXT::eError: return "Error";
44337 default: return "invalid";
44338 }
44339 }
44340
44341 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageSeverityFlagsEXT value)
44342 {
44343 if (!value) return "{}";
44344 std::string result;
44345 if (value & DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) result += "Verbose | ";
44346 if (value & DebugUtilsMessageSeverityFlagBitsEXT::eInfo) result += "Info | ";
44347 if (value & DebugUtilsMessageSeverityFlagBitsEXT::eWarning) result += "Warning | ";
44348 if (value & DebugUtilsMessageSeverityFlagBitsEXT::eError) result += "Error | ";
44349 return "{" + result.substr(0, result.size() - 3) + "}";
44350 }
44351
44352 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageTypeFlagBitsEXT value)
44353 {
44354 switch (value)
44355 {
44356 case DebugUtilsMessageTypeFlagBitsEXT::eGeneral: return "General";
44357 case DebugUtilsMessageTypeFlagBitsEXT::eValidation: return "Validation";
44358 case DebugUtilsMessageTypeFlagBitsEXT::ePerformance: return "Performance";
44359 default: return "invalid";
44360 }
44361 }
44362
44363 VULKAN_HPP_INLINE std::string to_string(DebugUtilsMessageTypeFlagsEXT value)
44364 {
44365 if (!value) return "{}";
44366 std::string result;
44367 if (value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral) result += "General | ";
44368 if (value & DebugUtilsMessageTypeFlagBitsEXT::eValidation) result += "Validation | ";
44369 if (value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance) result += "Performance | ";
44370 return "{" + result.substr(0, result.size() - 3) + "}";
44371 }
44372
44373 VULKAN_HPP_INLINE std::string to_string(ConservativeRasterizationModeEXT value)
44374 {
44375 switch (value)
44376 {
44377 case ConservativeRasterizationModeEXT::eDisabled: return "Disabled";
44378 case ConservativeRasterizationModeEXT::eOverestimate: return "Overestimate";
44379 case ConservativeRasterizationModeEXT::eUnderestimate: return "Underestimate";
44380 default: return "invalid";
44381 }
44382 }
44383
44384 VULKAN_HPP_INLINE std::string to_string(DescriptorBindingFlagBitsEXT value)
44385 {
44386 switch (value)
44387 {
44388 case DescriptorBindingFlagBitsEXT::eUpdateAfterBind: return "UpdateAfterBind";
44389 case DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending: return "UpdateUnusedWhilePending";
44390 case DescriptorBindingFlagBitsEXT::ePartiallyBound: return "PartiallyBound";
44391 case DescriptorBindingFlagBitsEXT::eVariableDescriptorCount: return "VariableDescriptorCount";
44392 default: return "invalid";
44393 }
44394 }
44395
44396 VULKAN_HPP_INLINE std::string to_string(DescriptorBindingFlagsEXT value)
44397 {
44398 if (!value) return "{}";
44399 std::string result;
44400 if (value & DescriptorBindingFlagBitsEXT::eUpdateAfterBind) result += "UpdateAfterBind | ";
44401 if (value & DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending) result += "UpdateUnusedWhilePending | ";
44402 if (value & DescriptorBindingFlagBitsEXT::ePartiallyBound) result += "PartiallyBound | ";
44403 if (value & DescriptorBindingFlagBitsEXT::eVariableDescriptorCount) result += "VariableDescriptorCount | ";
44404 return "{" + result.substr(0, result.size() - 3) + "}";
44405 }
44406
44407 VULKAN_HPP_INLINE std::string to_string(VendorId value)
44408 {
44409 switch (value)
44410 {
44411 case VendorId::eViv: return "Viv";
44412 case VendorId::eVsi: return "Vsi";
44413 case VendorId::eKazan: return "Kazan";
44414 default: return "invalid";
44415 }
44416 }
44417
44418 VULKAN_HPP_INLINE std::string to_string(ConditionalRenderingFlagBitsEXT value)
44419 {
44420 switch (value)
44421 {
44422 case ConditionalRenderingFlagBitsEXT::eInverted: return "Inverted";
44423 default: return "invalid";
44424 }
44425 }
44426
44427 VULKAN_HPP_INLINE std::string to_string(ConditionalRenderingFlagsEXT value)
44428 {
44429 if (!value) return "{}";
44430 std::string result;
44431 if (value & ConditionalRenderingFlagBitsEXT::eInverted) result += "Inverted | ";
44432 return "{" + result.substr(0, result.size() - 3) + "}";
44433 }
44434
44435 class DispatchLoaderDynamic
44436 {
44437 public:
44438 PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0;
44439 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0;
44440#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
44441 PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0;
44442#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
44443 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0;
44444 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0;
44445 PFN_vkAllocateMemory vkAllocateMemory = 0;
44446 PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0;
44447 PFN_vkBindBufferMemory vkBindBufferMemory = 0;
44448 PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0;
44449 PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0;
44450 PFN_vkBindImageMemory vkBindImageMemory = 0;
44451 PFN_vkBindImageMemory2 vkBindImageMemory2 = 0;
44452 PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0;
44453 PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
44454 PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0;
44455 PFN_vkCmdBeginQuery vkCmdBeginQuery = 0;
44456 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0;
44457 PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0;
44458 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0;
44459 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0;
44460 PFN_vkCmdBindPipeline vkCmdBindPipeline = 0;
44461 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0;
44462 PFN_vkCmdBlitImage vkCmdBlitImage = 0;
44463 PFN_vkCmdClearAttachments vkCmdClearAttachments = 0;
44464 PFN_vkCmdClearColorImage vkCmdClearColorImage = 0;
44465 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0;
44466 PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0;
44467 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0;
44468 PFN_vkCmdCopyImage vkCmdCopyImage = 0;
44469 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0;
44470 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0;
44471 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0;
44472 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0;
44473 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0;
44474 PFN_vkCmdDispatch vkCmdDispatch = 0;
44475 PFN_vkCmdDispatchBase vkCmdDispatchBase = 0;
44476 PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0;
44477 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0;
44478 PFN_vkCmdDraw vkCmdDraw = 0;
44479 PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0;
44480 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0;
44481 PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0;
44482 PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0;
44483 PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0;
44484 PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0;
44485 PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0;
44486 PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0;
44487 PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0;
44488 PFN_vkCmdEndQuery vkCmdEndQuery = 0;
44489 PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0;
44490 PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0;
44491 PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0;
44492 PFN_vkCmdFillBuffer vkCmdFillBuffer = 0;
44493 PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0;
44494 PFN_vkCmdNextSubpass vkCmdNextSubpass = 0;
44495 PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0;
44496 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0;
44497 PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX = 0;
44498 PFN_vkCmdPushConstants vkCmdPushConstants = 0;
44499 PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0;
44500 PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0;
44501 PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX = 0;
44502 PFN_vkCmdResetEvent vkCmdResetEvent = 0;
44503 PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0;
44504 PFN_vkCmdResolveImage vkCmdResolveImage = 0;
44505 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0;
44506 PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0;
44507 PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0;
44508 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0;
44509 PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0;
44510 PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0;
44511 PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0;
44512 PFN_vkCmdSetEvent vkCmdSetEvent = 0;
44513 PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0;
44514 PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0;
44515 PFN_vkCmdSetScissor vkCmdSetScissor = 0;
44516 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0;
44517 PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0;
44518 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0;
44519 PFN_vkCmdSetViewport vkCmdSetViewport = 0;
44520 PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0;
44521 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0;
44522 PFN_vkCmdWaitEvents vkCmdWaitEvents = 0;
44523 PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0;
44524 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0;
44525#ifdef VK_USE_PLATFORM_ANDROID_KHR
44526 PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
44527#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
44528 PFN_vkCreateBuffer vkCreateBuffer = 0;
44529 PFN_vkCreateBufferView vkCreateBufferView = 0;
44530 PFN_vkCreateCommandPool vkCreateCommandPool = 0;
44531 PFN_vkCreateComputePipelines vkCreateComputePipelines = 0;
44532 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
44533 PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0;
44534 PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0;
44535 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0;
44536 PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0;
44537 PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0;
44538 PFN_vkCreateDevice vkCreateDevice = 0;
44539 PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0;
44540 PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0;
44541 PFN_vkCreateEvent vkCreateEvent = 0;
44542 PFN_vkCreateFence vkCreateFence = 0;
44543 PFN_vkCreateFramebuffer vkCreateFramebuffer = 0;
44544 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0;
44545#ifdef VK_USE_PLATFORM_IOS_MVK
44546 PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
44547#endif /*VK_USE_PLATFORM_IOS_MVK*/
44548 PFN_vkCreateImage vkCreateImage = 0;
44549 PFN_vkCreateImageView vkCreateImageView = 0;
44550 PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX = 0;
44551 PFN_vkCreateInstance vkCreateInstance = 0;
44552#ifdef VK_USE_PLATFORM_MACOS_MVK
44553 PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
44554#endif /*VK_USE_PLATFORM_MACOS_MVK*/
44555#ifdef VK_USE_PLATFORM_MIR_KHR
44556 PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR = 0;
44557#endif /*VK_USE_PLATFORM_MIR_KHR*/
44558 PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX = 0;
44559 PFN_vkCreatePipelineCache vkCreatePipelineCache = 0;
44560 PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0;
44561 PFN_vkCreateQueryPool vkCreateQueryPool = 0;
44562 PFN_vkCreateRenderPass vkCreateRenderPass = 0;
44563 PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0;
44564 PFN_vkCreateSampler vkCreateSampler = 0;
44565 PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0;
44566 PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0;
44567 PFN_vkCreateSemaphore vkCreateSemaphore = 0;
44568 PFN_vkCreateShaderModule vkCreateShaderModule = 0;
44569 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0;
44570 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0;
44571 PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0;
44572#ifdef VK_USE_PLATFORM_VI_NN
44573 PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
44574#endif /*VK_USE_PLATFORM_VI_NN*/
44575#ifdef VK_USE_PLATFORM_WAYLAND_KHR
44576 PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0;
44577#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
44578#ifdef VK_USE_PLATFORM_WIN32_KHR
44579 PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0;
44580#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44581#ifdef VK_USE_PLATFORM_XCB_KHR
44582 PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0;
44583#endif /*VK_USE_PLATFORM_XCB_KHR*/
44584#ifdef VK_USE_PLATFORM_XLIB_KHR
44585 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0;
44586#endif /*VK_USE_PLATFORM_XLIB_KHR*/
44587 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0;
44588 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0;
44589 PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0;
44590 PFN_vkDestroyBuffer vkDestroyBuffer = 0;
44591 PFN_vkDestroyBufferView vkDestroyBufferView = 0;
44592 PFN_vkDestroyCommandPool vkDestroyCommandPool = 0;
44593 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
44594 PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0;
44595 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0;
44596 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0;
44597 PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0;
44598 PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0;
44599 PFN_vkDestroyDevice vkDestroyDevice = 0;
44600 PFN_vkDestroyEvent vkDestroyEvent = 0;
44601 PFN_vkDestroyFence vkDestroyFence = 0;
44602 PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0;
44603 PFN_vkDestroyImage vkDestroyImage = 0;
44604 PFN_vkDestroyImageView vkDestroyImageView = 0;
44605 PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX = 0;
44606 PFN_vkDestroyInstance vkDestroyInstance = 0;
44607 PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX = 0;
44608 PFN_vkDestroyPipeline vkDestroyPipeline = 0;
44609 PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0;
44610 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0;
44611 PFN_vkDestroyQueryPool vkDestroyQueryPool = 0;
44612 PFN_vkDestroyRenderPass vkDestroyRenderPass = 0;
44613 PFN_vkDestroySampler vkDestroySampler = 0;
44614 PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0;
44615 PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0;
44616 PFN_vkDestroySemaphore vkDestroySemaphore = 0;
44617 PFN_vkDestroyShaderModule vkDestroyShaderModule = 0;
44618 PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0;
44619 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0;
44620 PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0;
44621 PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0;
44622 PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0;
44623 PFN_vkEndCommandBuffer vkEndCommandBuffer = 0;
44624 PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0;
44625 PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0;
44626 PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
44627 PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0;
44628 PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0;
44629 PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0;
44630 PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0;
44631 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0;
44632 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0;
44633 PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0;
44634 PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0;
44635 PFN_vkFreeMemory vkFreeMemory = 0;
44636#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
44637 PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
44638#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
44639 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0;
44640 PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0;
44641 PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0;
44642 PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0;
44643 PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0;
44644 PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0;
44645 PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0;
44646 PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0;
44647 PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0;
44648 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0;
44649 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
44650 PFN_vkGetDeviceQueue vkGetDeviceQueue = 0;
44651 PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0;
44652 PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0;
44653 PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0;
44654 PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0;
44655 PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0;
44656 PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0;
44657 PFN_vkGetEventStatus vkGetEventStatus = 0;
44658 PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0;
44659 PFN_vkGetFenceStatus vkGetFenceStatus = 0;
44660#ifdef VK_USE_PLATFORM_WIN32_KHR
44661 PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0;
44662#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44663 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0;
44664 PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0;
44665 PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0;
44666 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0;
44667 PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0;
44668 PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0;
44669 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0;
44670 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
44671#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
44672 PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0;
44673#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
44674 PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0;
44675 PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0;
44676 PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
44677#ifdef VK_USE_PLATFORM_WIN32_KHR
44678 PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0;
44679#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44680#ifdef VK_USE_PLATFORM_WIN32_NV
44681 PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
44682#endif /*VK_USE_PLATFORM_WIN32_NV*/
44683#ifdef VK_USE_PLATFORM_WIN32_KHR
44684 PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
44685#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44686 PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0;
44687 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0;
44688 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0;
44689 PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0;
44690 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0;
44691 PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0;
44692 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0;
44693 PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0;
44694 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0;
44695 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
44696 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0;
44697 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0;
44698 PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0;
44699 PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0;
44700 PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0;
44701 PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0;
44702 PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0;
44703 PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0;
44704 PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 0;
44705 PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0;
44706 PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0;
44707 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0;
44708 PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0;
44709 PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0;
44710 PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0;
44711#ifdef VK_USE_PLATFORM_MIR_KHR
44712 PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR = 0;
44713#endif /*VK_USE_PLATFORM_MIR_KHR*/
44714 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
44715 PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
44716 PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0;
44717 PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0;
44718 PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0;
44719 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0;
44720 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0;
44721 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0;
44722 PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0;
44723 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0;
44724 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
44725 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
44726 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
44727 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0;
44728 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0;
44729 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0;
44730 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
44731 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0;
44732#ifdef VK_USE_PLATFORM_WAYLAND_KHR
44733 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
44734#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
44735#ifdef VK_USE_PLATFORM_WIN32_KHR
44736 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
44737#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44738#ifdef VK_USE_PLATFORM_XCB_KHR
44739 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
44740#endif /*VK_USE_PLATFORM_XCB_KHR*/
44741#ifdef VK_USE_PLATFORM_XLIB_KHR
44742 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
44743#endif /*VK_USE_PLATFORM_XLIB_KHR*/
44744 PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0;
44745 PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0;
44746 PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0;
44747#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
44748 PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
44749#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
44750 PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0;
44751 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0;
44752 PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0;
44753#ifdef VK_USE_PLATFORM_WIN32_KHR
44754 PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0;
44755#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44756 PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0;
44757 PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0;
44758 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0;
44759 PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0;
44760 PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
44761 PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
44762#ifdef VK_USE_PLATFORM_WIN32_KHR
44763 PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
44764#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44765 PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
44766#ifdef VK_USE_PLATFORM_WIN32_KHR
44767 PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
44768#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44769 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0;
44770 PFN_vkMapMemory vkMapMemory = 0;
44771 PFN_vkMergePipelineCaches vkMergePipelineCaches = 0;
44772 PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0;
44773 PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0;
44774 PFN_vkQueueBindSparse vkQueueBindSparse = 0;
44775 PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0;
44776 PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0;
44777 PFN_vkQueuePresentKHR vkQueuePresentKHR = 0;
44778 PFN_vkQueueSubmit vkQueueSubmit = 0;
44779 PFN_vkQueueWaitIdle vkQueueWaitIdle = 0;
44780 PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0;
44781 PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0;
44782 PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX = 0;
44783 PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0;
44784 PFN_vkResetCommandBuffer vkResetCommandBuffer = 0;
44785 PFN_vkResetCommandPool vkResetCommandPool = 0;
44786 PFN_vkResetDescriptorPool vkResetDescriptorPool = 0;
44787 PFN_vkResetEvent vkResetEvent = 0;
44788 PFN_vkResetFences vkResetFences = 0;
44789 PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0;
44790 PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0;
44791 PFN_vkSetEvent vkSetEvent = 0;
44792 PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0;
44793 PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0;
44794 PFN_vkTrimCommandPool vkTrimCommandPool = 0;
44795 PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0;
44796 PFN_vkUnmapMemory vkUnmapMemory = 0;
44797 PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX = 0;
44798 PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0;
44799 PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0;
44800 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0;
44801 PFN_vkWaitForFences vkWaitForFences = 0;
44802 public:
44803 DispatchLoaderDynamic(Instance instance = Instance(), Device device = Device())
44804 {
44805 if (instance)
44806 {
44807 init(instance, device);
44808 }
44809 }
44810
44811 void init(Instance instance, Device device = Device())
44812 {
44813 vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR(device ? device.getProcAddr( "vkAcquireNextImage2KHR") : instance.getProcAddr( "vkAcquireNextImage2KHR"));
44814 vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR(device ? device.getProcAddr( "vkAcquireNextImageKHR") : instance.getProcAddr( "vkAcquireNextImageKHR"));
44815#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
44816 vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT(device ? device.getProcAddr( "vkAcquireXlibDisplayEXT") : instance.getProcAddr( "vkAcquireXlibDisplayEXT"));
44817#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
44818 vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers(device ? device.getProcAddr( "vkAllocateCommandBuffers") : instance.getProcAddr( "vkAllocateCommandBuffers"));
44819 vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets(device ? device.getProcAddr( "vkAllocateDescriptorSets") : instance.getProcAddr( "vkAllocateDescriptorSets"));
44820 vkAllocateMemory = PFN_vkAllocateMemory(device ? device.getProcAddr( "vkAllocateMemory") : instance.getProcAddr( "vkAllocateMemory"));
44821 vkBeginCommandBuffer = PFN_vkBeginCommandBuffer(device ? device.getProcAddr( "vkBeginCommandBuffer") : instance.getProcAddr( "vkBeginCommandBuffer"));
44822 vkBindBufferMemory = PFN_vkBindBufferMemory(device ? device.getProcAddr( "vkBindBufferMemory") : instance.getProcAddr( "vkBindBufferMemory"));
44823 vkBindBufferMemory2 = PFN_vkBindBufferMemory2(device ? device.getProcAddr( "vkBindBufferMemory2") : instance.getProcAddr( "vkBindBufferMemory2"));
44824 vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR(device ? device.getProcAddr( "vkBindBufferMemory2KHR") : instance.getProcAddr( "vkBindBufferMemory2KHR"));
44825 vkBindImageMemory = PFN_vkBindImageMemory(device ? device.getProcAddr( "vkBindImageMemory") : instance.getProcAddr( "vkBindImageMemory"));
44826 vkBindImageMemory2 = PFN_vkBindImageMemory2(device ? device.getProcAddr( "vkBindImageMemory2") : instance.getProcAddr( "vkBindImageMemory2"));
44827 vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR(device ? device.getProcAddr( "vkBindImageMemory2KHR") : instance.getProcAddr( "vkBindImageMemory2KHR"));
44828 vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT(device ? device.getProcAddr( "vkCmdBeginConditionalRenderingEXT") : instance.getProcAddr( "vkCmdBeginConditionalRenderingEXT"));
44829 vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdBeginDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdBeginDebugUtilsLabelEXT"));
44830 vkCmdBeginQuery = PFN_vkCmdBeginQuery(device ? device.getProcAddr( "vkCmdBeginQuery") : instance.getProcAddr( "vkCmdBeginQuery"));
44831 vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass(device ? device.getProcAddr( "vkCmdBeginRenderPass") : instance.getProcAddr( "vkCmdBeginRenderPass"));
44832 vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR(device ? device.getProcAddr( "vkCmdBeginRenderPass2KHR") : instance.getProcAddr( "vkCmdBeginRenderPass2KHR"));
44833 vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets(device ? device.getProcAddr( "vkCmdBindDescriptorSets") : instance.getProcAddr( "vkCmdBindDescriptorSets"));
44834 vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer(device ? device.getProcAddr( "vkCmdBindIndexBuffer") : instance.getProcAddr( "vkCmdBindIndexBuffer"));
44835 vkCmdBindPipeline = PFN_vkCmdBindPipeline(device ? device.getProcAddr( "vkCmdBindPipeline") : instance.getProcAddr( "vkCmdBindPipeline"));
44836 vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers(device ? device.getProcAddr( "vkCmdBindVertexBuffers") : instance.getProcAddr( "vkCmdBindVertexBuffers"));
44837 vkCmdBlitImage = PFN_vkCmdBlitImage(device ? device.getProcAddr( "vkCmdBlitImage") : instance.getProcAddr( "vkCmdBlitImage"));
44838 vkCmdClearAttachments = PFN_vkCmdClearAttachments(device ? device.getProcAddr( "vkCmdClearAttachments") : instance.getProcAddr( "vkCmdClearAttachments"));
44839 vkCmdClearColorImage = PFN_vkCmdClearColorImage(device ? device.getProcAddr( "vkCmdClearColorImage") : instance.getProcAddr( "vkCmdClearColorImage"));
44840 vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage(device ? device.getProcAddr( "vkCmdClearDepthStencilImage") : instance.getProcAddr( "vkCmdClearDepthStencilImage"));
44841 vkCmdCopyBuffer = PFN_vkCmdCopyBuffer(device ? device.getProcAddr( "vkCmdCopyBuffer") : instance.getProcAddr( "vkCmdCopyBuffer"));
44842 vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage(device ? device.getProcAddr( "vkCmdCopyBufferToImage") : instance.getProcAddr( "vkCmdCopyBufferToImage"));
44843 vkCmdCopyImage = PFN_vkCmdCopyImage(device ? device.getProcAddr( "vkCmdCopyImage") : instance.getProcAddr( "vkCmdCopyImage"));
44844 vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer(device ? device.getProcAddr( "vkCmdCopyImageToBuffer") : instance.getProcAddr( "vkCmdCopyImageToBuffer"));
44845 vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults(device ? device.getProcAddr( "vkCmdCopyQueryPoolResults") : instance.getProcAddr( "vkCmdCopyQueryPoolResults"));
44846 vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT(device ? device.getProcAddr( "vkCmdDebugMarkerBeginEXT") : instance.getProcAddr( "vkCmdDebugMarkerBeginEXT"));
44847 vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT(device ? device.getProcAddr( "vkCmdDebugMarkerEndEXT") : instance.getProcAddr( "vkCmdDebugMarkerEndEXT"));
44848 vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT(device ? device.getProcAddr( "vkCmdDebugMarkerInsertEXT") : instance.getProcAddr( "vkCmdDebugMarkerInsertEXT"));
44849 vkCmdDispatch = PFN_vkCmdDispatch(device ? device.getProcAddr( "vkCmdDispatch") : instance.getProcAddr( "vkCmdDispatch"));
44850 vkCmdDispatchBase = PFN_vkCmdDispatchBase(device ? device.getProcAddr( "vkCmdDispatchBase") : instance.getProcAddr( "vkCmdDispatchBase"));
44851 vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR(device ? device.getProcAddr( "vkCmdDispatchBaseKHR") : instance.getProcAddr( "vkCmdDispatchBaseKHR"));
44852 vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect(device ? device.getProcAddr( "vkCmdDispatchIndirect") : instance.getProcAddr( "vkCmdDispatchIndirect"));
44853 vkCmdDraw = PFN_vkCmdDraw(device ? device.getProcAddr( "vkCmdDraw") : instance.getProcAddr( "vkCmdDraw"));
44854 vkCmdDrawIndexed = PFN_vkCmdDrawIndexed(device ? device.getProcAddr( "vkCmdDrawIndexed") : instance.getProcAddr( "vkCmdDrawIndexed"));
44855 vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect(device ? device.getProcAddr( "vkCmdDrawIndexedIndirect") : instance.getProcAddr( "vkCmdDrawIndexedIndirect"));
44856 vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD(device ? device.getProcAddr( "vkCmdDrawIndexedIndirectCountAMD") : instance.getProcAddr( "vkCmdDrawIndexedIndirectCountAMD"));
44857 vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR(device ? device.getProcAddr( "vkCmdDrawIndexedIndirectCountKHR") : instance.getProcAddr( "vkCmdDrawIndexedIndirectCountKHR"));
44858 vkCmdDrawIndirect = PFN_vkCmdDrawIndirect(device ? device.getProcAddr( "vkCmdDrawIndirect") : instance.getProcAddr( "vkCmdDrawIndirect"));
44859 vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD(device ? device.getProcAddr( "vkCmdDrawIndirectCountAMD") : instance.getProcAddr( "vkCmdDrawIndirectCountAMD"));
44860 vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR(device ? device.getProcAddr( "vkCmdDrawIndirectCountKHR") : instance.getProcAddr( "vkCmdDrawIndirectCountKHR"));
44861 vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT(device ? device.getProcAddr( "vkCmdEndConditionalRenderingEXT") : instance.getProcAddr( "vkCmdEndConditionalRenderingEXT"));
44862 vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdEndDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdEndDebugUtilsLabelEXT"));
44863 vkCmdEndQuery = PFN_vkCmdEndQuery(device ? device.getProcAddr( "vkCmdEndQuery") : instance.getProcAddr( "vkCmdEndQuery"));
44864 vkCmdEndRenderPass = PFN_vkCmdEndRenderPass(device ? device.getProcAddr( "vkCmdEndRenderPass") : instance.getProcAddr( "vkCmdEndRenderPass"));
44865 vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR(device ? device.getProcAddr( "vkCmdEndRenderPass2KHR") : instance.getProcAddr( "vkCmdEndRenderPass2KHR"));
44866 vkCmdExecuteCommands = PFN_vkCmdExecuteCommands(device ? device.getProcAddr( "vkCmdExecuteCommands") : instance.getProcAddr( "vkCmdExecuteCommands"));
44867 vkCmdFillBuffer = PFN_vkCmdFillBuffer(device ? device.getProcAddr( "vkCmdFillBuffer") : instance.getProcAddr( "vkCmdFillBuffer"));
44868 vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT(device ? device.getProcAddr( "vkCmdInsertDebugUtilsLabelEXT") : instance.getProcAddr( "vkCmdInsertDebugUtilsLabelEXT"));
44869 vkCmdNextSubpass = PFN_vkCmdNextSubpass(device ? device.getProcAddr( "vkCmdNextSubpass") : instance.getProcAddr( "vkCmdNextSubpass"));
44870 vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR(device ? device.getProcAddr( "vkCmdNextSubpass2KHR") : instance.getProcAddr( "vkCmdNextSubpass2KHR"));
44871 vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier(device ? device.getProcAddr( "vkCmdPipelineBarrier") : instance.getProcAddr( "vkCmdPipelineBarrier"));
44872 vkCmdProcessCommandsNVX = PFN_vkCmdProcessCommandsNVX(device ? device.getProcAddr( "vkCmdProcessCommandsNVX") : instance.getProcAddr( "vkCmdProcessCommandsNVX"));
44873 vkCmdPushConstants = PFN_vkCmdPushConstants(device ? device.getProcAddr( "vkCmdPushConstants") : instance.getProcAddr( "vkCmdPushConstants"));
44874 vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR(device ? device.getProcAddr( "vkCmdPushDescriptorSetKHR") : instance.getProcAddr( "vkCmdPushDescriptorSetKHR"));
44875 vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR(device ? device.getProcAddr( "vkCmdPushDescriptorSetWithTemplateKHR") : instance.getProcAddr( "vkCmdPushDescriptorSetWithTemplateKHR"));
44876 vkCmdReserveSpaceForCommandsNVX = PFN_vkCmdReserveSpaceForCommandsNVX(device ? device.getProcAddr( "vkCmdReserveSpaceForCommandsNVX") : instance.getProcAddr( "vkCmdReserveSpaceForCommandsNVX"));
44877 vkCmdResetEvent = PFN_vkCmdResetEvent(device ? device.getProcAddr( "vkCmdResetEvent") : instance.getProcAddr( "vkCmdResetEvent"));
44878 vkCmdResetQueryPool = PFN_vkCmdResetQueryPool(device ? device.getProcAddr( "vkCmdResetQueryPool") : instance.getProcAddr( "vkCmdResetQueryPool"));
44879 vkCmdResolveImage = PFN_vkCmdResolveImage(device ? device.getProcAddr( "vkCmdResolveImage") : instance.getProcAddr( "vkCmdResolveImage"));
44880 vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants(device ? device.getProcAddr( "vkCmdSetBlendConstants") : instance.getProcAddr( "vkCmdSetBlendConstants"));
44881 vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV(device ? device.getProcAddr( "vkCmdSetCheckpointNV") : instance.getProcAddr( "vkCmdSetCheckpointNV"));
44882 vkCmdSetDepthBias = PFN_vkCmdSetDepthBias(device ? device.getProcAddr( "vkCmdSetDepthBias") : instance.getProcAddr( "vkCmdSetDepthBias"));
44883 vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds(device ? device.getProcAddr( "vkCmdSetDepthBounds") : instance.getProcAddr( "vkCmdSetDepthBounds"));
44884 vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask(device ? device.getProcAddr( "vkCmdSetDeviceMask") : instance.getProcAddr( "vkCmdSetDeviceMask"));
44885 vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR(device ? device.getProcAddr( "vkCmdSetDeviceMaskKHR") : instance.getProcAddr( "vkCmdSetDeviceMaskKHR"));
44886 vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT(device ? device.getProcAddr( "vkCmdSetDiscardRectangleEXT") : instance.getProcAddr( "vkCmdSetDiscardRectangleEXT"));
44887 vkCmdSetEvent = PFN_vkCmdSetEvent(device ? device.getProcAddr( "vkCmdSetEvent") : instance.getProcAddr( "vkCmdSetEvent"));
44888 vkCmdSetLineWidth = PFN_vkCmdSetLineWidth(device ? device.getProcAddr( "vkCmdSetLineWidth") : instance.getProcAddr( "vkCmdSetLineWidth"));
44889 vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT(device ? device.getProcAddr( "vkCmdSetSampleLocationsEXT") : instance.getProcAddr( "vkCmdSetSampleLocationsEXT"));
44890 vkCmdSetScissor = PFN_vkCmdSetScissor(device ? device.getProcAddr( "vkCmdSetScissor") : instance.getProcAddr( "vkCmdSetScissor"));
44891 vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask(device ? device.getProcAddr( "vkCmdSetStencilCompareMask") : instance.getProcAddr( "vkCmdSetStencilCompareMask"));
44892 vkCmdSetStencilReference = PFN_vkCmdSetStencilReference(device ? device.getProcAddr( "vkCmdSetStencilReference") : instance.getProcAddr( "vkCmdSetStencilReference"));
44893 vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask(device ? device.getProcAddr( "vkCmdSetStencilWriteMask") : instance.getProcAddr( "vkCmdSetStencilWriteMask"));
44894 vkCmdSetViewport = PFN_vkCmdSetViewport(device ? device.getProcAddr( "vkCmdSetViewport") : instance.getProcAddr( "vkCmdSetViewport"));
44895 vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV(device ? device.getProcAddr( "vkCmdSetViewportWScalingNV") : instance.getProcAddr( "vkCmdSetViewportWScalingNV"));
44896 vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer(device ? device.getProcAddr( "vkCmdUpdateBuffer") : instance.getProcAddr( "vkCmdUpdateBuffer"));
44897 vkCmdWaitEvents = PFN_vkCmdWaitEvents(device ? device.getProcAddr( "vkCmdWaitEvents") : instance.getProcAddr( "vkCmdWaitEvents"));
44898 vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD(device ? device.getProcAddr( "vkCmdWriteBufferMarkerAMD") : instance.getProcAddr( "vkCmdWriteBufferMarkerAMD"));
44899 vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp(device ? device.getProcAddr( "vkCmdWriteTimestamp") : instance.getProcAddr( "vkCmdWriteTimestamp"));
44900#ifdef VK_USE_PLATFORM_ANDROID_KHR
44901 vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR(instance.getProcAddr( "vkCreateAndroidSurfaceKHR"));
44902#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
44903 vkCreateBuffer = PFN_vkCreateBuffer(device ? device.getProcAddr( "vkCreateBuffer") : instance.getProcAddr( "vkCreateBuffer"));
44904 vkCreateBufferView = PFN_vkCreateBufferView(device ? device.getProcAddr( "vkCreateBufferView") : instance.getProcAddr( "vkCreateBufferView"));
44905 vkCreateCommandPool = PFN_vkCreateCommandPool(device ? device.getProcAddr( "vkCreateCommandPool") : instance.getProcAddr( "vkCreateCommandPool"));
44906 vkCreateComputePipelines = PFN_vkCreateComputePipelines(device ? device.getProcAddr( "vkCreateComputePipelines") : instance.getProcAddr( "vkCreateComputePipelines"));
44907 vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT(instance.getProcAddr( "vkCreateDebugReportCallbackEXT"));
44908 vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT(instance.getProcAddr( "vkCreateDebugUtilsMessengerEXT"));
44909 vkCreateDescriptorPool = PFN_vkCreateDescriptorPool(device ? device.getProcAddr( "vkCreateDescriptorPool") : instance.getProcAddr( "vkCreateDescriptorPool"));
44910 vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout(device ? device.getProcAddr( "vkCreateDescriptorSetLayout") : instance.getProcAddr( "vkCreateDescriptorSetLayout"));
44911 vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate(device ? device.getProcAddr( "vkCreateDescriptorUpdateTemplate") : instance.getProcAddr( "vkCreateDescriptorUpdateTemplate"));
44912 vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR(device ? device.getProcAddr( "vkCreateDescriptorUpdateTemplateKHR") : instance.getProcAddr( "vkCreateDescriptorUpdateTemplateKHR"));
44913 vkCreateDevice = PFN_vkCreateDevice(device ? device.getProcAddr( "vkCreateDevice") : instance.getProcAddr( "vkCreateDevice"));
44914 vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR(device ? device.getProcAddr( "vkCreateDisplayModeKHR") : instance.getProcAddr( "vkCreateDisplayModeKHR"));
44915 vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR(instance.getProcAddr( "vkCreateDisplayPlaneSurfaceKHR"));
44916 vkCreateEvent = PFN_vkCreateEvent(device ? device.getProcAddr( "vkCreateEvent") : instance.getProcAddr( "vkCreateEvent"));
44917 vkCreateFence = PFN_vkCreateFence(device ? device.getProcAddr( "vkCreateFence") : instance.getProcAddr( "vkCreateFence"));
44918 vkCreateFramebuffer = PFN_vkCreateFramebuffer(device ? device.getProcAddr( "vkCreateFramebuffer") : instance.getProcAddr( "vkCreateFramebuffer"));
44919 vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines(device ? device.getProcAddr( "vkCreateGraphicsPipelines") : instance.getProcAddr( "vkCreateGraphicsPipelines"));
44920#ifdef VK_USE_PLATFORM_IOS_MVK
44921 vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK(instance.getProcAddr( "vkCreateIOSSurfaceMVK"));
44922#endif /*VK_USE_PLATFORM_IOS_MVK*/
44923 vkCreateImage = PFN_vkCreateImage(device ? device.getProcAddr( "vkCreateImage") : instance.getProcAddr( "vkCreateImage"));
44924 vkCreateImageView = PFN_vkCreateImageView(device ? device.getProcAddr( "vkCreateImageView") : instance.getProcAddr( "vkCreateImageView"));
44925 vkCreateIndirectCommandsLayoutNVX = PFN_vkCreateIndirectCommandsLayoutNVX(device ? device.getProcAddr( "vkCreateIndirectCommandsLayoutNVX") : instance.getProcAddr( "vkCreateIndirectCommandsLayoutNVX"));
44926 vkCreateInstance = PFN_vkCreateInstance(instance.getProcAddr( "vkCreateInstance"));
44927#ifdef VK_USE_PLATFORM_MACOS_MVK
44928 vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK(instance.getProcAddr( "vkCreateMacOSSurfaceMVK"));
44929#endif /*VK_USE_PLATFORM_MACOS_MVK*/
44930#ifdef VK_USE_PLATFORM_MIR_KHR
44931 vkCreateMirSurfaceKHR = PFN_vkCreateMirSurfaceKHR(instance.getProcAddr( "vkCreateMirSurfaceKHR"));
44932#endif /*VK_USE_PLATFORM_MIR_KHR*/
44933 vkCreateObjectTableNVX = PFN_vkCreateObjectTableNVX(device ? device.getProcAddr( "vkCreateObjectTableNVX") : instance.getProcAddr( "vkCreateObjectTableNVX"));
44934 vkCreatePipelineCache = PFN_vkCreatePipelineCache(device ? device.getProcAddr( "vkCreatePipelineCache") : instance.getProcAddr( "vkCreatePipelineCache"));
44935 vkCreatePipelineLayout = PFN_vkCreatePipelineLayout(device ? device.getProcAddr( "vkCreatePipelineLayout") : instance.getProcAddr( "vkCreatePipelineLayout"));
44936 vkCreateQueryPool = PFN_vkCreateQueryPool(device ? device.getProcAddr( "vkCreateQueryPool") : instance.getProcAddr( "vkCreateQueryPool"));
44937 vkCreateRenderPass = PFN_vkCreateRenderPass(device ? device.getProcAddr( "vkCreateRenderPass") : instance.getProcAddr( "vkCreateRenderPass"));
44938 vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR(device ? device.getProcAddr( "vkCreateRenderPass2KHR") : instance.getProcAddr( "vkCreateRenderPass2KHR"));
44939 vkCreateSampler = PFN_vkCreateSampler(device ? device.getProcAddr( "vkCreateSampler") : instance.getProcAddr( "vkCreateSampler"));
44940 vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion(device ? device.getProcAddr( "vkCreateSamplerYcbcrConversion") : instance.getProcAddr( "vkCreateSamplerYcbcrConversion"));
44941 vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR(device ? device.getProcAddr( "vkCreateSamplerYcbcrConversionKHR") : instance.getProcAddr( "vkCreateSamplerYcbcrConversionKHR"));
44942 vkCreateSemaphore = PFN_vkCreateSemaphore(device ? device.getProcAddr( "vkCreateSemaphore") : instance.getProcAddr( "vkCreateSemaphore"));
44943 vkCreateShaderModule = PFN_vkCreateShaderModule(device ? device.getProcAddr( "vkCreateShaderModule") : instance.getProcAddr( "vkCreateShaderModule"));
44944 vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR(device ? device.getProcAddr( "vkCreateSharedSwapchainsKHR") : instance.getProcAddr( "vkCreateSharedSwapchainsKHR"));
44945 vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR(device ? device.getProcAddr( "vkCreateSwapchainKHR") : instance.getProcAddr( "vkCreateSwapchainKHR"));
44946 vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT(device ? device.getProcAddr( "vkCreateValidationCacheEXT") : instance.getProcAddr( "vkCreateValidationCacheEXT"));
44947#ifdef VK_USE_PLATFORM_VI_NN
44948 vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN(instance.getProcAddr( "vkCreateViSurfaceNN"));
44949#endif /*VK_USE_PLATFORM_VI_NN*/
44950#ifdef VK_USE_PLATFORM_WAYLAND_KHR
44951 vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR(instance.getProcAddr( "vkCreateWaylandSurfaceKHR"));
44952#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
44953#ifdef VK_USE_PLATFORM_WIN32_KHR
44954 vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR(instance.getProcAddr( "vkCreateWin32SurfaceKHR"));
44955#endif /*VK_USE_PLATFORM_WIN32_KHR*/
44956#ifdef VK_USE_PLATFORM_XCB_KHR
44957 vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR(instance.getProcAddr( "vkCreateXcbSurfaceKHR"));
44958#endif /*VK_USE_PLATFORM_XCB_KHR*/
44959#ifdef VK_USE_PLATFORM_XLIB_KHR
44960 vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR(instance.getProcAddr( "vkCreateXlibSurfaceKHR"));
44961#endif /*VK_USE_PLATFORM_XLIB_KHR*/
44962 vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT(device ? device.getProcAddr( "vkDebugMarkerSetObjectNameEXT") : instance.getProcAddr( "vkDebugMarkerSetObjectNameEXT"));
44963 vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT(device ? device.getProcAddr( "vkDebugMarkerSetObjectTagEXT") : instance.getProcAddr( "vkDebugMarkerSetObjectTagEXT"));
44964 vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT(instance.getProcAddr( "vkDebugReportMessageEXT"));
44965 vkDestroyBuffer = PFN_vkDestroyBuffer(device ? device.getProcAddr( "vkDestroyBuffer") : instance.getProcAddr( "vkDestroyBuffer"));
44966 vkDestroyBufferView = PFN_vkDestroyBufferView(device ? device.getProcAddr( "vkDestroyBufferView") : instance.getProcAddr( "vkDestroyBufferView"));
44967 vkDestroyCommandPool = PFN_vkDestroyCommandPool(device ? device.getProcAddr( "vkDestroyCommandPool") : instance.getProcAddr( "vkDestroyCommandPool"));
44968 vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT(instance.getProcAddr( "vkDestroyDebugReportCallbackEXT"));
44969 vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT(instance.getProcAddr( "vkDestroyDebugUtilsMessengerEXT"));
44970 vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool(device ? device.getProcAddr( "vkDestroyDescriptorPool") : instance.getProcAddr( "vkDestroyDescriptorPool"));
44971 vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout(device ? device.getProcAddr( "vkDestroyDescriptorSetLayout") : instance.getProcAddr( "vkDestroyDescriptorSetLayout"));
44972 vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate(device ? device.getProcAddr( "vkDestroyDescriptorUpdateTemplate") : instance.getProcAddr( "vkDestroyDescriptorUpdateTemplate"));
44973 vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR(device ? device.getProcAddr( "vkDestroyDescriptorUpdateTemplateKHR") : instance.getProcAddr( "vkDestroyDescriptorUpdateTemplateKHR"));
44974 vkDestroyDevice = PFN_vkDestroyDevice(device ? device.getProcAddr( "vkDestroyDevice") : instance.getProcAddr( "vkDestroyDevice"));
44975 vkDestroyEvent = PFN_vkDestroyEvent(device ? device.getProcAddr( "vkDestroyEvent") : instance.getProcAddr( "vkDestroyEvent"));
44976 vkDestroyFence = PFN_vkDestroyFence(device ? device.getProcAddr( "vkDestroyFence") : instance.getProcAddr( "vkDestroyFence"));
44977 vkDestroyFramebuffer = PFN_vkDestroyFramebuffer(device ? device.getProcAddr( "vkDestroyFramebuffer") : instance.getProcAddr( "vkDestroyFramebuffer"));
44978 vkDestroyImage = PFN_vkDestroyImage(device ? device.getProcAddr( "vkDestroyImage") : instance.getProcAddr( "vkDestroyImage"));
44979 vkDestroyImageView = PFN_vkDestroyImageView(device ? device.getProcAddr( "vkDestroyImageView") : instance.getProcAddr( "vkDestroyImageView"));
44980 vkDestroyIndirectCommandsLayoutNVX = PFN_vkDestroyIndirectCommandsLayoutNVX(device ? device.getProcAddr( "vkDestroyIndirectCommandsLayoutNVX") : instance.getProcAddr( "vkDestroyIndirectCommandsLayoutNVX"));
44981 vkDestroyInstance = PFN_vkDestroyInstance(instance.getProcAddr( "vkDestroyInstance"));
44982 vkDestroyObjectTableNVX = PFN_vkDestroyObjectTableNVX(device ? device.getProcAddr( "vkDestroyObjectTableNVX") : instance.getProcAddr( "vkDestroyObjectTableNVX"));
44983 vkDestroyPipeline = PFN_vkDestroyPipeline(device ? device.getProcAddr( "vkDestroyPipeline") : instance.getProcAddr( "vkDestroyPipeline"));
44984 vkDestroyPipelineCache = PFN_vkDestroyPipelineCache(device ? device.getProcAddr( "vkDestroyPipelineCache") : instance.getProcAddr( "vkDestroyPipelineCache"));
44985 vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout(device ? device.getProcAddr( "vkDestroyPipelineLayout") : instance.getProcAddr( "vkDestroyPipelineLayout"));
44986 vkDestroyQueryPool = PFN_vkDestroyQueryPool(device ? device.getProcAddr( "vkDestroyQueryPool") : instance.getProcAddr( "vkDestroyQueryPool"));
44987 vkDestroyRenderPass = PFN_vkDestroyRenderPass(device ? device.getProcAddr( "vkDestroyRenderPass") : instance.getProcAddr( "vkDestroyRenderPass"));
44988 vkDestroySampler = PFN_vkDestroySampler(device ? device.getProcAddr( "vkDestroySampler") : instance.getProcAddr( "vkDestroySampler"));
44989 vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion(device ? device.getProcAddr( "vkDestroySamplerYcbcrConversion") : instance.getProcAddr( "vkDestroySamplerYcbcrConversion"));
44990 vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR(device ? device.getProcAddr( "vkDestroySamplerYcbcrConversionKHR") : instance.getProcAddr( "vkDestroySamplerYcbcrConversionKHR"));
44991 vkDestroySemaphore = PFN_vkDestroySemaphore(device ? device.getProcAddr( "vkDestroySemaphore") : instance.getProcAddr( "vkDestroySemaphore"));
44992 vkDestroyShaderModule = PFN_vkDestroyShaderModule(device ? device.getProcAddr( "vkDestroyShaderModule") : instance.getProcAddr( "vkDestroyShaderModule"));
44993 vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR(instance.getProcAddr( "vkDestroySurfaceKHR"));
44994 vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR(device ? device.getProcAddr( "vkDestroySwapchainKHR") : instance.getProcAddr( "vkDestroySwapchainKHR"));
44995 vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT(device ? device.getProcAddr( "vkDestroyValidationCacheEXT") : instance.getProcAddr( "vkDestroyValidationCacheEXT"));
44996 vkDeviceWaitIdle = PFN_vkDeviceWaitIdle(device ? device.getProcAddr( "vkDeviceWaitIdle") : instance.getProcAddr( "vkDeviceWaitIdle"));
44997 vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT(device ? device.getProcAddr( "vkDisplayPowerControlEXT") : instance.getProcAddr( "vkDisplayPowerControlEXT"));
44998 vkEndCommandBuffer = PFN_vkEndCommandBuffer(device ? device.getProcAddr( "vkEndCommandBuffer") : instance.getProcAddr( "vkEndCommandBuffer"));
44999 vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties(device ? device.getProcAddr( "vkEnumerateDeviceExtensionProperties") : instance.getProcAddr( "vkEnumerateDeviceExtensionProperties"));
45000 vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties(device ? device.getProcAddr( "vkEnumerateDeviceLayerProperties") : instance.getProcAddr( "vkEnumerateDeviceLayerProperties"));
45001 vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties(instance.getProcAddr( "vkEnumerateInstanceExtensionProperties"));
45002 vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties(instance.getProcAddr( "vkEnumerateInstanceLayerProperties"));
45003 vkEnumerateInstanceVersion = PFN_vkEnumerateInstanceVersion(instance.getProcAddr( "vkEnumerateInstanceVersion"));
45004 vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups(instance.getProcAddr( "vkEnumeratePhysicalDeviceGroups"));
45005 vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR(instance.getProcAddr( "vkEnumeratePhysicalDeviceGroupsKHR"));
45006 vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices(instance.getProcAddr( "vkEnumeratePhysicalDevices"));
45007 vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges(device ? device.getProcAddr( "vkFlushMappedMemoryRanges") : instance.getProcAddr( "vkFlushMappedMemoryRanges"));
45008 vkFreeCommandBuffers = PFN_vkFreeCommandBuffers(device ? device.getProcAddr( "vkFreeCommandBuffers") : instance.getProcAddr( "vkFreeCommandBuffers"));
45009 vkFreeDescriptorSets = PFN_vkFreeDescriptorSets(device ? device.getProcAddr( "vkFreeDescriptorSets") : instance.getProcAddr( "vkFreeDescriptorSets"));
45010 vkFreeMemory = PFN_vkFreeMemory(device ? device.getProcAddr( "vkFreeMemory") : instance.getProcAddr( "vkFreeMemory"));
45011#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
45012 vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID(device ? device.getProcAddr( "vkGetAndroidHardwareBufferPropertiesANDROID") : instance.getProcAddr( "vkGetAndroidHardwareBufferPropertiesANDROID"));
45013#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
45014 vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements(device ? device.getProcAddr( "vkGetBufferMemoryRequirements") : instance.getProcAddr( "vkGetBufferMemoryRequirements"));
45015 vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2(device ? device.getProcAddr( "vkGetBufferMemoryRequirements2") : instance.getProcAddr( "vkGetBufferMemoryRequirements2"));
45016 vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetBufferMemoryRequirements2KHR") : instance.getProcAddr( "vkGetBufferMemoryRequirements2KHR"));
45017 vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport(device ? device.getProcAddr( "vkGetDescriptorSetLayoutSupport") : instance.getProcAddr( "vkGetDescriptorSetLayoutSupport"));
45018 vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR(device ? device.getProcAddr( "vkGetDescriptorSetLayoutSupportKHR") : instance.getProcAddr( "vkGetDescriptorSetLayoutSupportKHR"));
45019 vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures(device ? device.getProcAddr( "vkGetDeviceGroupPeerMemoryFeatures") : instance.getProcAddr( "vkGetDeviceGroupPeerMemoryFeatures"));
45020 vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR(device ? device.getProcAddr( "vkGetDeviceGroupPeerMemoryFeaturesKHR") : instance.getProcAddr( "vkGetDeviceGroupPeerMemoryFeaturesKHR"));
45021 vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR(device ? device.getProcAddr( "vkGetDeviceGroupPresentCapabilitiesKHR") : instance.getProcAddr( "vkGetDeviceGroupPresentCapabilitiesKHR"));
45022 vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR(device ? device.getProcAddr( "vkGetDeviceGroupSurfacePresentModesKHR") : instance.getProcAddr( "vkGetDeviceGroupSurfacePresentModesKHR"));
45023 vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment(device ? device.getProcAddr( "vkGetDeviceMemoryCommitment") : instance.getProcAddr( "vkGetDeviceMemoryCommitment"));
45024 vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr(device ? device.getProcAddr( "vkGetDeviceProcAddr") : instance.getProcAddr( "vkGetDeviceProcAddr"));
45025 vkGetDeviceQueue = PFN_vkGetDeviceQueue(device ? device.getProcAddr( "vkGetDeviceQueue") : instance.getProcAddr( "vkGetDeviceQueue"));
45026 vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2(device ? device.getProcAddr( "vkGetDeviceQueue2") : instance.getProcAddr( "vkGetDeviceQueue2"));
45027 vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR(device ? device.getProcAddr( "vkGetDisplayModeProperties2KHR") : instance.getProcAddr( "vkGetDisplayModeProperties2KHR"));
45028 vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR(device ? device.getProcAddr( "vkGetDisplayModePropertiesKHR") : instance.getProcAddr( "vkGetDisplayModePropertiesKHR"));
45029 vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR(device ? device.getProcAddr( "vkGetDisplayPlaneCapabilities2KHR") : instance.getProcAddr( "vkGetDisplayPlaneCapabilities2KHR"));
45030 vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR(device ? device.getProcAddr( "vkGetDisplayPlaneCapabilitiesKHR") : instance.getProcAddr( "vkGetDisplayPlaneCapabilitiesKHR"));
45031 vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR(device ? device.getProcAddr( "vkGetDisplayPlaneSupportedDisplaysKHR") : instance.getProcAddr( "vkGetDisplayPlaneSupportedDisplaysKHR"));
45032 vkGetEventStatus = PFN_vkGetEventStatus(device ? device.getProcAddr( "vkGetEventStatus") : instance.getProcAddr( "vkGetEventStatus"));
45033 vkGetFenceFdKHR = PFN_vkGetFenceFdKHR(device ? device.getProcAddr( "vkGetFenceFdKHR") : instance.getProcAddr( "vkGetFenceFdKHR"));
45034 vkGetFenceStatus = PFN_vkGetFenceStatus(device ? device.getProcAddr( "vkGetFenceStatus") : instance.getProcAddr( "vkGetFenceStatus"));
45035#ifdef VK_USE_PLATFORM_WIN32_KHR
45036 vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR(device ? device.getProcAddr( "vkGetFenceWin32HandleKHR") : instance.getProcAddr( "vkGetFenceWin32HandleKHR"));
45037#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45038 vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements(device ? device.getProcAddr( "vkGetImageMemoryRequirements") : instance.getProcAddr( "vkGetImageMemoryRequirements"));
45039 vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2(device ? device.getProcAddr( "vkGetImageMemoryRequirements2") : instance.getProcAddr( "vkGetImageMemoryRequirements2"));
45040 vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetImageMemoryRequirements2KHR") : instance.getProcAddr( "vkGetImageMemoryRequirements2KHR"));
45041 vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements"));
45042 vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements2") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements2"));
45043 vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR(device ? device.getProcAddr( "vkGetImageSparseMemoryRequirements2KHR") : instance.getProcAddr( "vkGetImageSparseMemoryRequirements2KHR"));
45044 vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout(device ? device.getProcAddr( "vkGetImageSubresourceLayout") : instance.getProcAddr( "vkGetImageSubresourceLayout"));
45045 vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr(instance.getProcAddr( "vkGetInstanceProcAddr"));
45046#ifdef VK_USE_PLATFORM_ANDROID_ANDROID
45047 vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID(device ? device.getProcAddr( "vkGetMemoryAndroidHardwareBufferANDROID") : instance.getProcAddr( "vkGetMemoryAndroidHardwareBufferANDROID"));
45048#endif /*VK_USE_PLATFORM_ANDROID_ANDROID*/
45049 vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR(device ? device.getProcAddr( "vkGetMemoryFdKHR") : instance.getProcAddr( "vkGetMemoryFdKHR"));
45050 vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR(device ? device.getProcAddr( "vkGetMemoryFdPropertiesKHR") : instance.getProcAddr( "vkGetMemoryFdPropertiesKHR"));
45051 vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT(device ? device.getProcAddr( "vkGetMemoryHostPointerPropertiesEXT") : instance.getProcAddr( "vkGetMemoryHostPointerPropertiesEXT"));
45052#ifdef VK_USE_PLATFORM_WIN32_KHR
45053 vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR(device ? device.getProcAddr( "vkGetMemoryWin32HandleKHR") : instance.getProcAddr( "vkGetMemoryWin32HandleKHR"));
45054#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45055#ifdef VK_USE_PLATFORM_WIN32_NV
45056 vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV(device ? device.getProcAddr( "vkGetMemoryWin32HandleNV") : instance.getProcAddr( "vkGetMemoryWin32HandleNV"));
45057#endif /*VK_USE_PLATFORM_WIN32_NV*/
45058#ifdef VK_USE_PLATFORM_WIN32_KHR
45059 vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR(device ? device.getProcAddr( "vkGetMemoryWin32HandlePropertiesKHR") : instance.getProcAddr( "vkGetMemoryWin32HandlePropertiesKHR"));
45060#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45061 vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE(device ? device.getProcAddr( "vkGetPastPresentationTimingGOOGLE") : instance.getProcAddr( "vkGetPastPresentationTimingGOOGLE"));
45062 vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceDisplayPlaneProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"));
45063 vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceDisplayPlanePropertiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"));
45064 vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceDisplayProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceDisplayProperties2KHR"));
45065 vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceDisplayPropertiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceDisplayPropertiesKHR"));
45066 vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalBufferProperties") : instance.getProcAddr( "vkGetPhysicalDeviceExternalBufferProperties"));
45067 vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalBufferPropertiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceExternalBufferPropertiesKHR"));
45068 vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalFenceProperties") : instance.getProcAddr( "vkGetPhysicalDeviceExternalFenceProperties"));
45069 vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalFencePropertiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceExternalFencePropertiesKHR"));
45070 vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalImageFormatPropertiesNV") : instance.getProcAddr( "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"));
45071 vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalSemaphoreProperties") : instance.getProcAddr( "vkGetPhysicalDeviceExternalSemaphoreProperties"));
45072 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"));
45073 vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures(device ? device.getProcAddr( "vkGetPhysicalDeviceFeatures") : instance.getProcAddr( "vkGetPhysicalDeviceFeatures"));
45074 vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2(device ? device.getProcAddr( "vkGetPhysicalDeviceFeatures2") : instance.getProcAddr( "vkGetPhysicalDeviceFeatures2"));
45075 vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceFeatures2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceFeatures2KHR"));
45076 vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceFormatProperties") : instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties"));
45077 vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceFormatProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties2"));
45078 vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceFormatProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceFormatProperties2KHR"));
45079 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(device ? device.getProcAddr( "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX") : instance.getProcAddr( "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"));
45080 vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties") : instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties"));
45081 vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2"));
45082 vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceImageFormatProperties2KHR"));
45083 vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceMemoryProperties") : instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties"));
45084 vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2"));
45085 vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceMemoryProperties2KHR"));
45086#ifdef VK_USE_PLATFORM_MIR_KHR
45087 vkGetPhysicalDeviceMirPresentationSupportKHR = PFN_vkGetPhysicalDeviceMirPresentationSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceMirPresentationSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceMirPresentationSupportKHR"));
45088#endif /*VK_USE_PLATFORM_MIR_KHR*/
45089 vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT(device ? device.getProcAddr( "vkGetPhysicalDeviceMultisamplePropertiesEXT") : instance.getProcAddr( "vkGetPhysicalDeviceMultisamplePropertiesEXT"));
45090 vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR(device ? device.getProcAddr( "vkGetPhysicalDevicePresentRectanglesKHR") : instance.getProcAddr( "vkGetPhysicalDevicePresentRectanglesKHR"));
45091 vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceProperties") : instance.getProcAddr( "vkGetPhysicalDeviceProperties"));
45092 vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceProperties2"));
45093 vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceProperties2KHR"));
45094 vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties") : instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties"));
45095 vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2"));
45096 vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceQueueFamilyProperties2KHR"));
45097 vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties(device ? device.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties") : instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties"));
45098 vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2(device ? device.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2") : instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2"));
45099 vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"));
45100 vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2EXT") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2EXT"));
45101 vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilities2KHR"));
45102 vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilitiesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
45103 vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceFormats2KHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceFormats2KHR"));
45104 vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceFormatsKHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceFormatsKHR"));
45105 vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfacePresentModesKHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfacePresentModesKHR"));
45106 vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceSurfaceSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceSurfaceSupportKHR"));
45107#ifdef VK_USE_PLATFORM_WAYLAND_KHR
45108 vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceWaylandPresentationSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceWaylandPresentationSupportKHR"));
45109#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
45110#ifdef VK_USE_PLATFORM_WIN32_KHR
45111 vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceWin32PresentationSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceWin32PresentationSupportKHR"));
45112#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45113#ifdef VK_USE_PLATFORM_XCB_KHR
45114 vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceXcbPresentationSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceXcbPresentationSupportKHR"));
45115#endif /*VK_USE_PLATFORM_XCB_KHR*/
45116#ifdef VK_USE_PLATFORM_XLIB_KHR
45117 vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR(device ? device.getProcAddr( "vkGetPhysicalDeviceXlibPresentationSupportKHR") : instance.getProcAddr( "vkGetPhysicalDeviceXlibPresentationSupportKHR"));
45118#endif /*VK_USE_PLATFORM_XLIB_KHR*/
45119 vkGetPipelineCacheData = PFN_vkGetPipelineCacheData(device ? device.getProcAddr( "vkGetPipelineCacheData") : instance.getProcAddr( "vkGetPipelineCacheData"));
45120 vkGetQueryPoolResults = PFN_vkGetQueryPoolResults(device ? device.getProcAddr( "vkGetQueryPoolResults") : instance.getProcAddr( "vkGetQueryPoolResults"));
45121 vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV(device ? device.getProcAddr( "vkGetQueueCheckpointDataNV") : instance.getProcAddr( "vkGetQueueCheckpointDataNV"));
45122#ifdef VK_USE_PLATFORM_XLIB_XRANDR_NV
45123 vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT(device ? device.getProcAddr( "vkGetRandROutputDisplayEXT") : instance.getProcAddr( "vkGetRandROutputDisplayEXT"));
45124#endif /*VK_USE_PLATFORM_XLIB_XRANDR_NV*/
45125 vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE(device ? device.getProcAddr( "vkGetRefreshCycleDurationGOOGLE") : instance.getProcAddr( "vkGetRefreshCycleDurationGOOGLE"));
45126 vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity(device ? device.getProcAddr( "vkGetRenderAreaGranularity") : instance.getProcAddr( "vkGetRenderAreaGranularity"));
45127 vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR(device ? device.getProcAddr( "vkGetSemaphoreFdKHR") : instance.getProcAddr( "vkGetSemaphoreFdKHR"));
45128#ifdef VK_USE_PLATFORM_WIN32_KHR
45129 vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR(device ? device.getProcAddr( "vkGetSemaphoreWin32HandleKHR") : instance.getProcAddr( "vkGetSemaphoreWin32HandleKHR"));
45130#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45131 vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD(device ? device.getProcAddr( "vkGetShaderInfoAMD") : instance.getProcAddr( "vkGetShaderInfoAMD"));
45132 vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT(device ? device.getProcAddr( "vkGetSwapchainCounterEXT") : instance.getProcAddr( "vkGetSwapchainCounterEXT"));
45133 vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR(device ? device.getProcAddr( "vkGetSwapchainImagesKHR") : instance.getProcAddr( "vkGetSwapchainImagesKHR"));
45134 vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR(device ? device.getProcAddr( "vkGetSwapchainStatusKHR") : instance.getProcAddr( "vkGetSwapchainStatusKHR"));
45135 vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT(device ? device.getProcAddr( "vkGetValidationCacheDataEXT") : instance.getProcAddr( "vkGetValidationCacheDataEXT"));
45136 vkImportFenceFdKHR = PFN_vkImportFenceFdKHR(device ? device.getProcAddr( "vkImportFenceFdKHR") : instance.getProcAddr( "vkImportFenceFdKHR"));
45137#ifdef VK_USE_PLATFORM_WIN32_KHR
45138 vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR(device ? device.getProcAddr( "vkImportFenceWin32HandleKHR") : instance.getProcAddr( "vkImportFenceWin32HandleKHR"));
45139#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45140 vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR(device ? device.getProcAddr( "vkImportSemaphoreFdKHR") : instance.getProcAddr( "vkImportSemaphoreFdKHR"));
45141#ifdef VK_USE_PLATFORM_WIN32_KHR
45142 vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR(device ? device.getProcAddr( "vkImportSemaphoreWin32HandleKHR") : instance.getProcAddr( "vkImportSemaphoreWin32HandleKHR"));
45143#endif /*VK_USE_PLATFORM_WIN32_KHR*/
45144 vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges(device ? device.getProcAddr( "vkInvalidateMappedMemoryRanges") : instance.getProcAddr( "vkInvalidateMappedMemoryRanges"));
45145 vkMapMemory = PFN_vkMapMemory(device ? device.getProcAddr( "vkMapMemory") : instance.getProcAddr( "vkMapMemory"));
45146 vkMergePipelineCaches = PFN_vkMergePipelineCaches(device ? device.getProcAddr( "vkMergePipelineCaches") : instance.getProcAddr( "vkMergePipelineCaches"));
45147 vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT(device ? device.getProcAddr( "vkMergeValidationCachesEXT") : instance.getProcAddr( "vkMergeValidationCachesEXT"));
45148 vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueBeginDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueBeginDebugUtilsLabelEXT"));
45149 vkQueueBindSparse = PFN_vkQueueBindSparse(device ? device.getProcAddr( "vkQueueBindSparse") : instance.getProcAddr( "vkQueueBindSparse"));
45150 vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueEndDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueEndDebugUtilsLabelEXT"));
45151 vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT(device ? device.getProcAddr( "vkQueueInsertDebugUtilsLabelEXT") : instance.getProcAddr( "vkQueueInsertDebugUtilsLabelEXT"));
45152 vkQueuePresentKHR = PFN_vkQueuePresentKHR(device ? device.getProcAddr( "vkQueuePresentKHR") : instance.getProcAddr( "vkQueuePresentKHR"));
45153 vkQueueSubmit = PFN_vkQueueSubmit(device ? device.getProcAddr( "vkQueueSubmit") : instance.getProcAddr( "vkQueueSubmit"));
45154 vkQueueWaitIdle = PFN_vkQueueWaitIdle(device ? device.getProcAddr( "vkQueueWaitIdle") : instance.getProcAddr( "vkQueueWaitIdle"));
45155 vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT(device ? device.getProcAddr( "vkRegisterDeviceEventEXT") : instance.getProcAddr( "vkRegisterDeviceEventEXT"));
45156 vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT(device ? device.getProcAddr( "vkRegisterDisplayEventEXT") : instance.getProcAddr( "vkRegisterDisplayEventEXT"));
45157 vkRegisterObjectsNVX = PFN_vkRegisterObjectsNVX(device ? device.getProcAddr( "vkRegisterObjectsNVX") : instance.getProcAddr( "vkRegisterObjectsNVX"));
45158 vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT(device ? device.getProcAddr( "vkReleaseDisplayEXT") : instance.getProcAddr( "vkReleaseDisplayEXT"));
45159 vkResetCommandBuffer = PFN_vkResetCommandBuffer(device ? device.getProcAddr( "vkResetCommandBuffer") : instance.getProcAddr( "vkResetCommandBuffer"));
45160 vkResetCommandPool = PFN_vkResetCommandPool(device ? device.getProcAddr( "vkResetCommandPool") : instance.getProcAddr( "vkResetCommandPool"));
45161 vkResetDescriptorPool = PFN_vkResetDescriptorPool(device ? device.getProcAddr( "vkResetDescriptorPool") : instance.getProcAddr( "vkResetDescriptorPool"));
45162 vkResetEvent = PFN_vkResetEvent(device ? device.getProcAddr( "vkResetEvent") : instance.getProcAddr( "vkResetEvent"));
45163 vkResetFences = PFN_vkResetFences(device ? device.getProcAddr( "vkResetFences") : instance.getProcAddr( "vkResetFences"));
45164 vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT(device ? device.getProcAddr( "vkSetDebugUtilsObjectNameEXT") : instance.getProcAddr( "vkSetDebugUtilsObjectNameEXT"));
45165 vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT(device ? device.getProcAddr( "vkSetDebugUtilsObjectTagEXT") : instance.getProcAddr( "vkSetDebugUtilsObjectTagEXT"));
45166 vkSetEvent = PFN_vkSetEvent(device ? device.getProcAddr( "vkSetEvent") : instance.getProcAddr( "vkSetEvent"));
45167 vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT(device ? device.getProcAddr( "vkSetHdrMetadataEXT") : instance.getProcAddr( "vkSetHdrMetadataEXT"));
45168 vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT(instance.getProcAddr( "vkSubmitDebugUtilsMessageEXT"));
45169 vkTrimCommandPool = PFN_vkTrimCommandPool(device ? device.getProcAddr( "vkTrimCommandPool") : instance.getProcAddr( "vkTrimCommandPool"));
45170 vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR(device ? device.getProcAddr( "vkTrimCommandPoolKHR") : instance.getProcAddr( "vkTrimCommandPoolKHR"));
45171 vkUnmapMemory = PFN_vkUnmapMemory(device ? device.getProcAddr( "vkUnmapMemory") : instance.getProcAddr( "vkUnmapMemory"));
45172 vkUnregisterObjectsNVX = PFN_vkUnregisterObjectsNVX(device ? device.getProcAddr( "vkUnregisterObjectsNVX") : instance.getProcAddr( "vkUnregisterObjectsNVX"));
45173 vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate(device ? device.getProcAddr( "vkUpdateDescriptorSetWithTemplate") : instance.getProcAddr( "vkUpdateDescriptorSetWithTemplate"));
45174 vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR(device ? device.getProcAddr( "vkUpdateDescriptorSetWithTemplateKHR") : instance.getProcAddr( "vkUpdateDescriptorSetWithTemplateKHR"));
45175 vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets(device ? device.getProcAddr( "vkUpdateDescriptorSets") : instance.getProcAddr( "vkUpdateDescriptorSets"));
45176 vkWaitForFences = PFN_vkWaitForFences(device ? device.getProcAddr( "vkWaitForFences") : instance.getProcAddr( "vkWaitForFences"));
45177 }
45178 };
45179} // namespace VULKAN_HPP_NAMESPACE
45180
45181#endif